• ベストアンサー

エクセルのデータ抽出関数について

表1のB3列にNO,C3列に社員コード、D3列に氏名、E3列に形の項目がありそれぞれデータを入れてあります。 B3のNOには同じ番号が3つありC、D、E列の内容はそれぞれ違うデータです。 表2にNOの同一数値を縦に3個並べたら、表1の同一NOのデータを上から順に並べて抽出する方法を教えてください。 サンプル表を添付します。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.3

表2にNOの同一数値を縦に3個並べた場合に表示するとした場合は H4に =IF(AND($G$4=$G$5,$G$5=$G$6),IFERROR(VLOOKUP($G$4,INDIRECT("B" & MATCH($G$4,$B:$B,0)+ROW(A1)-1 & ":E100"),COLUMN(B1),FALSE),""),"") として右と下にコピーしてみてください。 データは100行目でと考えてます。 より多い場合はE100を変更してください。 表2のG4に入力すると自動で同じ値が下に2個表示されて表2全体のデータを表示するとした場合は G5に =IF(G4<>"",G4,"") としてG6までコピーして H4に =IFERROR(VLOOKUP($G$4,INDIRECT("B" & MATCH($G$4,$B:$B,0)+ROW(A1)-1 & ":E100"),COLUMN(B1),FALSE),"") として右と下にコピーしてみてください。

JANIKYA
質問者

お礼

ありがとうございました。 早速、試した見たところうまくいきました。

Powered by GRATICA

その他の回答 (3)

  • NuboChan
  • ベストアンサー率47% (785/1650)
回答No.4

No.2の回答での抜け落ちと   取り敢えず、VBAでの回答です。   H2に指定するNOを手動で入力してマクロを実行してください 修正です。   ws.Range("G4:J1000").ClearContents '要、適宜修正

  • NuboChan
  • ベストアンサー率47% (785/1650)
回答No.2

Sub Temp() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") Dim searchNo As Variant searchNo = ws.Range("H2").Value If IsEmpty(searchNo) Then MsgBox "Please enter a NO in cell H2.", vbExclamation Exit Sub End If Dim dataRange As Range Set dataRange = ws.Range("B3:E" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row) Dim foundCell As Range Dim outputRow As Long outputRow = 4 ws.Range("G4:J1000").ClearContents 要、適宜修正 For Each foundCell In dataRange.Columns(1).Cells If foundCell.Value = searchNo Then ws.Cells(outputRow, "G").Value = foundCell.Value ws.Cells(outputRow, "H").Value = foundCell.Offset(0, 1).Value ws.Cells(outputRow, "I").Value = foundCell.Offset(0, 2).Value ws.Cells(outputRow, "J").Value = foundCell.Offset(0, 3).Value outputRow = outputRow + 1 End If Next foundCell If outputRow = 4 Then MsgBox "指定のNO " & searchNo & " は、存在しません。", vbInformation End If End Sub

  • mnymnymny
  • ベストアンサー率24% (36/147)
回答No.1

なぜ3個そろった時だけ抽出するのでしょうか。それだと関数では無理で、VBAが必要になります。

関連するQ&A