プロが教える店舗&オフィスのセキュリティ対策術

エクセルについてですが、検索関数を用いて検索した結果が複数ある場合で、その結果を順番に複数のセルに表示させる方法はありますか。

シート1
01 1000
01 1001
01 1024
02 1002
02 1003
02 1004
02 1033

と打ち込んであるものを

シート2
01 02
1000 1002
1001 1003
1024 1004
1033

というような感じで表示させたいです。
教えてください。

A 回答 (3件)

後で見て分かり易いのは、シート1の左端に列を挿入し、


=B1&"-"&COUNTIF(B$1:B1,B1)
とA1に入力します。
(データは1行目からあるとし、A1は新しく挿入された列で、B1にもとの01や02があります。)
A1をコピーして、データの数だけA列のセルに貼り付けます。
今回の例ですと、上から順に
01-1
01-2
01-3
02-1
02-2
02-3
02-4
となります。

シート2には、A1に01、B1に02と入力するものとして、
=VLOOKUP(A$1&"-"&ROW()-1,シート1!$A:$C,3,FALSE)
とA2に入力します。
これを検索結果を表示する範囲にコピーすれば、
その列の1行目にあるデータに、-と、そのセルの行番号から1を引いた値を並べたものに一致するセルを、
シート1のA列から検索し、該当する行の3番目=C列のデータを表示します。
A2であれば01と-と2-1=1を並べて、01-1を検索し、1行目でヒットするので、C1の1000を表示する。
という具合です。

一致しない(該当データが無い)とエラー表示となるので、それを回避したければ、A2を
=IF(COUNTIF(シート1!$B:$B,A$1)<ROW()-1,"",VLOOKUP(A$1&"-"&ROW()-1,シート1!$A:$C,3,FALSE))
と変更させれば、1行目のデータと一致するものが、そのセルの行番号-1個よりも少ない場合は空白になるので、エラー表示はなくなります。

検索させるデータを表示させる列を作ることで、後で見て分かり易く、修正が必要な場合も確認し易いと思われます。
表示が邪魔でしたら列ごと非表示にすれば問題ありませんしね。
    • good
    • 1
この回答へのお礼

助かりました

回答ありがとうございます!
参考にさせて頂きます!

お礼日時:2017/03/06 16:48

こんばんは!



一例です。
元データはSheet1にあり、Sheet2に表示するとします。
Sheet1のA列も抽出するようにしてみました。

↓の画像のように作業用の列を設けます。
作業列C2セルに
=IF(COUNTIF(A$2:A2,A2)=1,ROW(),"")

という数式を入れフィルハンドルでこれ以上データはない!というくらいまで下へコピーしておきます。

Sheet2のA1セルに
=IFERROR(INDEX(Sheet1!$A:$A,SMALL(Sheet1!$C:$C,COLUMN(A1))),"")

という数式を入れフィルハンドルで右へコピー!
A2セルに
=IF(A$1="","",IFERROR(INDEX(Sheet1!$B$1:$B$1000,SMALL(IF(Sheet1!$A$1:$A$1000=A$1,ROW($A$1:$A$1000)),ROW(A1))),""))

配列数式ですので、Ctrl+Shift+Enterで確定!
A2セルのフィルハンドルで右へ・下へコピーすると
画像のような感じになります。

※ セルの表示形式は合わせてください。m(_ _)m
「エクセルについて質問させてください。」の回答画像2
    • good
    • 1

添付図参照


Sheet2!A2: =IFERROR(INDEX(Sheet1!$B$1:$B$7,SMALL(IF(Sheet1!$A$1:$A$7=A$1,ROW(Sheet1!A$1:A$7),""),ROW(A1))),"")
【お断り】上式は必ず配列数式として入力のこと
「エクセルについて質問させてください。」の回答画像1
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!