免责声明:以下数字是随机生成的
我试图做的是,纯粹在VBA中,查看[B列] / [A列]的比例并检查第10行(= 1,241 / 468)中的比率是否低于行1至9中比率的最小值或高于最大比率但仅与列C中的1行相比
即,将Cell(B10)/ Cell(A10)与Cell(B2)/ Cell(A2),Cell(B3)/ Cell(A3)等进行比较(仅比较C列中的1行) )。
我正在使用的工作簿有更多的数据和列,我不允许显式编辑单元格,因此定义新列是不可能的。有没有办法在VBA中执行此操作,使其基本上返回一个布尔值,取决于最后一行中的比率是否违反上面定义的阈值?
答案 0 :(得分:1)
您可以使用AGGREGATE¹ function's SMALL sub-function和LARGE sub-function轻松实现最低和最高比率(使用条件)。
D13:E13中的公式是,
=AGGREGATE(15, 6, ((B1:B9)/(A1:A9))/C1:C9, 1)
=AGGREGATE(14, 6, ((B1:B9)/(A1:A9))/C1:C9, 1)
6 是用于忽略错误值的AGGREGATE参数。通过除以比率
通过C列中的值,我们生成#DIV/0!
错误,因为我们不希望忽略它们。如果C中的值更加多样化,我们可以除以(C1:C9 = 1)以产生相同的结果。
由于我们使用的是SMALL和LARGE子函数,我们可以通过增加 k 参数( 1 )来轻松检索第二,第三等比率后端)。
我已稍微修改了示例中的某些值,以证明正确选取了带有条件的最小值和最大值。
这些可以通过WorksheetFunction object或Application.Evaluate method适应VBA。
¹ Excel 2010引入了AGGREGATE¹ function's。在以前的版本中不可用。