• ベストアンサー

SUMPRODUCT関数の引数

お世話になります。 表題の件で ご相談が御座います。 通常のSUMPRODUCTであれば((範囲=条件)*1)という引数になるのでしょうか? この「条件」の所で複数のセル範囲を条件として選択することは不可能でしょうか? 例えば「りんご」という商品にAランクBランクCランクのランク付けがあって、それは1つの表にまとまってます。 (ランクは全部違うアルファベットで実際には数字が入っております「A1」「B1」等) りんご 「数」   りんご A   北海道 C       ばなな 「数」       B   青森  E もも  「数」       C   仙台  G           ばなな D               E               F (この「数」の所に配列数式等で数値を反映させたいと考えております) 全部で表は3つ用意してますが 2つめの表では「どこに何ランクの商品を届けるか」がまとめられているとしまして 3つめの表では「各商品をいくつ出荷したか」を表現したいと考えた時に何とか 配列数式等で、1つのセルに数式を入れるだけで表現出来ないかと考えていたのですが 色々考えている最中に混乱してきました。 (表題の関数を選んだ理由は色々調べて「一番近いかな?」と思っただけなので他にいい関数があったらご教示ください) どなたか ご存知の方がいらっしゃいましたら宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • suekun
  • ベストアンサー率25% (369/1454)
回答No.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))} と推測ですからもしかしたら範囲の事を勘違いしてるかも?^^;

ookami1969
質問者

お礼

何度もありがとう御座います。 実は「コード」は3桁のアルファベットと1桁の数字で構成されていて 全部で30通りぐらいなので確実に重複することはなく前回いただいた数式で 完璧に完成致しました!! 本当は ポイントを両方とも付けて差し上げたい所なのですが 同じ人に両方付けることは出来ないので20ポイントでご了承ください。 (そもそも たかがポイントですが。。。) 何にしろ 完璧に完成して「超スッキリ!!!!!」です!!!! 本当にありがとう御座いました!!!!!!!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

  • suekun
  • ベストアンサー率25% (369/1454)
回答No.6

数式を短くですか・・・・^^; 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))} となれば完成です。

ookami1969
質問者

お礼

ご回答ありがとう御座います!!!!! ヤバイっす!!!! 完璧に解決です!!!!!!!! お察しの通りコードには規則性があり、しかも著服しない仕組みになっております!! 「LEN」も「LEFT」も知っているのに こういう所に応用が利かないようではいけませんよね。。。 鳥肌が立つほど見事に完成致しました!!!! ありがとう御座います!!!!!!

全文を見る
すると、全ての回答が全文表示されます。
  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.5

質問・画像及び補足を読んでも何をなさりたいのかわかりません。 この画像から出荷数を計算する方法と言われても答えようがありません。 数字は一つも示されていないのに出荷数? 具体的数値を提示すれば、回答が得られるかもしれませんが。

ookami1969
質問者

お礼

ご対応ありがとう御座います。 添付の表で「配達地域」が47都道府県あったとして 「商品は何が何箇所に配達されたのか」ということを計算させたいです。 宜しくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

参考例です。 B1に=SUMPRODUCT(COUNTIF(H:H,OFFSET($E$1,MATCH(A2,D:D,0)-1,,3)))を設定、下方向にコピーしてみて下さい。 但し、商品ランク表のランク数は3固定です。

ookami1969
質問者

お礼

ご回答ありがとう御座います。 いただいた数式を貼り付けてやってみたのですが 結果は「0」の羅列でした。。。。 もう 数式もここまで来ると どこに原因があって どこを直したら良いのかが さっぱり不明で断念してしまいました。。。。 (しかもランク数は3個の物もあれば5個の物もあるので。。。) #6さんの回答で解決致しました! お時間いただきましてありがとう御座いました!

全文を見る
すると、全ての回答が全文表示されます。
  • suekun
  • ベストアンサー率25% (369/1454)
回答No.3

読解力が乏しくて、いまいち把握出来ませんが・・・ 配列を使うまでもなく、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/

ookami1969
質問者

お礼

ご回答ありがとう御座います。 >読解力が乏しくて、いまいち把握出来ませんが・・・ いえ、suekunさんが悪いのではなく 悪いのは自分であることは#1さん#2さんのコメントからも判明しております。。。 確かにおっしゃる通り=COUNTIF &「+」での足し算で解決出来ました! (ただ条件が5個も6個もあると数式が異常に長いです。。。。T T) >日経PCにて芳坂さんの講座です。 恥ずかしながら、ご教示いただいたサイトは確認済みです。。。。 (みながらやるようにしていますが。。。) バージョンは2003なので「数式が短くなる方法」が お分かりになれば 再度 ご教示いただけませんでしょうか。 お忙しい中、大変恐縮では御座いますが 何卒 宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • A88No8
  • ベストアンサー率52% (834/1603)
