今後店の数が増加しても自由に対応できる方法です。
作業列をEおよびF列に設けてお求めの表はG列からK列に表示させることにします。
E2セルには次の式を入力します。
=IF(B2<>B3,MAX(E$1:E1)+1,"")
F2セルには次の式を入力します。
=IF(B2="","",IF(COUNTIF(B$2:B2,B2)=1,1&"a"&D2&"b"&IF(ABS(D2)>=300,1,0),LEFT(F1,FIND("a",F1)-1)+1&"a"&MID(F1,FIND("a",F1)+1,FIND("b",F1)-FIND("a",F1)-1)+D2&"b"&IF(ABS(D2)>=300,MID(F1,FIND("b",F1)+1,5)+1,MID(F1,FIND("b",F1)+1,5))))
E2セルからF2セルまでを選んでそれらの式を下方にオートフィルドラッグします。
G1セルからK1セルには項目名をそれぞれ入力します。
G2セルには次の式を入力してK2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。
=IF(COUNTIF($E:$E,ROW(A1))=0,"",IF(COLUMN(A1)<=2,INDEX($B:$C,MATCH(ROW(A1),$E:$E,0),COLUMN(A1)),IF(COLUMN(A1)=3,LEFT(INDEX($F:$F,MATCH(ROW(A1),$E:$E,0)),FIND("a",INDEX($F:$F,MATCH(ROW(A1),$E:$E,0)))-1)*1,IF(COLUMN(A1)=4,MID(INDEX($F:$F,MATCH(ROW(A1),$E:$E,0)),FIND("a",INDEX($F:$F,MATCH(ROW(A1),$E:$E,0)))+1,FIND("b",INDEX($F:$F,MATCH(ROW(A1),$E:$E,0)))-FIND("a",INDEX($F:$F,MATCH(ROW(A1),$E:$E,0)))-1)*1,IF(COLUMN(A1)=5,MID(INDEX($F:$F,MATCH(ROW(A1),$E:$E,0)),FIND("b",INDEX($F:$F,MATCH(ROW(A1),$E:$E,0)))+1,5)*1,"")))))
式は多少複雑になりますが計算速度はSUMPRODUCT関数の場合などに比べて速いでしょう。また、店の増加にも対応しています。EおよびF列が目障りでしたら列を非表示にすればよいでしょう。
お礼
ご回答ありがとうございました。 スッキリしていて良いですね。 私にも解読できる計算式です。 また機会ありましたらよろしくお願いいたします。大変助かりました。