[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『配列数式のSUMからSUMIFSへ変換』(みーみ)
発注日から納品日前日までの間納品待ち数を表示させ続けたく、配列数式では表示できました。
これをSUMIFSにできたらいいなと思ったのですがうまくいきません。
読みにくい質問で申し訳ないのですが、お知恵を拝借願えませんか。
発注表シートの A列→納品日&商品CD (別セルの納品日と商品CDを参照して&で繋げてる)
B列→発注日&商品CD (別セルの発注日と商品CDを参照して&で繋げてる)
I列→発注数
作業表シートの E列→日付&商品CD (別セルの日付と商品CDを参照して&で繋げてる)
F3 →商品CD
例)2016/4/2発注・2016/4/4納品の場合 この「納品待」に入れる計算式です。
発注数 納品待 納品数 在庫 2016/4/1 0 0 0 5 2016/4/2 10 10 0 5 2016/4/3 0 10 0 5 2016/4/4 0 0 10 15 ・ ・
【OK】={SUM(IF((発注表!$B$12:$B$1000<=E55)*(発注表!$A$12:$A$1000>E55)*(発注表!$E$12:$E$1000=F$3),発注表!$I$12:$I$1000,""))}
【NG】=SUMIFS(発注表!$I$12:$I$1000,発注表!$B$12:$B$1000,"<="&E52,発注表!$A$12:$A$1000,">"&E55,発注表!$E$12:$E$1000,F$3)
< 使用 Excel:Excel2007、使用 OS:Windows7 >
>"<="&E52 の部分、元の式からこうなっているのか掲示板に書き込む際に間違えたのかどちらだろうか? もし、元の式からこうであればE55の間違いでは?
なお、元の式は {=SUM((発注表!$B$12:$B$1000<=E55)*(発注表!$A$12:$A$1000>E55)*(発注表!$E$12:$E$1000=F$3)*発注表!$I$12:$I$1000)} または =SUMPRODUCT((発注表!$B$12:$B$1000<=E55)*(発注表!$A$12:$A$1000>E55)*(発注表!$E$12:$E$1000=F$3)*発注表!$I$12:$I$1000) とできる。
あとこういう質問の場合は式の結果がこうなるはずがこうなってしまうと「どのように」うまくいかないかを書いてくれ。 (ねむねむ) 2016/06/20(月) 14:20
ねむねむさん ご指摘の通り、書き込む際に間違えました。E55の表記間違いです。大変失礼しました。
元の式はIFも省けてしまうのですね。関数の知識が浅くてお恥ずかしいです。ありがとうございます。
SUMIFSの式は、4/2で計算しても「0」になります。発注数10が拾えないのです。
SUMIFSにしたいと思ったのは、配列よりは処理が軽くなるかなという単純な発想です。
ファイルがとにかく重い(商品CD多数の為)ので、少しでも軽く・・という素人考えでして。
教えていただいたSUMPRODUCTでも軽くはなるでしょうか。
ご助力、お願いいたします。
(みーみ) 2016/06/20(月) 14:51
うーん、どうも >納品日&商品CD >発注日&商品CD >日付&商品CD が怪しそうだが。
できれば納品日と商品CDをくっつけずに =SUMIFS(発注数範囲,発注日列,"<="&日付列,納品日列,">"&日付列,商品コード列,F$3) とはできないだろうか?
あとSUMPRODUCT関数はShift+CtrlEnterがいらないだけでSUM関数での式とほぼ変わらないと思う。 ただし、IF関数を使っているものよりは軽くなるのではないかと思うが実際に試さないと本当に軽いか、また軽いとしても どれだけ軽いかはわからない。 (ねむねむ) 2016/06/20(月) 15:17
灯台もと暗しでした、まぬけすぎる。
おっしゃる通り、最後に商品CDを条件にいれてるんだから、納品日と商品CDくっつけなくても問題ないですよね。
似たような目的の既存の計算式をもってきて試行錯誤していたのもので、段々思い込みが激しくなっていったようです。お恥ずかしい。ごめんなさい。
無事、SUMIFSでひっぱってこれました。
引き継ぎ無しでファイルだけ渡されて、一から構築のため、職場で誰にも相談できませんでした。
本当に助かりました。ありがとうございます。
また何かあれば、ご助力願います!
(みーみ) 2016/06/20(月) 15:37
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.