0

こんにちは、これについて事前に助けてくれてありがとう

以下は架空のデータセットです。存在量 = カウントデータ; 泥% = 動物が発見された泥の含有量; 泥ビン = 泥% に応じて作成したビン。UQ = 対応するマッド ビンの存在量データの上位四分位数 (つまり、マッド ビン 1 の存在量データの上位四分位数は 17.25 など)。

問題:

Excel では、4 つのマッド ビンのそれぞれの存在量データについて、その特定のマッド ビンの上位四分位値以上の存在量列の値を抽出し、これらを同じシートの新しい列に配置したいと考えています。 (基準を満たさなかった値からの行間にギャップはありません) と、隣接するセルの対応する泥% 値。下のシートに新しい列を追加して、私が何を求めているかを理解してもらいました。

abundance | mud% |  mud bin | UQ  |               | New column |  Mud%   |
        18  10.9    1                                 18          10.9(mud bid 1)
        15  6.5     1                                 44          38.9(mud bin 1)
        6   13.4    1                                 45          38  (mud bin 2)
        13  42.1    1                                 37          37.8(mud bin 2) 
        15  36.4    1                                etc
        44  38.9    1        17.25                   etc
        22  46      2
        30  36.4    2
        45  38      2
        29  35.3    2
        37  37.8    2
        29  41.8    2        35.25
        11  44.4    3
        17  47.8    3
        21  40.7    3
        15  13.9    3
        35  13.9    3
        14  13.9    3
        15  13.9    3         19
        19  12      4
        14  12      4
        10  12      4
        12  12      4
        14  12      4
        13  12      4
        45  9.525   4
        66  9.525   4
        78  9.525   4         45

現実には、私は多くの種の存在量データを含むかなり大きなデータセットをすべて同じ Excel シートに持っているので、最も効率的な方法でこれを達成する方法についての洞察をいただければ幸いです。

4

1 に答える 1

0

まず、この説明を簡単にするために、データの最後の行が行 100 にあると仮定します。

すべての広告申込情報に上位四分位の値を入力する

まず、四分位式を使用する必要があります。ただし、ビン内の上位四分位を見つけたいので、配列数式を使用する必要があります。この数式を UQ 列に入力します (セル D2 に配置して下にドラッグします)。式を入力するときは必ずCtrl+Shiftを押してからEnterを押してください

=QUARTILE(IF($C$2:$C$100=C2,$A$2:$A$100,""),3)

この式の最初の部分$C$2:$C$100=C2は、あなたの状態です。この条件が満たされるすべての場所で、対応する値が に取得され$A$2:$A$100ます。そうしないと、空白の値が返されます。これにより、指定されたマッドビン C2 に一致する存在量の値の配列が得られます。データのサブセットが得られたので、四分位関数は 3 番目の四分位 (マッドビン 1 の場合は 17.25、マッドビンが 1 のすべての行の隣に配置されます) の値を返します。

すべての四分位を取得したので、そのマッドビンの UQ よりも大きいすべての存在値を取得できます。これは 2 つの部分で行われます

マッドビン UQ よりも大きい存在量の値を取得する

  1. まず、データと同じ行数を持つセルの列を 1 つ選択する必要があります (たとえば、セル F2:F100 を選択します)。
  2. 数式バーに次の数式を入力し (F2:F100 が強調表示されている間)、Ctrl+Shift を押してから、次のように入力します。

    =IF($A$2:$A$100>$D$2:$D$100,$A$2:$A$100,"")

前に使用した IF ステートメントと同様に、この式は、対応する UQ 値よりも大きいすべての存在値を見つけます。これで、列 F には、UQ 値より大きい場合は存在量の数値が表示され、そうでない場合は空白になります。いよいよ最終段階へ。

空白を除いて、UQ 値より大きい存在量の値を入力します。

  1. G2:G100 (サンプル データの「新しい列」) を選択します。
  2. 次の数式を数式バーに入力し (G2:G100 が強調表示されている間)、Ctrl+Shift キーを押してから、次のように入力します。

    =INDEX(F2:F100,SMALL(IF(F2:F100<>"",ROW(F2:F100)-1),ROW()-ROW($F$1)))

IF ステートメントをもう一度見てみると、F2:F100 内のすべての値が空白ではないことがわかりますが、値を取得する代わりに、その空白でない値の行番号を追跡します (によって行われますROW(F2:F100)-1 )。空白以外のすべての値の行番号を取得したので、空白以外の値を順番に取得して、G2:G100 に入力できます。ROW()-ROW($F$1)はカウンターであり、SMALLカウンターを使用して、返す n 番目に小さい数値を決定します。空白でない値の行番号を取得しINDEXたら、その値を返します

最後に、Mud% を入力するには、空でない値の行番号を使用して、泥% と泥ビンを取得する必要があります (空でない値の行番号を取得する式は既にあります)。

簡単な答えではありませんが、少なくとも VBA を使用する必要はありません。

于 2013-08-15T05:39:15.440 に答える