• 締切済み

エクセルで、検索条件と合計範囲の異なる“カウント”

職場でExcel2003を使っています。 こんなデータを集計する必要が出てきました。  A         B     C     D    E 1会社名     店舗名  商品A  商品B 商品C 2株式会社A  店舗a   0個    12個   13個 3株式会社A  店舗b   1個    12個   0個 4株式会社A  店舗c   0個    0個    0個 5株式会社B  店舗a   5個    12個   13個 6株式会社B  店舗b   0個    0個   13個 7株式会社B  店舗c   6個    12個   3個 8株式会社B  店舗d   0個    12個   14個 ↑この表のデータを、 A社    商品A取扱店舗数 商品B取扱店舗数 商品C取扱店舗数       商品A販売個数   商品B販売個数  商品C販売個数 B社   商品A取扱店舗数 商品B取扱店舗数 商品C取扱店舗数       商品A販売個数   商品B販売個数  商品C販売個数 C社… という表にしたいのですが、ココに入れる関数。 販売個数の方は簡単にいきました、sumif($A$1:$A$8,"会社名"、C$1:C$8)てやればよかったので。 が、取扱店舗数の方が、難問。 sumifだと、検索条件の範囲と、合計範囲って別に設定できるじゃないですか。 “A列で、A社て入っている行の、C列の数字を合計する” という設定が出来る。 ところが、販売店数となると…。 sumifと全く同じ要領で、 “A列で、A社と入っている行の、C列のデータ個数を数える” という作業を、したいんですが…countifでは「A列で、A社と入っている行の数を数える」のが精一杯。 A社    count(C$2:C$4) count(D$2:D$4) count(E$2:E$4)       商品A販売個数   商品B販売個数  商品C販売個数 B社    count(C$5:C$8) count(D$5:D$8) count(E$5:E$8)       商品A販売個数   商品B販売個数  商品C販売個数 C社… とする方法もありますが(上の表の店舗は増えたり減ったりしない予定なので)、最初が大変だし、sumifのように、関数一つで何とかならないだろうか、と…。 配列数式?DCOUNT関数?? すみません、どなたか、お知恵を下さい…。

みんなの回答

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

回答No4です。 同じ会社名が連続して並んでいないことがある場合には下記の式をシート1のF2セルに入力して下方にオートフィルドラッグします。 =IF(A2="","",IF(COUNTIF(A$2:A2,A2)=1,MAX(F$1:F1)+1,INDEX(F$1:F1,MATCH(A2,A:A,0)))) その他については回答4と同じになります。

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

SUMPRODUCT関数などを使いますとデータが多くなれば計算に負担がかかります。出来るだけ簡単で分かり易い方法として作業列を使って対応することがおすすめです。作業列が目障りでしたらそれらの列を非表示にすればよいのです。 なお、ここでは会社目についても自動で表示させるようにしています。 シート1に元のデータがあるとしてF2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",IF(COUNTIF(A$2:A2,A2)=1,MAX(F$1:F1)+1,F1)) G2セルには次の式を入力してみぎよこほうこうI2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(A2="","",IF(COUNTIF(A$2:A2,A2)=1,MAX(F$1:F1)+1,F1)) そこでお求めの表を別のシートに表示させることにして、A1セルからD1セルには項目名などを入力します。 A2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)>MAX(Sheet1!F:F)*2,"",IF(MOD(ROW(A1),2)=1,INDEX(Sheet1!A:A,MATCH(ROUNDUP(ROW(A1)/2,0),Sheet1!F:F,0)),"")) B2セルには次の式を入力してD2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(ROW(A1)>MAX(Sheet1!$F:$F)*2,"",IF($A2<>"",IF(COLUMN(A1)<=3,SUMIF(Sheet1!$A:$A,$A2,Sheet1!G:G),""),IF($A1<>"",IF(COLUMN(A1)<=3,SUMIF(Sheet1!$A:$A,$A1,Sheet1!C:C),""))))

回答No.3

