Excelで列を集計する


1

次のような日付と購入リストで構成されるデータがあります(コンマは個別の列を表します)。

**date,product1,product2,product3** 
08/11/13,oranges,apples,chips
08/11/13,grapes,oranges
08/12/13,grapes,pineapples
08/12/13,grapes,oranges

各製品のアイテムが各日に購入された数を知りたい(そしてプロットする)。

製品列が1つしかない場合は、非常に簡単です。ピボットテーブルを使用できます。しかし、私の場合には、8月11日のために、私はから「オレンジ」カウントの仕方必要な製品1をから「オレンジ」と一緒にproduct2を ...

1つの方法は、行を複製し、データを単一の列に変換することですが、それを避けたいと思います。

できればVBAを使用せずにそれを行う方法はありますか?

回答:


0

データがA2:D25の範囲にある場合、次の配列数式を使用できます。

=SUM(($A$2:$A$25=DATEVALUE("8/11/13"))*
    (($B$2:$B$25="oranges")+($C$2:$C$25="oranges")+($D$2:$D$25="oranges")))

あなたはでそれを入力する必要がありますControl- Shift- Enterキーの組み合わせ。

多数の製品のそれぞれについて合計を計算する日付が複数ある場合は、次のことができます。

例のように、製品データがシート1のA2:D20000の範囲にあり、列Aに日付範囲があると仮定します。Sheet2に製品数を入れたいとします。

Sheet2では、セルB1、C1などに興味のある日付を入力します。その下には、A2:A2000の範囲で、製品のリストがあります。セルB2に、次の配列数式を入力します。

=SUM((Sheet1!$A$2:$A$20000=B$1)*((Sheet1!$B$2:$B$20000=$A2)+
     (Sheet1!$C$2:$C$20000=$A2)+(Sheet1!$D$2:$D$20000=$A2)))

それを製品リストの一番下にコピーします。これにより、最初の日付のカウントが得られます。

次に、行1に日付がある各列の製品カウントの列全体をコピーします。これにより、すべての日付のカウントが得られます。

また、多数の製品と多数の日付の両方がある場合は、配列の数式が少し複雑になるだけでパフォーマンスが向上します(つまり、計算時間が短縮されます)。

セルB2では、代わりに次のように入力します。

     =COUNTIFS(Sheet1!$A$2:$A$20000,B$1,Sheet1!$B$2:$B$20000,$A2)+
      COUNTIFS(Sheet1!$A$2:$A$20000,B$1,Sheet1!$C$2:$C$20000,$A2)+
      COUNTIFS(Sheet1!$A$2:$A$20000,B$1,Sheet1!$D$2:$D$20000,$A2)

次に、製品リストの一番下まで数式をコピーし、その数式の列全体(B2:B2000の範囲)を、行1に日付を入れたすべての列にコピーします。


事は、私が製品(例えば「みかん」)の多くの(数千の)持っているので、私はちょうどそれらのそれぞれについて、このような式を移動して、作成することはできません
lribinik

わかりましたが、日付が多い場合(約100)はどうなりますか?
lribinik

それらを行1に入力し、各日付列の数式をコピーします。対処する必要のある製品と日付の数を考慮して、回答に非配列式アプローチを追加しました。配列数式と同じ初期セルに入力しますが、Ctrl-Shift-Enterキーの組み合わせではなくEnterキーのみで確定します。次に、前と同じように下にコピーします。
チャフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.