質問: エクセルでくじけています。あれこれと3時間ほど試しましたが、自力では無理と判断しましたので詳しい方、お力をお借しください。 以下のように、A~B列の4行目まで次のような文字列があるとします。 最初にA1の文字列(アイテム)をD1に表示し、B1に文字列(カラーバリエーション)があればその単語の数だけE2から順に表示させていきます。B1の単語を全て表示したら次はA2、A3、A4、と同じこをしていきます。 <データ> []は空白 A1 [ハンドバッグ]、B1 [White, Black, Gray, Brown] A2 [ショルダーバッグ]、B2 [White, Black, Gray] A3 [クーポン]、B3 [] A4 [ベルト]、B4 [White] <結果> []は空白 D1 [ハンドバッグ]、E1 [] D2 []、E2 [White] D3 []、E3 [Black] D4 []、E4 [Gray] D5 []、E5 [Brown] D6 [ショルダーバッグ]、E6 [] D7 []、E7 [White] D8 []、E8 [Black] D9 []、E9 [Gray] D10 [クーポン]、E10 [] D11 [ベルト]、E11 [] D12 []、E12 [White] 上記"結果"のように表示させるにはどのような計算式を作ればよいのでしょうか? エクセルが得意な方、どうぞ宜しくお願いします。
回答: エクセルにはSplit関数が無いので(そのうちできるかもしれないが)結構面倒なんです。 一つの方法ですが C列にデータ数を出します。 C1セルに =IF(A1="",0,SIGN(LEN(B1))+LEN(B1)-LEN(SUBSTITUTE(B1,",",""))+1) 下にコピーします。文字色を白にして見えなくすると体裁がいいですね。 D1セルに =IFERROR(INDEX(A:A,1/LARGE(INDEX((COLUMN(A:Z)<=C$1:C$100)/ROW($1:$100),),ROW(A1))),"") E1セルに =IFERROR(TRIM(MID(SUBSTITUTE(","&VLOOKUP(D1,A:B,2,),",",REPT(" ",100)),100*COUNTIF(D$1:D1,D1)-99,100)),"") D1:E1を下にコピーします。