エクセルでA列に得意先、B列に金額、C列に○or×を入力しています。
得意先は部署ごとにわかれていますが、それを会社単位にして
C列に○が付いていたらB列の金額を合算できるようにしたいです。

わかりにくいかと思いますが、教えて頂きたいです。
よろしくお願いします。

質問者からの補足コメント

  • ご回答ありがとうございます。
    ちなみに、A列の得意先をプルダウンで選択できるようにしたいのですが、難しいでしょうか…
    なにか方法がありましたら、教えて下さい。
    重ねてよろしくお願いします。

      補足日時:2017/04/17 16:26

このQ&Aに関連する最新のQ&A

A 回答 (7件)

「得意先名」と「〇/×」で合計の判断をするので、


SUMIF関数ではなく
SUMIFS関数ですね。

Excel2007から追加された関数ですので、Excel2003以前のバージョンではSUMPRODUCT関数を使うことになります。

SUMIFS関数は
 =SUMIFS(合計対象範囲 , 検索条件範囲1,検索条件1 , 検索条件範囲2,検索条件2...)
のように複数の検索条件を設定することができ、このすべての条件を満たした場合の合計を求められます。
 =SUMIFS(B:B , A:A,”得意先A” , C:C,”〇”)
こんな感じ。

SUMPRODUCT関数は、
 商品名 単価 個数
  A   100 20
  B   120 10
  C   150 55
の合計を求める関数ですが、
これの「個数」にあたる部分を「1」か「0」にすることで「単価」の合計(が意味あるのかどうかは別として)を求めることができます。
質問の例では
 得意先 金額 マーク
 ACB社 100  〇
 DEF社 120  ×
 GHI社 150  〇
こんなでしょう。
 =SUMPRODUCT( 配列1 , 配列2 , 配列3...)
として配列にはこの場合は縦方向を指定することになります。
前の例では
 =SUMPRODUCT( B:B , C:C )
この結果
 B2×C2 + B3×C3 + B4×C3
の計算が行われます。
 配列1 × 配列2...
その合計が求められると思えばいいです。
で、後者は
 =SUMPRODUCT( (A:A="ABC社")*1 , B:B , (C:C=”〇”)*1 )
または
 =SUMPRODUCT( A:A="ABC社") * B:B * (C:C=”〇”) )
こうなります。
 A:A=”ABC社”
で、A列の値が”ABC社”なら”TRUE”が、違えば”FALSE”が返るので、
これを四則演算させて”TRUE"を「1」、”FALSE"を「0」にして集計させます。
    • good
    • 0
この回答へのお礼

みなさんありがとうございました。
詳しく教えてくださった銀鱗さんをベストアンサーに
させていただきます。

お礼日時:2017/04/18 17:05

補足コメントへの返答です。



プルダウンで選択するには、入力規則で
 ・リストを作る
 ・表の上にあるリストを範囲指定する
の2通りの方法があります。

得意先名が増える可能性があるならば、別のシートに得意先名の一覧を作成しておいてその範囲を指定するとメンテナンスが楽です。
(Sheet2のA列に作成したならば… Sheet2!A:A …のように指定)

同様にC列の「〇」「×」も入力規則で、プルダウンして選択するようにしても良いと思います。
この場合は、No.6で回答されているように入力規則の中でリストを作ってしまうほうが良いでしょう。
    • good
    • 1

エクセルの「データ」タブにある「データの入力規則」をクリックします。


データの入力規則ダイアログの中の「設定」タブにある「入力の種類」を「リスト」に設定します。
「元の値」の中に「得意先1,得意先2,得意先3」←というようにカンマで区切って入力するとリストとして選べるようになります。
    • good
    • 1

=SUMIF(C:C,"○",B:B)



C列が"○"となっているB列を集計する式です。
    • good
    • 0

SUM関数とIF関数が組み合わさった「SUMIF関数」(サムイフ)が良いと思います。