回答No.2

こんにちは SUMPRODUCT関数を勉強中です。 質問者さんが何をしたいのかイマイチ理解できません。 基本的に質問者さんの提示された書法ですと「絞り込みで計数」の目的になると思います。 これは、一枚の大きな表から複数の条件で絞り込んで数をカウントするということですが、当てはまりますか?(言い換えるとフィルターで複数の列を条件付けて絞り込んで得られた表示結果をカウントすると同じ)。

ookami1969
質問者

お礼

迅速にご対応いただきまして誠にありがとう御座います。 >(言い換えるとフィルターで複数の列を条件付けて絞り込んで得られた表示結果をカウントすると同じ)。 そうですね!そんな感じですね! フィルタで「りんご」を抽出したら「りんご」のAと「りんご」のBと「りんご」のCと全部出て来て その数を数える。みたいな感じのことを1つの表にまとまるようにしたいです。 いまさらですが 画像を添付致しましたので ご確認いただけますでしょうか。 お忙しい中 大変恐縮では御座いますが 宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • sige1701
  • ベストアンサー率28% (74/260)
回答No.1

どのような表でしょう 集計の条件はどの様になっていますか どこにどの様な結果を望みますか 何も、回答者に希望することが伝わってきません。 もう一度整理しましょう

ookami1969
質問者

お礼

