- ベストアンサー
SUMPRODUCT関数の引数
お世話になります。 表題の件で ご相談が御座います。 通常のSUMPRODUCTであれば((範囲=条件)*1)という引数になるのでしょうか? この「条件」の所で複数のセル範囲を条件として選択することは不可能でしょうか? 例えば「りんご」という商品にAランクBランクCランクのランク付けがあって、それは1つの表にまとまってます。 (ランクは全部違うアルファベットで実際には数字が入っております「A1」「B1」等) りんご 「数」 りんご A 北海道 C ばなな 「数」 B 青森 E もも 「数」 C 仙台 G ばなな D E F (この「数」の所に配列数式等で数値を反映させたいと考えております) 全部で表は3つ用意してますが 2つめの表では「どこに何ランクの商品を届けるか」がまとめられているとしまして 3つめの表では「各商品をいくつ出荷したか」を表現したいと考えた時に何とか 配列数式等で、1つのセルに数式を入れるだけで表現出来ないかと考えていたのですが 色々考えている最中に混乱してきました。 (表題の関数を選んだ理由は色々調べて「一番近いかな?」と思っただけなので他にいい関数があったらご教示ください) どなたか ご存知の方がいらっしゃいましたら宜しくお願い致します。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
ごめんなさい。品名を直接書いて比較しますから わざわざ数える必要はなかったですね。 リンゴなら3文字と決まっていますし、ももなら2文字ですから 結果少し数式も短くなって、さらに品名の後ろの記号の桁数も 関係なくなって。 リンゴなら =SUM(IF(LEFT(A1:A4,3)="リンゴ",1,0)) ももなら =SUM(IF(LEFT(A1:A4,2)="もも",1,0)) これをそれぞれ配列にして下さい。 {=SUM(IF(LEFT(A1:A4,3)="リンゴ",1,0))} {=SUM(IF(LEFT(A1:A4,2)="もも",1,0))} と推測ですからもしかしたら範囲の事を勘違いしてるかも?^^;
その他の回答 (6)
- suekun
- ベストアンサー率25% (369/1454)
数式を短くですか・・・・^^; SUMPRODUCTを使っても条件が複数ある場合は、その複数分の 条件の書き出しが必要です。 ですが、もし品名の後の記号もしくは数時に規則性があるなら つまり記号・数字の桁数が全て統一されていれば短くは出来ます。 リンゴAだとしたら、文字列操作関数でリンゴだけ抜き出して それを条件にする。 A1セルに対象があるなら、=LEFT(A1,LEN(A1)-1) 左から必要文字数を抜き出す。文字数は全体の文字数を数えてから 記号分(Aなら1文字)マイナスして抜き出す。 これをIF関数に入れて、抜き出した文字がリンゴになれば 数字の1を加える、リンゴで無ければ0です。 そしてSUMで集計する。 これをつなげて配列にしてしまう。 集計したい範囲がA1からA4だったと仮定したなら、 =SUM(IF(LEFT(A1:A4,LEN(A1:A4)-1)="リンゴ",1,0)) 配列にするので、ShiftとCtrlを押しながらEnterを押して確定 すると{}付きで {=SUM(IF(LEFT(A1:A4,LEN(A1:A4)-1)="リンゴ",1,0))} となれば完成です。
お礼
ご回答ありがとう御座います!!!!! ヤバイっす!!!! 完璧に解決です!!!!!!!! お察しの通りコードには規則性があり、しかも著服しない仕組みになっております!! 「LEN」も「LEFT」も知っているのに こういう所に応用が利かないようではいけませんよね。。。 鳥肌が立つほど見事に完成致しました!!!! ありがとう御座います!!!!!!
- gyouda1114
- ベストアンサー率37% (499/1320)
質問・画像及び補足を読んでも何をなさりたいのかわかりません。 この画像から出荷数を計算する方法と言われても答えようがありません。 数字は一つも示されていないのに出荷数? 具体的数値を提示すれば、回答が得られるかもしれませんが。
お礼
ご対応ありがとう御座います。 添付の表で「配達地域」が47都道府県あったとして 「商品は何が何箇所に配達されたのか」ということを計算させたいです。 宜しくお願いします。
- mu2011
- ベストアンサー率38% (1910/4994)
参考例です。 B1に=SUMPRODUCT(COUNTIF(H:H,OFFSET($E$1,MATCH(A2,D:D,0)-1,,3)))を設定、下方向にコピーしてみて下さい。 但し、商品ランク表のランク数は3固定です。
お礼
ご回答ありがとう御座います。 いただいた数式を貼り付けてやってみたのですが 結果は「0」の羅列でした。。。。 もう 数式もここまで来ると どこに原因があって どこを直したら良いのかが さっぱり不明で断念してしまいました。。。。 (しかもランク数は3個の物もあれば5個の物もあるので。。。) #6さんの回答で解決致しました! お時間いただきましてありがとう御座いました!
- suekun
- ベストアンサー率25% (369/1454)
読解力が乏しくて、いまいち把握出来ませんが・・・ 配列を使うまでもなく、COUNTIFで間に合いませんか? 例えば、リンゴA1 を数えたいなら、そのまま範囲の中に リンゴA1がいくつあるか?ですし、 もしくはリンゴと名前がつけば、A1もB1もC1もすべて数えたいなら このCOUNTIFを+で結んで合計するだけです。 =COUNTIF(範囲,"リンゴA1")+COUNTIF(範囲,"リンゴB1")+COUNTIF(範囲,"リンゴC1") 逆に範囲が別れているなら、 =COUNTIF(A範囲,"リンゴ")+COUNTIF(B範囲,"リンゴ")+COUNTIF(C範囲,"リンゴ") バージョンが2007なんかでしたら、COUNTIFS なんて便利な物もあります。 PS:配列を覚えたいなら参考アドレス乗せておきます。 日経PCにて芳坂さんの講座です。 http://pc.nikkeibp.co.jp/pc21/special/hr/
お礼
ご回答ありがとう御座います。 >読解力が乏しくて、いまいち把握出来ませんが・・・ いえ、suekunさんが悪いのではなく 悪いのは自分であることは#1さん#2さんのコメントからも判明しております。。。 確かにおっしゃる通り=COUNTIF &「+」での足し算で解決出来ました! (ただ条件が5個も6個もあると数式が異常に長いです。。。。T T) >日経PCにて芳坂さんの講座です。 恥ずかしながら、ご教示いただいたサイトは確認済みです。。。。 (みながらやるようにしていますが。。。) バージョンは2003なので「数式が短くなる方法」が お分かりになれば 再度 ご教示いただけませんでしょうか。 お忙しい中、大変恐縮では御座いますが 何卒 宜しくお願い致します。
- A88No8
- ベストアンサー率52% (836/1606)
こんにちは SUMPRODUCT関数を勉強中です。 質問者さんが何をしたいのかイマイチ理解できません。 基本的に質問者さんの提示された書法ですと「絞り込みで計数」の目的になると思います。 これは、一枚の大きな表から複数の条件で絞り込んで数をカウントするということですが、当てはまりますか?(言い換えるとフィルターで複数の列を条件付けて絞り込んで得られた表示結果をカウントすると同じ)。
お礼
迅速にご対応いただきまして誠にありがとう御座います。 >(言い換えるとフィルターで複数の列を条件付けて絞り込んで得られた表示結果をカウントすると同じ)。 そうですね!そんな感じですね! フィルタで「りんご」を抽出したら「りんご」のAと「りんご」のBと「りんご」のCと全部出て来て その数を数える。みたいな感じのことを1つの表にまとまるようにしたいです。 いまさらですが 画像を添付致しましたので ご確認いただけますでしょうか。 お忙しい中 大変恐縮では御座いますが 宜しくお願い致します。
- sige1701
- ベストアンサー率28% (74/260)
どのような表でしょう 集計の条件はどの様になっていますか どこにどの様な結果を望みますか 何も、回答者に希望することが伝わってきません。 もう一度整理しましょう
お礼
迅速にご対応いただきまして誠にありがとう御座います。 やはり分かりづらいですか。。。 見づらいかも知れませんが画像を添付致しましたので ご確認いただけますでしょうか。 「商品ランク」が「条件表」のような形で(真ん中) 「配達地域」に配達するもののコードのようなもの(全コード重複なし)を入力。(右の表) で、左の表に「結局 どの商品を何個出荷したんだ?」というのを表現させたいのです。 お忙しい中、大変恐縮では御座いますが 宜しくお願い致します。
お礼
何度もありがとう御座います。 実は「コード」は3桁のアルファベットと1桁の数字で構成されていて 全部で30通りぐらいなので確実に重複することはなく前回いただいた数式で 完璧に完成致しました!! 本当は ポイントを両方とも付けて差し上げたい所なのですが 同じ人に両方付けることは出来ないので20ポイントでご了承ください。 (そもそも たかがポイントですが。。。) 何にしろ 完璧に完成して「超スッキリ!!!!!」です!!!! 本当にありがとう御座いました!!!!!!!