作業列と関数を併用する方法と、関数のみで行えるが、計算処理の負担が大きい(結果が表示されるまでに、少し時間がかかる)方法があります。
今仮に、抽出するデータを指定するために、Sheet2のB1セルに、例えば
キッチン
と入力すると、Sheet2のB2以下や、Sheet2のA列、C列、D列の表示が自動的に行われるものとします。
【作業列と関数を併用する方法】
まず、適当な列(例えばSheet3のA列)を作業列として使用する事を決めます。
次に、Sheet3のA1セルに、次の数式を入力して下さい。
=IF(Sheet1!$B1="","",Sheet1!$B1&COUNTIF(Sheet1!$B$1:$B1,Sheet1!$B1))
次に、Sheet3のA1セルをコピーして、Sheet3のA2以下に(Sheet1の元データの表の行番号を上回るのに充分な行数となるまで)貼り付けて下さい。
次に、Sheet2のB2セルに次の数式を入力して下さい。
=IF(ROWS($1:2)>COUNTIF(Sheet1!$B:$B,B$1),"",B$1)
次に、Sheet2のA1セルに次の数式を入力して下さい。
=IF(ROWS($1:1)>COUNTIF(Sheet1!$B:$B,$B$1),"",INDEX(Sheet1!A:A,MATCH($B$1&ROWS($1:1),Sheet3!$A:$A,0)))
次に、Sheet2のA1セルをコピーして、Sheet2のA2セルとSheet2のC1~D2の範囲に貼り付けて下さい。
次に、Sheet2のA2~D2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。
以上で準備は完了で、後はSheet2のB1セルに、抽出の基準となる検索値を入力すると、抽出結果が表示されます。
【関数のみで行う方法】
まず、Sheet2のB2セルに、【作業列と関数を併用する方法】で入力した数式と全く同じ、次の数式を入力して下さい。
=IF(ROWS($1:2)>COUNTIF(Sheet1!$B:$B,B$1),"",B$1)
次に、Sheet2のA1セルに次の数式を入力して下さい。
=IF(ROWS($1:1)>COUNTIF(Sheet1!$B:$B,$B$1),"",INDEX(Sheet1!A:A,SUMPRODUCT(ROW(Sheet1!$B$1:INDEX(Sheet1!$B:$B,MATCH("゛",Sheet1!$B:$B,-1)))*(Sheet1!$B$1:INDEX(Sheet1!$B:$B,MATCH("゛",Sheet1!$B:$B,-1))=$B$1)*(COUNTIF(OFFSET(Sheet1!$B$1,,,ROW(Sheet1!$B$1:INDEX(Sheet1!$B:$B,MATCH("゛",Sheet1!$B:$B,-1)))-ROW(Sheet1!$B$1)+1),$B$1)=ROWS($1:1)))))
次に、Sheet2のA1セルをコピーして、Sheet2のA2セルとSheet2のC1~D2の範囲に貼り付けて下さい。
次に、Sheet2のA2~D2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。
以上で準備は完了で、後はSheet2のB1セルに、抽出の基準となる検索値を入力すると、抽出結果が表示されます。
お礼
すごく丁寧に教えていただいて、ありがとうございます! おかげで上手く作れました(^v^)♪