2

Excel で特殊な検索式を作成するのに問題があります。

通常、私は VLOOKUP() を使用しますが、別の列で並べ替えられたテーブルから列内の数値を検索したいという落とし穴があります。Vlookup は、並べ替えられた列自体でのみ検索できます。

シナリオは次のとおりです。

  • テーブルは列 B で昇順に並べ替えられます。
  • 特定のパラメーター P について、上から下に向かって、そのパラメーター P 以上の最初の A 値を見つけたいと思います。
  • 次に、関数は対応する B 値を返す必要があります。

表 (一部を除いて、完全な表ははるかに大きい):

    A      B
1  640    4.5
2  1600   7.0
3  640    7.5
4  1280   12.0
5  1920   16.5
6  2560   21.0
7  1600   19.8
8  3200   26.8
9  4800   33.8

たとえば、パラメータが 1100 だとすると、数式で 7.0 を返したいとします。これは、列 A を下方向に検索したときに 1100 以上の最初のエントリが 1600 であり、対応する B 値が 7.0 であるためです。

配列数式(「ctrl-shift-enter 数式」とも呼ばれます)で運試しをして、次のようなものを作成しました。

{=INDEX(table;
        MATCH(MIN(IF(columnA-$C1>=0;columnA;FALSE));
              IF(columnA-$C1>=0;columnA;FALSE);
              0);
        2)}

私のパラメータを含むC1 、範囲A1: B9、および列Aの範囲B1:B9

しかし、それは機能しません (上記の例では、MIN() 関数によって 1280 が選択されているため、12.0 が返されます)。

使用したくない解決策: テーブルを通過する VBA を書くことはできますが、それはしたくありません (迷惑な「マクロ警告」と、Excel on Mac が VBA をサポートしていないためです)。 )

手がかりはありますか?

4

3 に答える 3

4

使用できます

{=INDEX(B1:B9,MIN(IF(A1:A9>C1,ROW(A1:A9),FALSE)))}

私は英語の英国の言語設定を使用していることに注意してください-ロケールに合わせて式を変更し、コンマをセミコロンに置き換えるなどする必要があります.

于 2009-12-15T15:06:36.950 に答える
1

配列数式が必要ない場合は、 =OFFSET($C$5,MATCH($A$17,B5:B13),0) を試すことができます。ここで、C5 は B 列の開始点、B5:B13 は A 列であり、 A17はあなたが対戦する価値です。

忍者の編集: これは、仕様のビット以下で機能するバージョンです。=OFFSET($C$5,IF(ISNA(MATCH($A$17,B5:B13,0)), IF(ISNA(MATCH($A$17,B5:B13)),0,MATCH($A$17,B5 :B13)), MIN(MATCH($A$17,B5:B13,0)-1,MATCH($A$17,B5:B13))),0)

于 2009-12-15T15:24:35.527 に答える
0

データ テーブルが範囲 A2:B10 にあり、セル B1 で検索している値があると仮定すると、次のように動作するようです。

 =IF(B1<A2,B2,IF(ISNA(VLOOKUP(B1,$A$2:$B$10,2,FALSE)),INDEX(B2:B10,MATCH(B1,A2:A10)+1),VLOOKUP(B1,$A$2:$B$10,2,FALSE)))

これを編集して、ルックアップ値がリスト内のどの値よりも小さい場合を考慮しました。

于 2009-12-15T15:40:24.873 に答える