0

嗨,提前感谢您对此的任何帮助

下面是一个假设的数据集;丰度=计数数据;泥% = 发现动物的泥含量;泥箱 = 我根据泥浆百分比组成的箱;UQ = 对应泥仓中丰度数据的上四分位数(即泥仓 1 中丰度数据的上四分位数为 17.25 等)。

问题:

在excel中,对于四个泥箱中的每一个中的丰度数据,我想提取丰度列中> =该特定泥箱的上四分位值的任何值,并将它们放在同一张纸上的新列中(不符合标准的值的行之间没有间隙)以及相邻单元格中相应的泥浆百分比值。我已将新列添加到下表中,以使您了解我的目标。

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 行。

填充所有订单项的上四分位值

首先,您需要使用四分位数公式;但是,由于您想在 bin 中找到上四分位数,因此您必须使用数组公式。将此公式放入 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 匹配的丰度值数组。现在您有了数据子集,quartile 函数将为您提供第三个四分位数的值(泥箱 1 为 17.25,它将放置在泥箱为 1 的每一行旁边)。

现在我们有了所有的四分位数,我们可以得到所有大于该泥箱 UQ 的丰度值。这分两部分完成

获得大于 mudbin UQ 的丰度值

  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%,您需要使用非空白值的行号来获取 mud% 和泥箱(您已经有公式来获取非空白值的行号)。

这不是一个简单的答案,但至少您不必使用 VBA。

于 2013-08-15T05:39:15.440 回答