2016-05-27 12 views
0

私はかなりの検索を行っており、この特定のケースの回答は見つかりませんでした。VBA評価インデックス一致

私のデータセットは〜650k行ですので、できるだけ早くコードを作成しようとしています。 私がしようとしているのは、VBAにインデックスを付けて列全体を別のシートに一致させることです。

これまでのところ、私のコードはVBです:

LastRow = Cells(Rows.Count, "A").End(xlUp).Row 
Range("Q2:Q" & LastRow).Value = Evaluate("INDEX(MATCH(C2:C" & LastRow & ",'CC Map'!A:A,0),0)") 

これは非常に迅速にシートに列Cを比較して 'CCマップ' A:!A;そして私は「CCマップ」から対応する値を返すようにしたい、しかし、列Q. に価値を置くB:!B

私は VBを使用する場合:

LastRow = Cells(Rows.Count, "A").End(xlUp).Row 
Range("Q2:Q" & LastRow).Value = Evaluate("INDEX('CC Map'!B:B,MATCH(C2:C" & LastRow & ",'CC Map'!A:A,0))") 

それは同じすべての値を返します。 (一致するC2に対応する)

問題は、配列がINDEXの2番目の引数としてあると思いますが、ループを回避しようとしています。 私の瞬間はほとんど瞬時に走っています。

答えて

0

戻り値がテキストであれば、あなたが使用できます。数値については

Range("Q2:Q" & LastRow).Value = Evaluate("INDEX(IF(1,T(OFFSET('CC Map'!B1,MATCH(C2:C" & LastRow & ",'CC Map'!A:A,0)-1,0))),)") 

、素晴らしい仕事N.

+0

とTを交換するには、3.882秒で653k行の上にそれを実行しました。このコードで改善できる点はほとんどありません。本当に感謝。 – ikari47