シート1のA1セルからD1セルに項目名が有って、下方にそれぞれのデータが入力されているとします。
作業列を作って対応するのがデータ数が多い場合には特に有用です。
E2セルには次の式を入力して下方jにドラッグコピーします。
=IF(D2="","",IF(COUNTIF(D$2:D2,D2)=1,MAX(E$1:E1)+1,INDEX(E$1:E1,MATCH(D2,D$1:D1,0))))
F2セルには次の式を入力して下方にドラッグコピーします。
=IF(E2="","",E2*100000+DATE(YEAR(A2),MONTH(A2),1))
そこでお求めの表をシート2に作るとしてA1セルには顧客名の文字を入力し、A2セルには次の式を入力して下方にドラッグコピーします。
=IF(ROW(A1)>MAX(Sheet1!$E:$E),"",INDEX(Sheet1!$D:$D,MATCH(ROW(A1),Sheet1!$E:$E,0)))
B1セルから横の列には1月からの月を表示させるのですが次のようにします。
例えば2013年1月からの月を並べるのでしたらB1セルには2013/1/1と入力します。C1セルは空のセルとしてD1セルには2013/2/1と入力します。以下左側の列は同様にします。
B1セルなどについてはセルの表示形式で「ユーザー定義」でm"月"のようにすることで1月と表示させます。また、B1セルとC1セルは結合セルとすればよいでしょう。
その後にB2セルには次の式を入力して横方向にドラッグコピーしたのちに下方にもドラッグコピーします。
=IF($A2="","",IF(MOD(COLUMN(A1),2)=1,COUNTIF(Sheet1!$F:$F,ROW(A1)*100000+B$1),SUMIF(Sheet1!$F:$F,ROW(A1)*100000+A$1,Sheet1!$C:$C)))
お礼
完璧にイメージ通りのものが出来ました。 たいへんありがとうございました。