2017-11-02 6 views
0

同じワークブックに2枚のExcelシートがあります。 一つは、カードの取引情報が含まれてSheet1のような他のExcelシートから完全なカード番号を照会

Transaction Date Card Number Amount (To be fill) Owner Information 
11/01/2017  5678  $39.99 - 
11/02/2017  1234  $39.99 - 

他には、カードの情報が含まれて

Create Date  Card Number Owner Information 
10/01/2017   5678   [email protected] 
10/01/2017   1234   [email protected] 
10/01/2017   2345   [email protected] 

は私がに一致する行へのSheet2から所有者情報をコピーするための高速/バッチ方法をしたいSheet2のようにシート1。

今、私は手動でSheet2のカード番号を検索し、Sheet1に貼り付けをコピーします。しかし、どのように私は自動的にまたはバッチ検索とこれを達成することができますか?

(PS。私はT-SQLバックグラウンドを持っていますが、ADOはパラメータとして列を取っていません) そして私はMACでExcel 2011を使用しています。

+2

Vlookup機能が最も簡単です。 – serakfalcon

+0

「MACはMACを持っていませんが、これはばかげているようです」 –

答えて

0

コレクションを使用して、複数のリスト間で一意の値を参照します。

注:通常、このタスクにはScripting.Dictionaryが使用されていますが、Macで使用できるとは思われません。だから私は標準のVBAコレクションを使用しました。

Sub Batch_Owner_Information() 
    Application.ScreenUpdating = False 
    Dim c As New Collection 
    Dim cell As Range, rInfo As Range 

    With ThisWorkbook.Worksheets("Sheet2") 
     For Each cell In .Range("B2", .Range("B" & .Columns.Count).End(xlUp)) 
      On Error Resume Next 
      c.Add cell, cell.Text 
      On Error GoTo 0 
     Next 
    End With 

    With ThisWorkbook.Worksheets("Sheet1") 
     For Each cell In .Range("B2", .Range("B" & .Columns.Count).End(xlUp)) 
      On Error Resume Next 
      Set rInfo = c(cell.Text) 
      If Err.Number = 0 Then 
       cell.Offset(0, 2).Value = rInfo.Offset(0, 1).Value 
      End If 
      On Error GoTo 0 
     Next 
    End With 

    Application.ScreenUpdating = True 
End Sub 
+0

ありがとうございました! –

関連する問題