関数でも可能です。
今仮に、元の文字列がSheet1のA列に入力されていて、Sheet3のA列~D列を作業列として使用して、Sheet2のA列に結果を表示させるものとします。
まず、Sheet3のA1セルに次の数式を入力して下さい。
=IF(SUMPRODUCT(ISNUMBER(RIGHT(LEFT(Sheet1!$A1,FIND(" ",ASC(Sheet1!$A1))-1),ROW(INDIRECT("Z1:Z"&FIND(" ",ASC(Sheet1!$A1))-1)))+0)*1),SUMPRODUCT(ISNUMBER(RIGHT(LEFT(Sheet1!$A1,FIND(" ",ASC(Sheet1!$A1))-1),ROW(INDIRECT("Z1:Z"&FIND(" ",ASC(Sheet1!$A1))-1)))+0)*1),"")
次に、Sheet3のB1セルに次の数式を入力して下さい。
=IF($A1="","",LEFT(Sheet1!$A1,FIND(" ",ASC(Sheet1!$A1))-1-$A1))
次に、Sheet3のC1セルに次の数式を入力して下さい。
=IF($A1="","",MID(Sheet1!$A1,FIND(" ",ASC(Sheet1!$A1))-$A1,$A1)+0)
次に、Sheet3のD1セルに次の数式を入力して下さい。
=IF($A1="","",REPLACE(Sheet1!$A1,1,FIND(" ",ASC(Sheet1!$A1))-1,))
次に、Sheet3のA1~D1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。
次に、Sheet2のA1セルに次の数式を入力して下さい。
=IF(COUNT(Sheet3!$A:$A),IF(MOD(ROWS($1:1),MATCH(99,Sheet3!$A:$A)+1),INDEX(Sheet3!$B:$B,MOD(ROWS($1:1),MATCH(99,Sheet3!$A:$A)+1))&INDEX(Sheet3!$C:$C,MOD(ROWS($1:1),MATCH(99,Sheet3!$A:$A)+1))+ROUNDUP(ROWS($1:1)/(MATCH(99,Sheet3!$A:$A)+1),0)&INDEX(Sheet3!$D:$D,MOD(ROWS($1:1),MATCH(99,Sheet3!$A:$A)+1)),""),"")
次に、Sheet2のA1セルをコピーして、Sheet2のA2以下に貼り付けて下さい。
以上です。
お礼
詳細なご説明に加え、実行画像まで添付頂きありがとうございました。 頂いた内容で近々試してみます!