• ベストアンサー

エクセルで集計

エクセルで集計 シート1:A列に日付2000行程度、B列に品名A,B,C,D…500種類程度、C列にその内容。日毎に行は増えていきま、同じ品名が何度も登場してきます。 シート2:ここに新しくシート1の集計をして、同じ品名の多い順に並べ替えてリストを作成したいと思います。 シート1に新しく行が増えると同時にシート2の集計に反映させたいのですが、いい方法はありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

このように複雑な内容のご質問でしたら初めからその条件を示してご質問いただきたいですね。余分な時間を使うことになりますので。 ところで、シート1ではその後のご質問を組み入れてA1からG1の備考まで、項目名があるとします。 H2セルには次の式を入力します。 =IF(COUNTIF(D$2:D2,D2)=1,COUNTIF(D:D,D2),"") I2セルには次の式を入力します。 =IF(H2="","",RANK(H2,H:H)) J2セルには次の式を入力します。 =IF(D2="","",IF(COUNTIF(D$2:D2,D2)=1,COUNTIF(D:D,D2)-ROW(B1)/10000,INDEX(J:J,MATCH(D2,D:D,0))-ROW(B1)/1000000)) K2セルには次の式を入力します。 =IF(J2="","",RANK(J2,J:J)) H2セルからK2セルを選択してそれらの式を下方にオートフィルドラッグします。 シート2では1行目にはシート1での項目名を並べ、また、H1セルにはランク、J1セルには出現回数とでも入力します。 そこでA2セルには次の式を入力し、J2セルまでオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。 =IF(ROW(A1)>MAX(Sheet1!$K:$K),"",IF(COLUMN(A1)<=7,INDEX(Sheet1!$A:$G,MATCH(ROW(A1),Sheet1!$K:$K,0),COLUMN(A1)),IF(COLUMN(A1)=8,IF($D1<>$D2,INDEX(Sheet1!$I:$I,MATCH($D2,Sheet1!$D:$D,0))&"位",""),IF(AND(COLUMN(A1)=9,$H2<>""),COUNTIF(Sheet1!$D:$D,$D2)&"回",""))))

noname#150307
質問者

お礼

ありがとうございました。 バッチリでーす(^-^)V はじめからそのままのかたちで質問すればよかったですね。 次回もよろしくお願いします(^^ゞ

その他の回答 (3)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

シート1で最初にA列を重点に昇順での並べ替えをして日付が順序よく並んでいることが必要です。

noname#150307
質問者

お礼

ありがとうございます。 やってみましたが、うまく並んでくれませんでした( ノД`)シクシク… 実際の表は以下のようになっています。 A列整理番号、B列日付、C列時間、D列品番、E列品名、F列種類、G列備考 行は2000行程度で毎日増えます、D列品番でランキングになっていけばいいのですが・・・ ついでにD列品番で1位~品番の出土回数も表示されているといいです。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

回答No1です。 シート1でのD2への入力の式ですが同じ回数が店によって見られた場合にシート2での並びの順番が変わってしまいますのでシート1でD2に入力する式は次のように変更して下方にオートフィルドラッグしてください。 =IF(B2="","",IF(COUNTIF(B$2:B2,B2)=1,COUNTIF(B:B,B2)-ROW(A1)/10000,INDEX(D:D,MATCH(B2,B:B,0))-ROW(A1)/1000000))

noname#150307
質問者

お礼

早速の解答ありがとうございます。 実際の表は、もうすこし複雑なので セル番号などを変えて行なっているのですが どちらの式を入力しても うまく多い順に並んでくれません トホホ・・・

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

シート1ではA1セルからC1セルまでは項目名で各データは2行目から下方にあるとします。 作業列としてD2セルには次の式を入力します。 =IF(B2="","",COUNTIF(B:B,B2)-ROW(A1)/10000) E2セルには次の式を入力します。 =IF(D2="","",RANK(D2,D:D)) D2およびE2を選択してからそれらの式を下方にオートフィルドラッグします。 シート2では1行目にはシート1と同じ項目名を入力します。 A2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。 =IF(OR(COLUMN(A1)>3,ROW(A1)>MAX(Sheet1!$E:$E)),"",INDEX(Sheet1!$A:$C,MATCH(ROW(A1),Sheet1!$E:$E,0),COLUMN(A1)))

関連するQ&A