2016-08-16 14 views
0

私は開発中のファイルを減らす必要があります.VBAを使用していることを知っています。残念ながら私はVBAでまだ進んでいないし、私はこれを設計するのに苦労している。 私は、3つの異なるストリームで組織定価を持っている、と私は以下のように一つにまとめたい:IFとVlookupを組み合わせたVBAに大量のコードをコーディング

Stream  Site   Brand Code Price 
Mainstream Boston  Brand 01  Formula 
Midstream New York  Brand 02 
Midstream Los Angeles Brand 02 

現在、私は基本的に以下のことを行い式を使用しています:

=IF(AND(stream="mainstream",Site = "Boston"),vlookup(Brandcode,list 1, 2,0),IF(ANd(stream="midstream", Site = "Boston", vlookup(Brandcode,list 2, 2,0),...)) 

式実際には問題なく動作しますが、問題は他の多くの条件をテストしているため、ファイルが非常に重くなっているため、VBAコードを作成して関数またはサブルーチンのいずれかを作成したかったのですが、どうやってするの。

おかげ

答えて

1

これは実際には代わりに名前付き範囲を使用してVBAを使用することなく達成することができます。数式を見ると、検索範囲はstreamsiteの組み合わせによって異なることは明らかです。

これらの参照範囲ごとにNamed Rangeを作成できます。これを行うには、最初のルックアップグループを含むセルの範囲を強調表示します(Midstream New Yorkとしましょう)。次に、Ctrl + F3キーを押してName Managerを開きます。最後に、このグループにMidstreamNewYorkという名前を付けます。 (注:名前にスペースを入れることはできません)。

次に、Vlookup機能を更新することができます。ルックアップが動的になるため、IF(AND...コンポーネントを含める必要がなくなりました。たとえば、2行目の式を入力すると、式は次のようになります。

=VLOOKUP(C2,INDIRECT(SUBSTITUTE(A2&B2, " ", "")),2,FALSE) 

この式を分解しましょう。 ?(1)C2は、私はそれが列C. (2) The間接function treats a文字列as a範囲. We are passing in Cells A2 and B2 , which are "Midstream" and "New York", respectively. We use the SUBSTITUTE function to remove the spaces since they aren't allowed. So now, we are looking up a named range called MidstreamNewYork`(聞き覚え)にあったと仮定(ちょうどbrandcodeである(3)VLOOKUPの残りの部分は標準です。検索

あなたの要件を満たしているかどうか試してみてください。

関連する問題