>A社    count(C$2:C$4) count(D$2:D$4) count(E$2:E$4) のようにCOUNT関数で数えられるなら、0の部分は未入力か - などの文字が入っているのでしょうか? その場合、ピボットテーブルを使い、数値の個数で集計してやればよいです。 この問題に会わない可能性もありますが、一度やってみることをお勧めします

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 回答番号ANo.1です。  又、A列が「株式会社A」となっている行数が変動したり、「株式会社A」となっている行が飛び飛びに存在していて、「株式会社A」の店舗の中でだけの、商品A取扱店舗数を求めたい場合には、SUMPRODUCT関数を使用ます。 =SUMPRODUCT(($A$2:$A$8="株式会社A")*($C$2:$C$8>0))  尚、元データの表の行数が、次々と増えて行き、最終行が何行目になるのか決める事が出来ない場合には、次の様にします。 =SUMPRODUCT(($A$2:INDEX($A:$A,MATCH(MAX($C:$C)+1,$C:$C))="株式会社A")*($C$2:INDEX($C:$C,MATCH(MAX($C:$C)+1,$C:$C))>0))

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 1つの店舗のデーターは、必ず1行だけしか存在せず、同一の店舗が異なる行に重複して現れる事が無いという条件が成り立っているのでしたら、その商品が1個以上となっている行が、何行あるのかをカウントすれば、自動的に取扱店舗の数と同じになると思います。  例えば、「商品A取扱店舗数」を求める場合には、次の様な関数とすれば良いのではないでしょうか? =COUNTIF($C:$C,">0")

