[[20260918112918]] 『SUMPRODUCT VALUE 関数について』(ひさちゃん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『SUMPRODUCT VALUE 関数について』(ひさちゃん)

別表より集計データを作成したいと思っていますが
現在は下記(次月以降受注予定)資料より月別売上実績表を作っています
■C2セルの関数
=SUMPRODUCT((C14:C20=$A2)*VALUE(B14:B20))

[月別売上実績]
 【 A 】  【 B 】   【 C 】
   月    売上    受注済み
2  9月   250,000   250,000
3 10月    0       85,000
4 11月    0       150,000
5 12月    0       0
6  1月    0       12,000
7  2月    0      68,000
8 上期計  250,000   565,000
9 翌期予定      #N/A

[次月以降受注予定]
【 A 】 【 B 】 【 C 】

	金額	検収予定
14 A社	50000	10月
15 B社	35000	10月
16 C社	150000	11月
17 A社	68000	2月
18 A社	39000	3月
19 C社	12000	1月
20 F社	250000	9月

この時、受注予定の3月は翌期になることから
C9セルに18行目の39000が表示されるようにしたいと思っています。
当初
=SUMPRODUCT(($C$14:$C$20<>$A2:A7)*VALUE($B$14:$B$20))
で答えが求められるかなと思っていましたがエラーとなりました。
当社の1期分は
3月〜2月となるので、2027/3/1以降を翌期として合計したいです。
因みに、月別表示は書式設定によって月だけの表示となっていますが
月も検収予定も西暦入力し統一しています。
検証してみた結果
=SUMPRODUCT(($C$14:$C$20<>$A2)*VALUE($B$14:$B$20))
は答えが求められたので<>については間違っていないと思うのですが…。

なんだか見にくい表となってしまいましたが、翌期の集計データが拾えるような関数を教えてください。

< 使用 Excel:unknown、使用 OS:unknown >


 >2027/3/1以降を翌期として合計したいです。 

 なら

 >=SUMPRODUCT(($C$14:$C$20<>$A2:A7)*VALUE($B$14:$B$20)) 
                ↓   
  =SUMPRODUCT(($C$14:$C$20 > A7   )*VALUE($B$14:$B$20)) じゃないですか? 

 VALUE()で括る必要性を感じないですけども‥

(半平太) 2026/09/18(金) 12:51:40


半平太様

=SUMPRODUCT(($C$14:$C$20 > A7 )*VALUE($B$14:$B$20))
ほんとだ…できました。
指定の月以外
ではなく
それ以降
という考え方をすればいいですね。
ありがとうございます。

> VALUE()で括る必要性を感じないですけども‥
については、適正ではないということですか?

(ひさちゃん) 2026/09/18(金) 12:56:40


 書いてからいらないかもって思ったんですが。
 <>の使い方というか配列の処理について疑問が書かれているので、
 非常にわかりにくいexcelの挙動について補足します。

 ・value関数はいらないのか
 value関数は数字(文字列)を数値に変える関数ですが、
 excelの仕様で *(掛け算)や -(引き算)をする場合、
 10進数として扱える数字は自動的に数値として扱われます。
 (+ だけはなぜか、計算が行われないと数字のままですが)
 そのため、今回の数式のように計算に巻き込むのであれば、
 変換するためだけの value は不要です。

 ・<>の使い方(配列と配列の計算)最初に #N/A になったのは、
 条件式 $C$14:$C$20<>$A2:A7 が「1列7行」と「1列6行」という、
 違うサイズ同士を比較していたからです。
 同じ行数の値を上から順番に比較していった結果
 片方が空(データが足りない)の7行目で #N/A になります。
 配列の結果が {TRUE; FALSE; FALSE; TRUE; TRUE; #N/A} のようになるため、
 全体が #N/A に引っ張られていました。

 ・なぜ > A7 だとエラーにならないのか
 そう聞くと、「じゃあ > A7 に変えたら、今度は7行と1行の比較になるから#N/A になるのでは?」
 と思うかもしれません。
 ここがexcelの特殊な挙動で、比較する片方の「行数」や「列数」が「1」の場合、
 相手のサイズに合わせて自動的に中身がコピーされて補完される 
 という仕様があります。そのため、> A7 と書くと
 内部的には「7行すべてが A7 の値が入った配列」
 に拡張されて比較されるため エラーが出なくなります。

 ただ、仮に最初の数式が同じ行数同士でエラーを回避できていたとしても、
 期待通りの「どれとも一致しない」という全体の比較にはならず、
 目的の値にはなりません。
 間違った数字のままスルーしてしまう危険があったので
 エラーが出てよかったかもですね。
(ちくわ) 2026/09/18(金) 13:45:40

 Microsoft365でしょうから、
 =SUM(FILTER(B14:B20,C14:C20>A7))
 と書けますね。
(xyz) 2026/09/18(金) 21:27:06

 SUMIFで
 C2:=SUMIF($C$14:$C$20,A2,$B$14:$B$20)
 C9:=SUMIF(C14:C20,">"&A7,B14:B20)
 と書けますね。

 14行目以下の金額は数値でしょう?
 なぜVALUEが必要だと思ったんですか?
(しんぷる) 2026/09/19(土) 09:29:16

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.