今仮に、どちらのシートも「名前」等の項目名が入力されている行が1行目であるものとします。
また、元データの表があるシートがSheet1であり、Sheet3のA列を作業列として使用して、Sheet2に結果を表示させるものとします。
その場合、まずSheet2の1行目に「名前」、「合計金額」、「内容1」、「金額1」、「内容2」、「金額2」・・・・・という具合に各項目名を入力して下さい。
次に、Sheet3のA1セルに次の関数を入力して下さい。
=Sheet1!$A$1&"◆1"
次に、Sheet3のA2セルに次の関数を入力して下さい。
=IF(INDEX(Sheet1!$B:$B,ROW())="","",INDEX(Sheet1!$B:$B,ROW())&"◆"&COUNTIF(Sheet1!$B$1:INDEX(Sheet1!$B:$B,ROW()),INDEX(Sheet1!$B:$B,ROW())))
次に、Sheet3のA2セルをコピーして、Sheet3のA3以下に貼り付けて下さい。
次に、Sheet2のA2セルに次の関数を入力して下さい。
=IF(A1="","",IF(ROWS(A$1:A2)>COUNTIF(Sheet3!$A:$A,"*?◆1"),"",INDEX(Sheet1!$B:$B,MATCH("*?◆1",INDEX(Sheet3!$A:$A,MATCH(A1&"◆1",Sheet3!$A:$A,0)+1):INDEX(Sheet3!$A:$A,MATCH(9E+307,Sheet1!$A:$A)),0)+MATCH(A1&"◆1",Sheet3!$A:$A,0))))
次に、Sheet2のB2セルに次の関数を入力して下さい。
=IF($A2="","",SUMIF(Sheet1!$B:$B,$A2,Sheet1!$C:$C))
次に、Sheet2のC2セルに次の関数を入力して下さい。
=IF($A2="","",IF(ISERROR(1/(INDEX(CHOOSE(MOD(COLUMNS($C:C),2)+1,Sheet1!$C:$C,Sheet1!$E:$E),MATCH($A2&"◆"&INT((COLUMN()-COLUMN($C:$C))/2+1),Sheet3!$A:$A,0))<>"")),"",INDEX(CHOOSE(MOD(COLUMNS($C:C),2)+1,Sheet1!$C:$C,Sheet1!$E:$E),MATCH($A2&"◆"&INT((COLUMN()-COLUMN($C:$C))/2+1),Sheet3!$A:$A,0))))
次に、Sheet2のC2セルをコピーして、Sheet2のD2セル~「Sheet2の表において最も右側にある金額を表示させる列の2行目のセル」のセル範囲に貼り付けて下さい。
次に、Sheet2の2行目全体をコピーして、Sheet2の3行目以下に貼り付けて下さい。
以上です。
お礼
ありがとうございました!出来ました。 配列関数やINDEX関数はどうも苦手なので、 勉強になりました。 まだ同じものを作れるレベルまでは難しいですが 勉強していきたいと思います。 ありがとうございます。