- ベストアンサー
Excelで複数のデータベースから一致結果を取得する方法
- Excelで複数のデータベースから一致した結果を取得する方法を教えてください。
- VLOOKUP関数を使えない場合や、重複データが多い場合でも効率的に一致結果を取得する方法を教えてください。
- オートフィルを使って複数の行に対応する方法も教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 関数での方法は回答済みなので、VBAでの一例です。 標準モジュールに↓のコードをコピー&ペーストしてマクロを実行してみてください。 Sub Sample1() 'この行から Dim i As Long, lastRow1 As Long, lastRow2 As Long Dim c As Range, wS As Worksheet Set wS = Worksheets("Sheet2") Application.ScreenUpdating = False lastRow2 = wS.Cells(Rows.Count, "J").End(xlUp).Row If lastRow2 > 1 Then Range(wS.Cells(2, "Y"), wS.Cells(lastRow2, "Z")).ClearContents End If wS.Range("A:A").Insert With Range(wS.Cells(2, "A"), wS.Cells(lastRow2, "A")) .Formula = "=K2&""_""&Q2&""_""&T2" .Value = .Value End With With Worksheets("Sheet1") lastRow1 = .Cells(Rows.Count, "B").End(xlUp).Row .Range("A:A").Insert With Range(.Cells(2, "A"), .Cells(lastRow1, "A")) .Formula = "=C2&""_""&L2&""_""&T2" .Value = .Value End With For i = 2 To lastRow2 Set c = .Range("A:A").Find(what:=wS.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole) If c Is Nothing Then wS.Cells(i, "Z") = "×" Else wS.Cells(i, "Z") = "○" wS.Cells(i, "AA") = .Cells(c.Row, "Y") End If Next i .Range("A:A").Delete wS.Range("A:A").Delete End With Application.ScreenUpdating = True End Sub 'この行まで ※ 関数でないので、データ変更があるたびにマクロを実行する必要があります。 ※ 作業列を使用し関数でやる方法をコードにしただけです。m(_ _)m
その他の回答 (2)
- MackyNo1
- ベストアンサー率53% (1521/2850)
以下の数式を入力して下方向にオートフィルしてください。 Y2セル IF(COUNTIFS(Sheet1!B:B,J2,Sheet1!K:K,P2,Sheet1!S:S,S2),"○","×") Z2セル =IF(Y2="○",INDEX(Sheet1!$X$2:$X$1000,MATCH(J2&P2&S2,INDEX(Sheet1!$B$2:$B$1000&Sheet1!$K$2:$K$100&Sheet1!$S$2:$S$1000,),0)),"")
お礼
ありがとうございます! 本当に助かりました。
- keithin
- ベストアンサー率66% (5278/7941)
Y2に =IF(COUNTIFS(Sheet1!B:B,J2,Sheet1!K:K,P2,Sheet1!S:S,S2),"○","×") 以下コピー とかで。
お礼
ありがとうございます! 助かりました。
お礼
ありがとうございます! 本当に助かりました。