>分類する値は、都度変更されておりマスター化する事ができません。
>(何が入ってくるか不明)
という事は、元データである左の表において項目が入力されている列の数こそ4列であるものの、入力されている「AAA」や「BBB」などといった項目名の種類自体は4種類しかないとは限らず、下の添付画像の例の様に5種類以上の項目名が入力されている事もあり得るのでしょうか?
取り敢えずその様な場合にも対応可能な方法を回答致します。
今仮に、左表が存在しているシートのシート名がSheet1であり、その中で「列1」と入力されているセルがA1セルであるものとします。
又、右表が存在しているシートのシート名がSheet2であり、その中で「列1」と入力されているセルがA1セルであるものとします。
又、Sheet3のA列~D列を作業列として使用するものとします。
まず、Sheet3のA2セルに次の関数を入力して下さい。
=IF(INDEX(Sheet1!$B:$E,ROW(),COLUMNS($A:A))="","",IF(COUNTIF(Sheet1!$B$1:INDEX(Sheet1!$E:$E,ROW()-1),INDEX(Sheet1!$B:$E,ROW(),COLUMNS($A:A)))+COUNTIF(INDEX(Sheet1!$B:$B,ROW()):INDEX(Sheet1!$B:$E,ROW(),COLUMNS($A:A)),INDEX(Sheet1!$B:$E,ROW(),COLUMNS($A:A)))=1,ROW()*10+COLUMNS(Sheet1!$B:B),""))
次に、Sheet3のA2セルをコピーして、Sheet3のB2~D2のセル範囲に貼り付けて下さい。
次に、Sheet3のA2~D2のセル範囲をコピーして、Sheet3のA列~D列の3行目以下に貼り付けて下さい。
次に、Sheet2のA2セルに次の関数を入力して下さい。
=IF(INDEX(Sheet1!$A:$A,ROW())="","",INDEX(Sheet1!$A:$A,ROW()))
次に、Sheet2のB1セルに次の関数を入力して下さい。
=IF(COLUMNS($B:B)>COUNT(Sheet3!$A:$D),"",INDEX(Sheet1!$B:$E,INT(SMALL(Sheet3!$A:$D,COLUMNS($B:B))/10),MOD(SMALL(Sheet3!$A:$D,COLUMNS($B:B)),10)))
次に、Sheet2のB2セルに次の関数を入力して下さい。
=IF(COUNTIF(INDEX(Sheet1!$B:$E,ROW(),),B$1),B$1,"")
次に、Sheet2のB1~B2のセル範囲をコピーして、Sheet2の1行目~2行目においてB列よりも右側にあるセル範囲に貼り付けて下さい。
次に、Sheet2の2行目全体をコピーして、Sheet2の3行目以下に貼り付けて下さい。
以上です。
お礼
できました!有難うございます。 シンプル且つ分かりやすいロジックの為、直ぐに別担当者とも共有化できました。 また、将来的には「kagakusuki 様」のロジックにチャレンジをして あらゆる場合に対応する台帳にするつもりです♪