迅速にご対応いただきまして誠にありがとう御座います。 やはり分かりづらいですか。。。 見づらいかも知れませんが画像を添付致しましたので ご確認いただけますでしょうか。 「商品ランク」が「条件表」のような形で(真ん中) 「配達地域」に配達するもののコードのようなもの(全コード重複なし)を入力。(右の表) で、左の表に「結局 どの商品を何個出荷したんだ?」というのを表現させたいのです。 お忙しい中、大変恐縮では御座いますが 宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • COUNTIFやSUMPRODUCTの関数について

    画像にあるようなExcelの表について 下記の関数を使って出来たことを、もっとB22~C24(セル)を入力せず出来る関数はないのか 教えて頂きたい。また、以下のところに今使っている関数と、求めたいことについて記載しました。  SUMPRODUCT(($A$2:$A$15=$B$22)*(C2:C15=$C$22))の関数を使って   1.C17セルに表示された個数は、A列の2~15の中のAランクの人の「1」の入力された     ところだけのを表すことになっている。  以下もC列のB・Cことである。   2.このことを踏まえて、BランクはC18に「0」が入る。(1の入力されたセルがないため)   3.Cランクは、「長島」に「1」が入力されているので、C19には「1」が入いる。   4.イ~オ列のD17~G19まで同じように表示させてある。  なお、あくまでもア~オの全体の個数の中のA・B・Cのランクの個数をカウントしたいのです。   

  • Arrayformula関数について

    Googleスプレッドシートで、Arrayformula関数とsumifs関数を用いて計算をしたいのですが、エラーになってしまってうまくいきません。どなたか教えていただけると助かります。     (1)表              (2)表  A   B    C       A   B   C 1社名 商品   売上     1社名  商品  売上 2A社 りんご  100     2A社 りんご  100 3B社 りんご  100     3A社 バナナ   70 4A社 バナナ   70   ⇒  4A社 メロン    0 5C社 メロン  200     5    計   170 6C社 バナナ   70      6B社 りんご  300 7A社 りんご  200      7B社  バナナ    0                 8B社 メロン    0                 9    計     300                 10C社 りんご    0                 11C社 バナナ   70                 12C社 メロン  200                 13    計    270 (1)表のデータから(2)表を作るのですが、社名と商品の組合せでsumifs関数で(2)表の条件を絞り込み、売上額を集計しています。そしてさらに各社ごとに小計を求め、それぞれの会社ごとの集計を入れています。 それまでは、(2)表のA列・B列は固定で、C列の売上については =SUMIFS('(1)表'!$C$2:$C$7,'(1)表'!$A$2:$A$7,$A2,'(1)表'!$B$2:$B$7,$B2)とし、 小計の欄(C5)には =SUM(C2:C4)と入れて、それを最下段までコピーしておりました。 今それだとレスポンスが非常に遅くなるために、ARRAYFORMULA関数を使って、時間削減を図りたく考えているのですが、難点が二つあり、ARRAYFORMULAとSUMIFSの組合せがうまくいかないのと、途中の小計がどうしても「循環参照しています」となってしまうことです。 色々調べておるのですが、どうしてもうまくいかず、お手上げ状態です。 どなたか詳しい方いらっしゃったら教えていただきたいです。 よろしくお願いします。

  • Excelの関数について

    Excelで下記条件を満たすものを求める場合の関数を教えてください。 セル     A       B      2011/4/1    リンゴ      2011/4/25   バナナ      2011/4/26   リンゴ      2011/5/1    キウイ      2011/5/3    バナナ と入力がある表で、4月に該当する「リンゴ」という名前の数を求めたいです。 上記の場合、4月のリンゴの数は「2」になります。 COUNTIF、もしくはSUMPRODUCTを使うのでしょうか? 毎月ごとの、果物別の数を求めていきます。 以上、よろしくお願いいたします。       

  • Excel)SUMPRODUCT関数で・・・

    今まで困ったときにこちらで色々調べて答えを見出していた者です。 いつも参考にさせていただきありがとうございます。 ついに、うまいこと調べたいことが見つけ出せなくなってしまったため質問をさせてください。 ■基データ    A     B    C      D    ――――――――――――――――――――― 1 氏名   形式   内容    金額 2 やまだ   A   りんご   50,000 3 さとう   B   バナナ    8,000 4 やまだ  (A)  みかん  ▲30,000 5 すずき   B   もも     6,000 6 たなか   C   ぶどう    5,000 7 さとう  (B)  キウイ   ▲4,000 というデータがあるとします。(明細みたいなもの) これを氏名(A列)と形式(B)列の条件で金額(D列)の合計を 別の表(集計表みたいなもの)に結果を出したいと思っています。 以前こちらで調べて、「SUMPRODUCT」関数が適していると思い 試してみました。そして結果も得られていました。 ですが、条件がちょっと複雑になってしまい、その関数での 対応が可能かどうかお知恵をお貸しいただきたいと思います。 または、別の方法(ピボットテーブルは対象外とさせてください) がありましたらご教示下さい。よろしくおねがいします。 【今までの条件設定(結果表示したいセルへの入力式)】  <氏名がやまだで形式がAの場合の金額の合計>  =SUMPRODUCT(($A$2:$A$7="やまだ")*($B$2:$B$7="A"),$D$2:$D$7)   ※さとう・すずき・たなかもそれぞれ求めます。   ※形式B・Cもそれぞれ求めます。(そして当初は形式に「()」の表示はありませんでした。) 【条件の変更によって結果を求めたいこと】  ■氏名別は変わらず、形式は「()」のあるなし関わらず   [Aも(A)も同じ扱い]として金額の合計を求めたい。   上記の場合ですと、「やまだのA・(A)の合計値」と   「さとうのB・(B)の合計値」を算出する数式を知りたいです。 Bookの特徴ですが、   ・結果を出させるセルは同一シート内にあり、また印刷時は同一用紙に表示させる  ・結果を出させるセルは見栄えの問題で結合させてある という具合です。。。 何かよい方法はありますでしょうか? 宜しくお願いいたします。

  • エクセル関数で教えて下さい

    本店で「りんご」を100円「みかん」を200円「いちご」を300円「バナナ」を400円で売っています。 支店は「りんご」を500円「みかん」を600円で売っていて「いちご」「バナナ」は売っていません。A1セルに本店か支店を入力、B1セルに商品を入力するとC1セルに値段が出るようにしたいのですが C1セルにどのような関数を使えばいいのでしょうか?

  • エクセルの関数について

      Å      B       C 1 Aさん    りんご     0 2        バナナ      2 3        パイナップル  0 4 Bさん    りんご     2 5        バナナ      4 6        パイナップル  2 7 Cさん    りんご     0 8        バナナ      0 9        パイナップル  5 10Dさん    りんご     3 11       バナナ      2 12       パイナップル  4 というエクセルの表で、りんご、バナナ、パイナップルをそれぞれ何人が買ったかを出したいのですがどうすればよいか教えて下さい。(この表の場合、りんご2、バナナ3、パイナップル3と出てくるようにしたいです。)商品の並び方は全員一緒です。よろしくお願いいたします。

  • エクセル SUMPRODUCT関数について教えてください

    エクセルで作成した表から ○○かつ●●のデータ個数を求めたく、 SUMPRODUCT関数を こちらで調べておりましたが どうしても解決しない部分があります。 どうぞ よろしくお願いいたします。 下記8桁数字は、日付です。 カウントしたい数は、B列(終了)が、A1セルに入力された年月かつ、区分(C列)が「A」の数です。 =SUMPRODUCT((LEFT(B2:B100,6)=A1)*(C2:C100="A")) こちらで、『B列=A1セル かつ C列="A"』のみのカウントは出来たのですが、 終了延長(D列)が空欄でない場合は、D列日付データの方をカウントする。 早期終了(E列)が空欄でない場合は、D列・B列よりも E列を優先し、カウントする。という条件を付けたいのですが、 Sheet1 A1セルに「200810(数を調べたい年月を入力)」 (開始)  (終了)     (区分)  (終了延長)  (早期終了)  A列     B列      C列     D列      E列 20061001   20081001   A    -        - 20070926   20081020   A    -        - 20071102   20081009   A    20081201    - 20080101   20081013   B    -        - 20080208   20081010   A    -        20080210 ・・・ この場合、「2」となるようにです。 IF、OR関数あたりかな と考えておりますが、SUMPRODUCT関数のどの部分で条件付ければ良いか解りません。 説明下手で大変申し訳ございませんが、ご助力いただければ幸いです。 

  • 【SUMPRODUCT】について

    下記リストと条件で価格を算出したいのですが、A列の「7」以外の数字まで反映された値がかえってきてしまいました。適切な関数を使用しているかも不明です。 アドバイスのほどお願いいたしますm( _ _)m --------------------------------------------------------------- セル A列 B列 C列 D列 E列 1 5 A リンゴ店 TEL \100 2 5 B ミカン店 FAX \200 3 7 C リンゴ店 TEL \100 4 7 A ミカン店 FAX \200 5 7 B リンゴ店 TEL \100 6 7 C ミカン店 FAX \200 --------------------------------------------------------------- <条件> A列 「7」 B列 「B」と「C」 C列 「ミカン」を含む D列 「FAX」以外 <作成した数式>(かえってきた値は上の条件とは相反したデータで、恐らくA列の「7」以外の数字も含んでいるようです・・) =SUMPRODUCT((A$2:A$10=7)*(B$2:B$10="B")*(B$2:B$10="C")*(E$1:E$10)) +SUMPRODUCT((A$2:A$10=7)*ISNUMBER(FIND("ミカン",C$1*C$10))*(E$1:E$10))+SUMPRODUCT((A$2:A$10=7)*ISERROR(FIND("FAX",D$1:D$10))*(E$1:E$10)) 以上、質問が長くなってしまい申し訳ありません。 ご教授のほどどうぞ宜しくお願いいたします。

  • excel関数 間違ったデータをピックアップしたい

    列Aの各セルに、みかn、りんご、バナナ、メロンなどと入っていて、列Bの各セルは、"A"~"F"の人気ランクが入っています。 列A   列B   みかん  A りんご  C バナナ  D みかん  A メロン  C 列C以降にはその他の色々なデータが入っていますが、それはさておき、列AとBだけの関係を見ると、みかんは必ず"A"、りんごは必ず"C"というように、果物別の評価は決まっているはずです。ところが、間違って入力されて、ある行ではみかんが"A"で、別の行ではみかんが"C"だったりしたら、調べて正しい方に統一したいのです。 そこで、ひとつの果物に対応する評価が複数あるものをピックアップしたいのですが、どうすればいいでしょうか。そのほかの集計作業に関数を使っているので、これも関数で出来ればいいかなと思うのですが。

  • エクセルのIF関数とVLOOKUP関数について教えてください。

      A B C 1 A1 B1 C1 2 A2 B2 C2 ・ ・ ・ 上記のような表があり、セルX、Yに入力した値が2つの条件に合致した場合、セルZにC列の値を返すような数式を作っています。 たとえば、セルXの値がA1より小さく、かつ、セルYの値がB1より小さい場合にはセルZにC1の値を表示する、という数式を作りたいのです。 (ちなみにAn、Bn、Cnにはそれぞれ数字が入ります) =IF(AND(X<=A1,Y<=B1),C1,IF(AND(X<=A2,Y<=B2),C2,・・・ AND関数を利用してこのように数式を入れると、途中まではうまくいくのですが、引数が多いため途中からエラーが出てしまいます。 (引数の数は10個以上あります) IF関数とVLOOKUPを組み合わせればいいというところまではわかるのですが、どのように条件設定をすればいいのかがわかりません。 エクセル初心者で恐縮ですが、どなたか詳しい方いらっしゃいましたらご回答よろしくお願いいたします。

このQ&Aのポイント
  • 退職した会社に対して未払い残業代を弁護士を通して請求しました。弁護士に未払い残業代を計算してもらったところ、結構な高額となりました。会社が支払いをごねて長期化しそうですが、労働審判や裁判も視野に入れて争う予定です。
  • 退職した会社に未払い残業代を請求する場合、裁判までいった方が弁護士報酬は多くなりますが、取れる額も増える可能性があります。和解では最低8割以上は支払われないと応じる気もありません。
  • 裁判までいった場合で残業代の支払いが認められた場合、付加金や遅延損害金も支払われると思います。和解を申し出た場合は、会社の提案内容によって判断すべきですが、長期化する可能性があれば裁判まで進めることも検討してください。
回答を見る

専門家に質問してみよう