- 締切済み
エクセル 関数について(SUMIF)
職場で最近関数式を使用し始めた初心者です。 少しづつネットで検索しながら勉強してるのですが、壁にぶつかりました・・ 詳しい方おしえて下さい。 A B 佐藤 1000000 田中 1500000 鈴木 500 山口 300000 山本 600000 佐藤 25000 川口 650000 ・ ・ ・ ・ ・ ・ ・ ・ 同一名は何度も出てきます。 30名ほどの人数で特定の名前の人でB列の金額を合計を特定の場所(セル)に出したいです。 (すみません説明が下手で・・・) 例えば6人特定の人の合計を出す場合 1つ出来上がった式が =SUMIF(A1:A60,"=佐藤",B1:B60)+SUMIF(A1:A60,"=山口",B1:B60)+SUMIF(A1:A60,"=鈴木",B1:B60)+SUMIF(A1:A60,"=川口",B1:B60)+SUMIF(A1:A60,"=山田",B1:B60)+SUMIF(A1:A60,"=石川",B1:B60) もう少し短い式に出来ないでしょうか・・・ 15人とか大人数になると式が長すぎて自分でも訳がわからなくなってしまいます・・・ 会社独自のソフトみたいのを使って元々の表を出しているので表自体の並べ替えとか 変えることは出来ません。 何かいい方法あったらお願い致します。
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 (1)Sheet2に名前リスト範囲(A1:A30)に名前を入力 (2)データシートがSheet1だったとして、Sheet2の任意セルに=SUMPRODUCT(SUMIF(Sheet1!A1:A60,A1:A30,Sheet1!B1:B60))
- imogasi
- ベストアンサー率27% (4737/17069)
#5のご回答に近いが, 誰と誰の合計を出すか、式をそのままで、F列の1の行を変えるだけで、比較的自由に選択できる。 F、G列に 佐藤 1 鈴木 1 山本 1 田中 山口 川口 F列に名前一覧をつくり(注)、G列に合計する人の行に1を入れる A,B,C列データが 佐藤 2 1 田中 2 0 鈴木 3 1 山口 4 0 山本 5 1 佐藤 6 1 川口 7 0 鈴木 1 1 山本 2 1 としてC2は =VLOOKUP(A2,$F$2:$G410,2,FALSE) トイレ手「下方向に式を複写。 合計を出したいセルに =SUMPRODUCT((B2:B11)*(C2:C11)) 上記の場合では結果 19 (注)A列の名前一覧は、名前が多数で入り組んで存在しても、 データーフィルタオプションの設定ー重複するレコードは無視するで簡単に出せる。
お礼
見たことのない関数で解読不能でしたので、 実際に試してみました! なるほど~!細かく教えていただけて感謝です! こんなやり方、自分では絶対にだせなかったので為になりました! ありがとうございます。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! ご希望の方法とは違うかもしれませんが・・・ ごくごく単純にやってみました。 ↓の画像のように作業用の列を使います。 G列には合計したい人の氏名を入力(何人入力しても構いません) 作業列C2セルに =IF(COUNTIF(G:G,A2),1,"") としてオートフィルでずぃ~~~!っと下へコピーしておきます。 最後に結果を表示したいセルに =SUMIF(C:C,1,B:B) とすれば結果が表示されると思います。 ※ 作業列が目障りであれば離れた列を利用するか、作業列を非表示にしておいた方が良いかもしれません。 かなり泥臭い方法ですが、この程度でごめんなさいね。m(_ _)m
お礼
これもまた面白いやり方ですね! これは他に出てる宿題で使えそうなのでそっちで このまま使わせていただきます!! 判りやすく、画像まで添付していただき助かりました! ありがとうございます。
- MackyNo1
- ベストアンサー率53% (1521/2850)
>もう少し短い式に出来ないでしょうか・・・ セルに合計対象の名前が書いてあれば、その部分をセル参照することで簡単に計算できますが、ご質問のSUMIF関数を、短くまとめたいということなら以下のような数式になります。 =SUM(SUMIF(A1:A60,{"佐藤","山口","鈴木","川口","山田","石川"},B1:B60))
お礼
あ!なるほど! {}←このカッコを使えば出来るのですね! 質問当初に理想としてた形がこれです。 沢山のご回答でこんなに色んなやり方があるとは知らず・・ ありがとうございました!
- kagakusuki
- ベストアンサー率51% (2610/5101)
まず、適当な列(ここでは仮に、D列を使用するものとします)に、佐藤、山口、鈴木、川口、・・・・・ といった、特定の人の名前を並べておきます。 次に、特定の人の合計を表示させるセルには、次の様な関数を入力して下さい。 =SUMPRODUCT(SUMIF($A:$A,INDEX($D:$D,1):INDEX($D:$D,MATCH("゛",$D:$D,-1)),$B:$B)*1) これで、特定の人の名前や人数が変わった場合でも関係なく、特定の人の合計を自動的に表示させる事が出来ます。
お礼
おぉぉ!! この関数式自体は何をしているか解読できないですが・・・ すごい!これなら何人増えても同じ関数のままいけるんですね! もう魔法にしか見えません! ありがとうございました!
- chonami
- ベストアンサー率43% (448/1036)
まずどこか別のセルに名前を入力する欄を作る。 例えば名前入力をD列として、 D1からD6まで合計したい人の名前を入力していく。 E1に =SUMIF($A1:$A60,D1,$B1:$B60) と入力し、E6までコピー こうしておけば名前を変えてもその人の合計が計算されますので あとは金額の合計欄をどこかに作ればいいと思います。
お礼
なるほど! この関数さえ入れておけばあとから人を入れ替えても すぐに使えます! No.1さんの関数と似ているけどやり方次第でこんなに楽に できるのですね!ありがとうございました。
- DJ-Potato
- ベストアンサー率36% (692/1917)
訳わからなくならないように、一気に集計しないで、2段階で集計したらいいと思います。 D |E 佐藤|=SUMIF(A:A,D1,B:B) 田中|=SUMIF(A:A,D2,B:B) 鈴木|=SUMIF(A:A,D3,B:B) 山口|=SUMIF(A:A,D4,B:B) 山本|=SUMIF(A:A,D5,B:B) 佐藤|=SUMIF(A:A,D6,B:B) 川口|=SUMIF(A:A,D7,B:B) : : で、最終的な集計の欄に =E1 + E3 + E4 + ・・・ とすれば、誰と誰をまとめたかが確認しやすいと思います。
お礼
おおっ!! こんな簡単に出来るなんて・・・ご回答ありがとうございます! 最初回答文章だけ見ててさっぱり意味がわからなかったので 実際にやってみました! A:AでAの行が全部選べるということにもビックリです! そして・・・そうか2段階の集計をするなんて思いつきもしませんでした。 ありがとうございました。
お礼
もともとシートを別にして合計を出す予定だったので 参考になります! これもまた違う関数なのですね! 色々使い分けてみます! ありがとうございます。