関連するQ&A

  • Excelの検索条件について

    Excelについてお教え下さい。   A    B    C      D 1 日付  金額  納品書No. 2 10/1  2000  10-1     2000 3 10/2  1000  10-2     1000 4 10/3  2000  10-3 5 10/3  1500  10-3 6 10/3  1200  10-3     4700 7 10/3  1100  10-4 8 10/3  3000  10-4     4100 このようなデータ(納品書に書ける個数が3点まで)の場合の納品書No.ごとの小計をDのような形で出したいと思います。 (最終的には月毎の合計も出します) SUMIF(C2:C8,検索条件,B2:B8)が使えるのかなと思ったのですが、固定しない納品書No.をどのように検索条件に入れればいいのでしょうか。 よろしくお願いします。

  • Excel 重複以外のカウント数の中で条件抽出

    下記データの場合、期間内に利用した顧客の数は関数にて求める事が出来るのですが、 その中で、各支店毎(A,B,C,D支店)の個数を求める事が出来ず悩んでおります。 支店 注文日付  顧客ID   顧客名 全使用ID(重複を除く) 6 A支店  2012/1/4 111  株式会社 A    A支店 ID数 ?     A支店  2012/1/4 111  株式会社 A    B支店 ID数 ? B支店  2012/1/4 222  株式会社 B    C支店 ID数 ? C支店  2012/1/5 333  株式会社 C    D支店 ID数 ? D支店  2012/1/5 444  株式会社 D A支店  2012/1/5 555  株式会社 E A支店  2012/1/5 555  株式会社 E D支店  2012/1/7 1112  株式会社 M D支店   2012/1/9 1112  株式会社 M 他に重複用のセルを追加し、フィルタを使用して求める事は可能なのですが、 今回は、関数で出来ないかと思っております。 是非知恵をお貸し頂けないでしょうか。 重複以外の全使用ID数は =SUMPRODUCT(1/COUNTIF(C2:C11,C2:C11)) にてわかっております。 尚、今回の例の場合は、以下の通りになります。 A支店 ID数は 2  B支店 ID数は 1 C支店 ID数は 1 D支店 ID数は 2   環境は、EXCEL2007です。

  • エクセル 複数条件 カウント

    お世話になります。 EXCEL2003を利用しております。 複数条件の関数(SUMIF/CONUTIFまたはSUMPRODUCT)等について教えてください。 例)   A   B  C  D  E  F 1 4              結果 2 5 3 6 4 5 6 4     100 7 4       0 8 5     200  9 5     300 (1)A6~A9の中に A1があった場合 C6~C9を合計する →=SUMIF(A6:A9、A1、C6:C9) (2)A6~A9の中に A1があった場合 C6~C9の個数を求める かつ0以上のものに限定する →わかりません。 (3) (1)/(2)で平均を出す。 → (A6~A9にA1は2あり合計は100である)/(C6~C9にはA1に該当する列は2、かつ、0以上は1つある)=平均は100である  (3)を出したいです。 いい方法ございますでしょうか?? 調べて行き詰まりました。

  • EXCELのデータカウントについて

    下記のような表があり、A列の各会社が保有している商品コードの個数を 調べる関数式を作成しようとしております。 countif関数を使用し挑戦しましたがさっぱりうまくいかずお手上げ状態です・・・ 丸投げのようで大変申し訳ございませんが、お知恵を借りたくよろしくお願い致します。 【表】   A列   B列 1 社名  商品コード    2 A社    XXX 3 B社    XXX 4 B社    XXX 5 C社    XXX 6 D社    XXX 7 D社    XXX  8 D社    XXX  9 E社    XXX  ・ ・ ・ 20000

  • Excelで特定の文字のある列の数値を合計する関数

    Excelで、特定の文字列を含む列の数値の合計を、自動で集計してくれる関数はあるでしょうか。 複数シート(シートA、シートB)で構成されるExcelファイルで、シートAにはすべての取扱い商品が記載されています。現在は、シートBに入力されている商品ごとの販売個数の合計をシートB上でsumにより求め、その数値をシートAの該当箇所に、手で入力しています。シートAに記載されている商品が多いため、この手作業を関数で代替したいのです。 ただし、シートBに、次のような条件があります。 シートBの1行目(A1,B1,C1,D1...)には、見出しとして"氏名" "りんご" "バナナ" "いちご"...などがあり、2行目以降は、販売者の名前と、その人が販売した商品の個数が入力されています。掲載人数は40人(行数で41行)ほどです。 ところが、誰も"りんご"を販売していなければ、その列自体がなくなります。シートBには販売された商品しか記載されておらず、たとえばB1は、必ずしも"りんご"ではありません。 シートAからBを参照し、シートBの1行目に、もし"りんご"の文字があれば、そのりんごの列の2行目以降にある販売数の合計を、"バナナ"があれば同じくバナナの販売数の合計を、じかにシートAのそれぞれの合計欄に表示させたいのです。 なお、シートBの行と列を入れ換えたシートB'を作るのは、避けたいと思っています。理由は、販売者の名前でも、全商品の販売個数をシートAにsumif関数で集計していること。また、シートは1週間ごとに、今後30枚程度まで増え、その各週合計もシートAに集計する予定のため、シートは各週1枚だけにしたいのです。 このような条件のもと、Excelの関数で集計する方法があれば、教えてくださいますか。

  • エクセルの計算式でできますか?

    エクセル2003を使用してます。 計算式の組み方が分からないので、下記のようなことを実現できる式があれば教えてください。 シート1(商品の基本台帳)   A(記号)  B(商品)    C(元の個数)  D(在庫数) 1 A      リンゴ      100       57 2 B     オレンジ      166      106 3 C      レモン      70        8 シート2(売上げ台帳)   A(日付)  B(記号)   C(商品)   D(販売数) 1 4/7       B     オレンジ   58 2 4/7       C     レモン    15 3 4 5 4/28      A     リンゴ     38 6 4/28      C     レモン     35 7 4/28      B     オレンジ    2 8 9 10 5/3      C    レモン      12 11 5/3      A    リンゴ       5 ・・・・・ ROUNDでシート1の記号を、シート2に打ち込むと商品名が出てくるようになってます。 さらにシート2の販売数をその記号から勝手に計算してもとの個数から引いていき、シート1の在庫数に表示させたいのですが、そんなことができる計算式はありますか?  

  • 縦に複数条件がある場合の合計値

    エクセル2003です ネットで検索したら横に複数条件がある場合は、SUMPRODUCTなどを使うといいというのはわかったのですが 縦に複数条件ある場合は、SUMIFで足してくしかないのでしょうか? 例えば A列      B列 果物     個数 みかん    3 りんご    2 バナナ    1 りんご    2 みかん    5 D2 りんご D3 みかん と言うデータがあり みかんとりんごだけの合計値がほしい場合は =SUMIF(A:A,D2,B:B)+SUMIF(A:A,D3,B:B) でもとめられますが、 もっと簡素化したいです。 (あまり「+」は使いたくない) SUMIFをまとめられますか? もっと効率のいい関数があれば教えて下さい。 よろしくお願い致します。

  • 特定したものの合計

    A列に商品名が100程あり、B列にはその販売個数があります。C列にはA列の商品名から選んだ特定の商品名が約50程あります。B列の販売個数の中からC列の特定商品の合計を求めるにはどのようにしたら良いのでしょうか? 宜しくお願いします。

  • エクセル 検索について

    A2に製品番号1000 B2に製品名えんぴつ C2に販売個数2 D2に単価10 =COUNTIFS(メーカー価格販売リスト!$B$2:$B$161,C2) という形で特定の製品を何件販売したカウント合計は計算できるのですが 特定の製品の販売合計個数を表示させたいのですが。。 製品名と販売個数を連動させるにはどうしたら。。

  • ExcelのSUMIF関数で検索条件が複数あるとき

    A="あ" もしくは、A="い" のときのBとCの合計を求めたいと思ってます。 SUMIF関数で計算できるのは分かったのですが、計算式が長くゴチャゴチャ しているので、もっとスマートに計算できる方法があれば、教えてください。 =SUMIF(A1:A5,"=あ",B1:B5)+SUMIF(A1:A5,"=あ",C1:C5)+SUMIF(A1:A5,"=い",B1:B5)+SUMIF(A1:A5,"=い",C1:C5)   A  B  C 1 あ 500 80 2 い 300 50 3 え 800 40 4 い 200 80 5 う 100 60

専門家に質問してみよう