- ベストアンサー
SUM関数とIF関数を使って売上数を集計する方法
- BOOK1とBOOK2には担当者と売上数のデータがあります。BOOK2のA列には部署名がありますが、部署名が頻繁に変わるため、常に適切な売上数を表示する方法に悩んでいます。
- SUM関数とIF関数を組み合わせることで、BOOK2のB列に部署ごとの総売上数を表示する方法がありますが、ワイルドカードを使った論理式が使えないため、実装が難しいです。
- 質問者は2つの問題に直面しています。1つ目は別のBOOKのデータを集計するため、SUMIF関数が使えないことです。2つ目はIF関数で論理式にワイルドカードを使えないことです。どのように解決すれば良いか、アドバイスを求めています。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
Book2.xlsの集計したいセルに計算式として =SUM(IF(RIGHT([Book1.xls]Sheet1!$A1:$A10,1)="a",[Book1.xls]Sheet1'!$B1:$B10)) と入力してから 「CTRL+SHIFT+ENTERを押して」 ←ここが大事 式を確定して下さい。 これで >BOOKは2つあり、別BOOK1にあるデータをBOOK2へ集 計するのでSUMIF関数では#VALUE!エラーがでて使えない。 >SUMとIF関数を組み合わせて出来そうだけど…なかなかできない。 の2つがクリア出来ます。
その他の回答 (5)
- chie65536
- ベストアンサー率41% (2512/6032)
訂正 誤:=SUM(IF(RIGHT([Book1.xls]Sheet1!$A1:$A10,1)="a",[Book1.xls]Sheet1'!$B1:$B10)) 正:=SUM(IF(RIGHT([Book1.xls]Sheet1!$A1:$A10,1)="A",[Book1.xls]Sheet1'!$B1:$B10)) 担当者の末尾の部署記号は大文字でしたね(^^; 蛇足ですが http://support.microsoft.com/?scid=kb;ja;260415&spid=1743&sid=376 SUMIF関数が閉じられている別ブックを参照した時に#VALUE!になるのは、問題点と認めているようです。
- mshr1962
- ベストアンサー率39% (7417/18945)
=SUMIF([BOOK2.xls]Sheet1!A:A,"*A",[BOOK2.xls]Sheet1!B:B) =SUMIF([BOOK2.xls]Sheet1!A:A,"*B",[BOOK2.xls]Sheet1!B:B) ですね。SUMIF関数ならワイルドカードが使用できます。 一応別の方法 =SUMPRODUCT(RIGHT([BOOK2.xls]Sheet1!$A$1:$A$10,1)="A")*([BOOK2.xls]Sheet1!$B$1:$B$10))
お礼
SUMIFは使えないんですよ・・・そこが厄介なんですよね^^; http://support.microsoft.com/?scid=kb;ja;260415&spid=1743&sid=376
- minato_air
- ベストアンサー率40% (72/180)
BOOK1の名前と部署を分けて考えれば簡単になりますよ。 (分ける事が出来ない事情があるのでしたら、これを手掛かりに) [book1] [A] [B] [C] 1 営業 部署 売り上げ 2 田中 A 10 3 山田 B 20 4 鈴木 B 10 [book2] [A] [B] 1 部署 売上合計 2 A部署 =SUMIF([Book1]Sheet1!$B$2:$B$4,"=A",[Book1]Sheet1!$C$2:$C$4) 3 B部署 =SUMIF([Book1]Sheet1!$B$2:$B$4,"=B",[Book1]Sheet1!$C$2:$C$4) なんて如何でしょうか。
お礼
SUMIFはどうしても使えないんですよね^^;その場合は・・・Book1を閉じたとたんに、エラー値になります。 http://support.microsoft.com/?scid=kb;ja;260415&spid=1743&sid=376
- Jodie0625
- ベストアンサー率30% (397/1288)
データ管理上や、正規化という考え方や、処理の簡略化、さらには見栄えなどの点で、"氏名+部署"という形式のデータを持つ利点がいまひとつ理解できません。 部署、氏名、売り上げ数 と、列を分けて管理する方法では不都合があるのでしょうか?
お礼
おっしゃるとおりです^^; しかし、ほんとはもっと複雑なデータで、質問例はすごく簡単にしているんです^^; ありがとうございました<(__)>
- mu2011
- ベストアンサー率38% (1910/4994)
SUMIFでできそうですよ。 (例)aaa.xlsはBOOK1を想定、BOOK2のB1に次の関数を設定、下方向にコピーして下さい。 =SUMIF(([aaa.xls]Sheet1!$A$1:$A$10),"*"&LEFT(A1,1),[aaa.xls]Sheet1!$B$1:$B$10)
お礼
そうですね。確かにそうですが・・・ その場合、aaa.xlsを閉じてると、どうしてもエラーになるんですよね^^;
お礼
おぉ~~なるほど~一気に仕事が解決しました!!! すごく助かります^^ 今まで悩んでいたのが、今解決してすごく爽快です!!! ほんとにありがとうございます!! 私の下手な質問を的確に理解して、シンプルかつ最適な回答方法(関数の組み方)を提示していただき本当に感謝します。私もエクセルはかなり使いこんでいるつもりですが、やっぱりまだまだですね^^; もっと勉強します!ほんとにありがとうございました!もし、また力をお借りするときがあったら、宜しくお願いいたします!今回は本当にありがとうございました<(__)>