ID非公開

2021/10/12 21:19

55回答

至急!Excelの関数を教えてください!

画像

Excel | Office系ソフトウェア147閲覧xmlns="http://www.w3.org/2000/svg">250

ベストアンサー

0
画像

ThanksImg質問者からのお礼コメント

できました!ありがとうございます!

お礼日時:10/20 6:47

その他の回答(4件)

0

◆このケースならば、 1)G2=IF(SUMIF(A:A,F2,C:C),SUMIF(A:A,F2,C:C),"") 2)表示形式を「日付」にして、下にコピー

画像

◆もしも、このようならば、 G2=IFERROR(INDEX(C:C,MIN(INDEX(((A$2:A$100=F2)*(B$2:B$100<0)=0)*10^10+ROW($2:$100),))),"") ★表示形式を「日付」にして、下にコピー

画像
0

本題からは脱線しますが、ご質問者がお示しになった表の作成ルールが問題になります。 ご質問者は >C列にある品番が最初に不足する日 と表現しておられますが、これは人が入力するという前提でしょうか? もし、在庫数がプラスの場合、必要数を差引くと、最初にマイナスになるこことはすぐに判るので、その日のみ人が判断してC列に日付を入力するという意図でつくられた表なら、「最初にマイナスになる日のみ人が【G列に】日付を入力」というルールにすれば数式は不要なのではないですか? 私の感覚では、必要量の確定があった日に日付と在庫数-必要数を計算して入力するだけ(単純に日付と計算結果の入力だけで、何も判断しない)という事務的な処理の方が普通なのではないかと思ってしまいました。つまりC列の全行に日付が入力されているのではないかと感じた訳です。 という疑問はあるものの、「C列には品番が最初に不足する日以外の日付は入力されていない」という前提なら、kabuto_yhさんのお示しになった数式 =IF(SUMIF(A:A,F2,C:C)=0,"",SUMIF(A:A,F2,C:C))・・・① をG2に記述して下方向へコピーが最も簡単だと思います。 これをさらに以下のように短くできます。 =IFERROR(1/(1/SUMIF(A:A,F2,C:C)),"")・・・➁ そうではなく、「必要量の確定があった日に日付と在庫数-必要数を計算して入力するだけ」という表の場合、同じ品番に複数の日付が入力されていることになりますのので、日付を合計する数式である①➁の数式は使用できません。 この場合は、とりあえず1000行程度まで入力されてと仮定して、 mik********さんのお示しになった、 =IFERROR(INDEX($C$2:$C$1000,MIN(IF(($A$2:$A$1000=F3)*($B$2:$B$1000<0),ROW($B$2:$B$1000)))-1),"")・・・③ という数式をG2に配列数式で記述して下方向へコピーという方法が使えます。 配列数式を避けたいのであれば、とりあえず1000行程度まで入力されてと仮定して、 =IFERROR(INDEX(C:C,AGGREGATE(15,6,ROW($A$1:$A$1000)/($A$1:$A$1000=F2)/($B$1:$B$1000<0),1)),"")・・・④ という数式をG2に記述して下方向へコピーでもOKだと思います

画像
0

範囲 A1:C1000 を選択⇒“上端行”だけにチェック残し⇒[OK]⇒次式を配列(CSE)数式として入力したセル G2 のフィルハンドルを「エイヤッ!」とダブルクリック =IFERROR(INDEX(不足日,MIN(IF((品番=F2)*(在庫数<0),ROW(在庫数)))-1),"") オ・シ・マ・イ

画像

ID非公開

質問者2021/10/12 22:33

ありがとうございます! 回答いただいた通りに名前の定義をして、関数を入れて試してみたのですが、うまくいきません…

0

MIN関数 G2セルに入力し、配列数式として確定後、下方にコピーしてください。 =IF(MIN((($A$2:$A$14<>F2)+($B$2:$B$14>0)+($C$2:$C$14<=0))*10^5+$C$2:$C$14)>MAX($C$2:$C$14),"",MIN((($A$2:$A$14<>F2)+($B$2:$B$14>0)+($C$2:$C$14<=0))*10^5+$C$2:$C$14))

ID非公開

質問者2021/10/12 22:12

ありがとうございます! 早速試してみたのですが、上手くいきませんでした… 何度も見直したのですが…