excel - 根据条件从范围中选择单元格值

标签 excel excel-formula vlookup worksheet-function

我正在尝试找出一种更简洁的方法来根据给定范围内定义的标准确定单元格的值。说白了,我有一栏是标准粘度、标准温度、实测温度。我需要创建第四列,它将根据测量的温度选择标准粘度。例如,如果测量温度大于或等于 0oC 且小于 1oC:返回 0oC 的标准粘度。

我的问题是,我有一个很大的范围,并且发现为每个范围创建自定义表达式非常繁琐。我创建了一个由 IF(AND()) 语句组成的噩梦般的函数,但发现这令人筋疲力尽,特别是当我尝试以个位数增量创建 0-200oC 范围的表达式时。

下面是一个可以工作但相当麻烦的代码示例:

=IF(AND(G8>=$C$7,G8<$C$8),$D$7,0)+IF(AND(G8>=$C$8,G8<$C$9),$D$8,0)+....

=IF(AND(measured temp>=0,measured temp<1),$D$7,0)+IF(AND(measured temp>=1,measured temp<2),$D$8,0)

我怎样才能以更时尚的方式解决这个问题?

最佳答案

您可以通过 VLOOKUP 函数来实现这一点。

=VLOOKUP(G8;$C$7:$D$...;2;TRUE)

将三个点替换为表格最后一行的索引。

VLOOKUP 的第一个参数是要搜索的值;第二个参数是要在其第一列中搜索值的范围;第三个参数是包含要返回的值的列的索引(在范围内,因此 2 表示范围内的第二列,在您的情况下为 D); TRUE 表示您不想搜索完全匹配,但要搜索的列是定义间隔的值的有序列表。

编辑:

使用 MATCH 和 OFFSET(猜测,未尝试),如果结果值的列相对于标准值的列左侧:

=OFFSET($C$7;...;MATCH(G8;$C$7:$C$...;1) - 1)

将前三个点替换为结果列相对于 C 列的位置(如果是 D 列则为 1,如果是 B 列则为 -1),后三个点替换为结果列最后一行的索引您的范围,如上所述。

编辑2:

INDEX 而不是 OFFSET 更好,参见 pnuts 的回答和下面的评论:

=INDEX($D7:$D...;MATCH(G8;$C$7:$C$...;1))

关于excel - 根据条件从范围中选择单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24650807/

相关文章:

excel - 当我想要部分匹配时使用 =IF(OR 公式

vba - 尝试使用 Range.Formula 属性时格式错误的 VLookup 公式

excel - 使用 INDIRECT() 通过 VLOOKUP() 设置动态范围

excel - 具有标准的不同/唯一计数

vba - 宏在单独运行时运行良好,但在通过按钮依次调用时运行良好

excel - 使用 Active.cell.column 和行范围的 VBA 范围

vba - Vlookup 和 ISERROR

vba - 强制文件和文件夹按字母顺序处理

vba - 用文件夹中的文件名填充单元格,Excel

r - 复杂的字符串拆分为 R 中的列