複数の条件を設定するなら、ちょっと複雑ですが「DSUM関数」(ディーサム)の方が良いかも。
作業法は、他人に教授できるほどではありませんので、ネット等でお調べ下さい。
    • good
    • 0

こんにちは



>得意先は部署ごとにわかれていますが、それを会社単位にして~
会社単位にする方法が記載されていないので、具体例は示せませんが、まず、作業列を設けて、関数等で会社名を表示するようにしておきましょう。
(作業列なしで、直接求められるかもしれませんが、説明上わかりにくくなるので分けて説明します。)

集計したいのは、作業列が同じ会社名で、C列に○がある行を対象としたB列の値の合計値だと思います。
上記の準備ができていれば、SUMIFS()やSUMPRODUCT()等を用いて、そのまま算出することが可能です。
http://www.becoolusers.com/excel/sumifs.html
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu …
    • good
    • 1

SUMIFS、SUMPRODUCT、などが使えると思います。

    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QExcel2013 VBA A列とB列の文字をA列とB列とC列に移動させる方法

A列とB列に文字が入っているのですが、下記のようにA列とB列とC列に文字を移動させたいです。
(A列の数字は必ず奇数のA列に入っています。)
VBAのコードを教えて下さい。

例えば
A1 1  B1 cat
A2 空白 B2 猫
A3 空白 B3 dog
A4 空白 B4 犬
A5 2  B5 whale
A6 空白 B6 クジラ
A7 3  B7 rabbit
A8 空白 B8 ウサギ

とデータがある場合

A1 1  B1 cat  C1 猫
A2 空白 B2 dog  C2 犬
A3 2  B3 whale  C3 クジラ
A4 3  B4 rabbit C4 ウサギ

としたいです。

実際、データは、A5196まであります。

Aベストアンサー

No.1です。

>実際、データは、A5196まであります。

前回のコードは一つずつカット&ペーストしていますので
かなりの時間を要すると思います。
↓のコードに変更してみてください。

