2017-09-21 3 views
2

Excel VBAでインデックス一致式を使用して、データベースが不足しているツールの部品番号と説明を探しました。これは、条件付きの索引 - 一致式でした。特定の配列のマッチをマシンのツールタイプのために検索し、それを特定の配列の構成にマッチさせるよりも。Excel - インデックスマッチ式をVBAアクションに変更する

私の問題は、式で特定の範囲を書いているので、データベースに新しい行を追加するとコードを変更する必要がないように柔軟にしたいからです。データベースはテーブル名「Illuminators」である。

これは私が前に使用した条件で、セル参照があることがわかっているので、配列の下のdatabseテーブルに新しいツールを追加すると、そこを探しませんでした。

enter image description here

enter image description here

私は感謝されるであろう:私は、ループ内の主シートに式を使用し、私は2番目のピクチャでdatabseワークシートから使用

Selection.FormulaArray = "=INDEX(DB!R2C1:R21C7,MATCH(1,(DB_Illumiators!R2C1:R21C1=RC[1])*(DB_Illumiators!R2C2:R21C2=RC[2]),0),4)" 

助けてくれる人へ

ラファエル

+2

変更は 'R2C1:R21C7'に' C1:C7'か、列全体を検索したくない場合は(遅くなる場合があります)あなたはデータを越えて行くことはありません知っていることは非常に大きなものに変更(例: - 'R2C1:R5000C7' –

答えて

5

変更R21C7,R21C1およびR21C2からINDEX(DB!C7, MATCH("zzz", DB!C1)),INDEX(DB!C1, MATCH("zzz", DB!C1))およびINDEX(DB!C2, MATCH("zzz", DB!C1))。これらは、DB!A:Aの最後のテキストval; ueに応じて、終了セルを動的に調整します。

Selection.FormulaArray = _ 
    "=INDEX(DB!R2C1:INDEX(DB!C7, MATCH(""zzz"", DB!C1)), MATCH(1, (DB_Illumiators!R2C1:INDEX(DB!C1, MATCH(""zzz"", DB!C1))=RC[1])*(DB_Illumiators!R2C2:INDEX(DB!C2, MATCH(""zzz"", DB!C1))=RC[2]), 0), 4)" 
関連する問題