A:Bのように、2つの列を持つテーブルがあります。列Aのすべての異なる値の個別のリスト(列D)があります。列Dの各ターゲット値について、列Aがターゲットと一致するすべての行から、列Bの最小値と最大値を検索します。たとえば、データが次のようになっている場合、
col A col B col D
1 7.5 1.00 7.5 1.00 1.20
2 7.5 1.04 8 1.08 1.45
3 7.5 1.08 8.5 1.17 1.83
4 7.5 1.15
5 7.5 1.20
6 8 1.08
7 8 1.13
8 8 1.20
9 8 1.29
10 8 1.38
11 8 1.43
12 8 1.45
13 8.5 1.17
14 8.5 1.22
15 8.5 1.26
16 8.5 1.35
17 8.5 1.42
18 8.5 1.51
19 8.5 1.58
20 8.5 1.64
21 8.5 1.69
22 8.5 1.74
23 8.5 1.79
24 8.5 1.83
最後の2つの列(最小と最大)を返す数式が必要です。
ノート:
最後の行を超える範囲を参照する場合でも機能するものがあると便利です(たとえば、数式で$A$8:$A$50
を使用します。必ずしも$A$8:$A$24
を使用する必要はありません)。新しいデータを下部に追加できます。列A、Bおよびすべてが自動的に更新されます。
列A、Bには実際には他のデータ、ヘッダーなどが含まれるため、$A:$A
のような列全体への参照では一部の式が機能しない可能性があります。
[〜#〜]編集[〜#〜]:類似/関連する投稿をいくつか見つけました
わたしにはできる。
最小:
=MIN(IF(($A$1:$A$50=D1),($B$1:$B$50)))
最大の場合:
=MAX(IF(($A$1:$A$50=D1),($B$1:$B$50)))
これは配列数式であるため、次を押す必要があることに注意してください。 CTRL+SHIFT+ENTER
INDEX
関数は、MAX
とMIN
結果。
疑似MAXIF式は少し簡単なので、ここから始めます。
=MAX(INDEX(B:B*(A:A=D1), , ))
Excelは、数学的に使用される場合、ブールのTRUEステートメントを1として扱い、FALSEをとして扱います。列Bの値に1を乗算すると、値は変更されません。 を掛けるとゼロになります。 INDEX
関数は、基準と一致するかどうかに応じて、変更されていない値とゼロの配列をMAX
関数に渡します。結果は、列Aが基準に等しい列Bからの最大値になります。
疑似MINIF式は基本的に、一致しない値を数学的に除外してプロセスを反転させ、MIN
から選択する一致する値のみを残します。
=MIN(INDEX(B:B+(A:A<>D1)*1E+99, , ))
繰り返しますが、TRUEは1で、FALSEはですが、今回は1E + 99を追加するために使用しています(a 1の後に99ゼロ。これは、何もMIN
にならない)から、一致しない値へ。一致する値には×1E + 99が追加されます。これはゼロに相当し、値を変更しません。
私が使用した完全な列セル範囲の参照は、同様の配列数式の場合よりも計算の遅れに悪影響を与えません。
配列数式を使用して、必要な答えを得ることができます。
最小値には、セルE1の数式を使用できます。
{=MIN(IF($A:$A=D1,$B:$B))}
セルF1の数式の最大値は次のとおりです。
{=MAX(IF($A:$A=D1,$B:$B))}
配列数式を入力するには、中かっこ(中かっこ)以外のすべてを入力し、Enterキーを押すときにCtrlキーとShiftキーを押す必要があります。これにより中かっこが追加され、数式は配列数式と見なされます。
入力したら、他の一致する値の数式をコピーできます
配列数式は、すべての組み合わせを計算することによって機能します。 A1の値がD1と同じであるかどうかを計算し、それがB1の値を与える場合、A2の値がD1と同じである場合、B2の値を与えます。これにより、Aの値が一致するB列の値のリスト(または配列)が得られます。次に、MIN/MAXが通常どおりに計算されます。