Sub Sample2()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
Application.ScreenUpdating = False
With Range(Cells(1, "C"), Cells(lastRow, "C"))
.Formula = "=IF(MOD(ROW(),2)=1,B2,"""")"
.Value = .Value
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
Application.ScreenUpdating = True
MsgBox "完了"
End Sub

少しは短縮できると思います。m(_ _)m

No.1です。

>実際、データは、A5196まであります。

前回のコードは一つずつカット&ペーストしていますので
かなりの時間を要すると思います。
↓のコードに変更してみてください。

Sub Sample2()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
Application.ScreenUpdating = False
With Range(Cells(1, "C"), Cells(lastRow, "C"))
.Formula = "=IF(MOD(ROW(),2)=1,B2,"""")"
.Value = .Value
.SpecialCells(xlCellTypeB...続きを読む

Q【EXCEL】条件付き書式、A列、C列、D列、E列が同じ値の時にB列の背景色を変えたい

お世話になります。

エクセルの条件付き書式の数式の使い方について教えて下さい。
A列、C列、D列、E列の値が同じ時にB列のセルの背景を青に
塗りつぶしたいと思っています。

なので、「数式を使用して、書式設定するセルを決定」、
「次の数式を満たす場合に値を書式設定」で、数式を
「=A1=C1=D1=E1」と入力し、書式、塗りつぶし、青、
を選択して、条件付き書式を設定しました。
すると、、、画像のような結果になります。

私の感覚だと画像でセルの値が「11」~「15」の時だけ
B列が青になると思うのですが実際の結果は画像の通りです。

先の話の通りA列、C列、D列、E列の値が同じ時だけ
B列のセルの背景を青にしたい場合はどうい数式になるのでしょうか?

すいませんが、詳しい方、数式(関数?)で説明できる方よろしくお願い致します。

追記
可能でしたらA列、C列、D列、E列が空白の時はB列の背景色をなしにしたいと思っております。
→A列、C列、D列、E列に値があって、かつ同じ値の場合のみB列の背景を青にしたいです。

お世話になります。

エクセルの条件付き書式の数式の使い方について教えて下さい。
A列、C列、D列、E列の値が同じ時にB列のセルの背景を青に
塗りつぶしたいと思っています。

なので、「数式を使用して、書式設定するセルを決定」、
「次の数式を満たす場合に値を書式設定」で、数式を
「=A1=C1=D1=E1」と入力し、書式、塗りつぶし、青、
を選択して、条件付き書式を設定しました。
すると、、、画像のような結果になります。

私の感覚だと画像でセルの値が「11」~「15」の時だけ
B列が青にな...続きを読む

Aベストアンサー

AND関数を使えば判定ができるのでは?
 =AND(A2<>"",A2=C2,C2=D2,D2=E2)

A列には常に判定する数値が入っているなら「A2<>""」は不要です。

参考サイト
http://www.relief.jp/itnote/archives/003940.php

Q行のデータ(a列b列c列)をd列に表示したい

a1、b1、c1のセルに入力したデータをd1セルに表示したい。可能でしょうか。一例「a1セルに1と入力、b1セルに2と入力、c1セルに3と入力しd1セルに123と表示する」

Aベストアンサー

d1セルに =a1&b1&c1

エクセルですよね?

Qエクセルで、A列に日付をB列に曜日、C列からF列までにデータを入れるよ

エクセルで、A列に日付をB列に曜日、C列からF列までにデータを入れるように作成しています。
条件付書式で土日祭日の場合はC列からF列に色を表示させています。
この色付セル(土日祭日)の場合にはデータ入力が無いので自動で0を表示させ、なおかつデータ入力が出来ないようにしたいのですが、そのようなことは出来るでしょうか。エクセルは2003を使ってます。

Aベストアンサー

C2セルに以下の数式を入力します。

=IF(AND($A2<>"",WEEKDAY($A2,2)>5),0,"")

同様にC2セルに以下の入力規則を設定します。

「データ」「入力規則」で「ユーザー設定」にして数式欄に以下の式を入力します。

=WEEKDAY($A2,2)<6

最後にC2セルを右方向および下方向にオートフィルします。

Q作業列なしで各行のA列とB列の数値の小さい方に、C列の数値をかけた値の和を求めたい

エクセルで、A列B列C列の1行目から100行目まで、それぞれ数値が入っているとします。
各行のA列とB列の数値の小さい方に、C列の数値をかけた値の和を求めたいです。
D列を作業列にするなら、D1に「=MIN(A1,B1)*C1」として、これをD100までコピーして、「=SUM(D1:D100)」で得られる数値を求めたいのですが、元となるデータが頻繁に追加されることも有り、作業列の追加が難しい状況です。
SUMPRODUCT関数を使おうにも、「=SUMPRODUCT(MIN(A1:A100,B1:B100),C1:C100)」では、A1からB100までの200セルのうちの最小値に、C1からC100の数値をそれぞれかけた値の和が返されてしまいます。
なにかよい方法があれば、お知恵を拝借できないでしょうか。

Aベストアンサー

こんにちは!

範囲を最初から多目にしておいてはダメですか?
SUMPRODUCT関数はどこかの列が空白の場合は「0」とみなされ合計しても結果に変化はないはずですので・・・

どうしても作業列を使用したくない場合の一例です。
表示したいセルに
=SUMPRODUCT(IF(A1:A1000<=B1:B1000,A1:A1000,B1:B1000),C1:C1000)

配列数式になりますので、Ctrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合は上記数式をドラッグ&コピー! → 表示したいセルを選択 → 数式バー内に貼り付け  → そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定します。
数式の前後に{ }マークが入り配列数式になります。

※ SUMPRODUCT関数自体が配列数式になりますが、
配列数式内に配列数式を入れた感じになります。m(_ _)m


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報