私は Excel を使用して、アイテムのリスト (列 D にアイテム名) を記録し、そのアイテムの製造にかかった時間を列 G に記録しています。
私はINDEX MATCHを使って、今週(または選択した2つの日付の間)の最もパフォーマンスの悪い製品を検索しています。
=MAXIFS($G:$G,$E:$E,">="&O67,$E:$E,"<"&O68)
これは、セル O67 と O68 の 2 つの日付間の最長の製造期間を返します。次に、製造に最も時間がかかったアイテムの名前 (列 D) を返します。
私はもう試した
=INDEX(D:F,MATCH(O69,G:G,0),1)
しかし、これは記録された時間を調べて、その時間がリストに最初に現れた機会を返すだけです。リストはかなり長いので、多くの時間が繰り返されるので、これは適切な方法ではありません。私は、O67 と O68 の 2 つの日付を参照して、これらの間で INDEX MATCH を探すだけにしたいのです。
おそらく配列を使用するのがよい方法だと思いますが、私はこれまで配列を使ったことがないので、これがよい方法であれば、理解できるように一緒にゆっくり進めてもらえませんか。
前もって感謝します!
答え1
これを試すといい配列式はEnterではなくCtrl+ Shift+を使用して入力されますEnter:
=INDEX($D$2:$D$1000,MATCH(1,($G$2:$G$1000= (ABSOLUTE REFERENCE TO MAXIFS CELL)
*($E$2:$E$1000>=$O$67)
*($E$2:$E$1000<$O$68),0))
配列数式では、列全体ではなく、適切に選択された範囲の参照を使用する方がパフォーマンスの点で優れています。列全体を選択すると、配列数式は実際には使用されていない場合でもすべての行で動作し、ブックが遅くなるためです。
テストするための Excel 2019 を持っていません。また、Excel 365 では配列数式は表示することはできますが、入力することはできません。
答え2
この問題は、開始日と終了日、およびその数などのいくつかのヘルパー セルを使用して解決できます。
この数式を入力すると、セルの開始日と終了日のカウントが取得されます
E193
。=SUMPRODUCT(($C$179:$C$190>=C193)*($C$179:$C$190<=D193))
この配列(CSE)数式をセルに入力し
B195
、Ctrl+Shift+Enterそして埋めます。
{=IF(ROWS(B$195:B195)>$E$193,"",INDEX(B$179:B$190,SMALL(IF(($C$179:$C$190>=$C$193)*($C$179:$C$190<=$D$193),ROW(B$179:B$190)-ROW($B$179)+1),ROWS(B$195:B195))))}
注意
- 開始日と終了日のカウントは
IFERROR
関数の使用を回避し、製品のリストを回答として正当化し、カウント値と等しくする必要があります。
必要に応じて数式内のセル参照を調整します。