查找表以选择列然后找到最接近的值

查找表以选择列然后找到最接近的值

我有一个电子表格,用于计算电池的恒定电流要求。我希望能够从设定的负载持续时间中找到一个恒定电流大于或等于我的计算值的合适电池。

我正在尝试使用查找表,其中“加载持续时间”(黄色)从数组中选择一列,然后我的查找函数(绿色)查找大于等于我计算的参考值(蓝色)的值。我还想使用另一个函数从与数组中找到的值相同的行中查找模型。

加载持续时间是一个与相应列匹配的下拉菜单。我目前有一个单元格用于选择数组的列: =MATCH(C39,'Battery Lookup Table'!B2:O2,0)

我尝试了多个查找函数来找到最接近的恒定电流值: =VLOOKUP(C46,'Battery Lookup Table'!B4:O36,MATCH(C39,'Battery Lookup Table'!B2:O2,0),TRUE) =VLOOKUP(C46,'Battery Lookup Table'!B4:O36,N49) =(HLOOKUP(C46,'Battery Lookup Table'!S56:AW69,O50,TRUE))

每个查找表都产生了相同的值。

我还尝试过按从小到大的顺序对值进行排序,因为 VLOOKUP 和 HLOOkUP 很难解读。我还尝试过按时间长度交换行,但没有成功。

型号:=INDEX('Battery Lookup Table'!A4:A36,MATCH(TRUE,'Battery Lookup Table'!M4:M25>=C46,0))

目前我的查找函数会转到正确的列,但通常会使用表格底部附近的行/值。找到的值都不是最接近的值。

计算结果

查找数组

按升序查找

答案1

VLOOKUP与值匹配第一的范围的列,并提供匹配行中范围的指定列的值。因此,您的第一个公式

=VLOOKUP(C46,'Battery Lookup Table'!B4:O36,MATCH(C39,'Battery Lookup Table'!B2:O2,0),TRUE)

C46与范围内的值匹配(我认为在您的示例中为 500.8) 'Battery Lookup Table'!B4:B36。这不是您想要匹配的范围,但它可能解释了为什么您得到错误的结果。

实际上,您已经确定了要与MATCH函数匹配的正确列。您可以使用该INDEX函数选择范围的一部分。表达式

INDEX('Battery Lookup Table'!B4:O36,,n)

提供n'列,'Battery Lookup Table'!B4:O36这样就可以把你的MATCH功能放在n提供可以与之比较的正确值列C46。这样做会得到以下表达式:

INDEX('Battery Lookup Table'!B4:O36,,MATCH(C39,'Battery Lookup Table'!B2:O2,0))

为了便于理解,我将这个表达式缩写为列表

您现在要做两件事:

  1. 找到最小值列表大于或等于C46
  2. 找到与该值对应的电池。

这里的技巧不是使用VLOOKUP()而是使用更灵活的“表亲” INDEX(MATCH())。然而,VLOOKUP匹配范围第一列上的值并从右侧的列中传递值,更灵活的版本允许值来自同一列或左侧的列。

此外,使用 有 3 种可能的匹配方式MATCH,具体取决于第三个参数的值为 -1、0 还是 1。其中最简单的是精确匹配,它使用值 0(正如您在匹配 时所做的那样Battery Lookup Table'!B2:O2)。值 -1 查找查找范围中大于或等于查找值的最小值的位置。这是您的要求,但它要求将查找范围放在降序顺序。(值为 1 表示查找查找范围中小于或等于查找值的最大值的位置,并且要求查找范围按升序排列 - 这不是您的要求。)

所有值Battery Lookup Table似乎都按升序排列,因此重新组织数据以使行按相反顺序显示将满足降序条件 - 100G99 将是第一行数据,50G05 将是最后一行数据。您还需要删除空白行,因为这些行中的值将被视为零,因此可能会因违反降序要求而导致问题。

表达方式

MATCH(C46,list,-1))

提供职位列表您正在寻找的值及其实际值(显示在绿色背景单元格中)由提供

=INDEX(list,MATCH(C46,list,-1))

电池模型由

=INDEX('Battery Lookup Table'!A4:A46,MATCH(C46,list,-1))

用以下表达式代替列表(如上所述)代入这两个公式会导致表达式繁琐,第一个公式中存在一定程度的重复,而MATCH(C46,list,-1)两个公式中都存在重复计算。这些重复并不是好的做法,如果可能的话,应该避免。

一种方法是将匹配的列号和行号的值存储在工作表单元格中。分别是:

=MATCH(C39,'Battery Lookup Table'!B2:O2,0)- 表示为n, 和

=MATCH(C46, INDEX('Battery Lookup Table'!B4:B36,,n),-1)- 表示为

查找结果如下

INDEX('Battery Lookup Table'!B4:O36,m,n)(在所需负载持续时间内保持恒定额定值)和

INDEX('Battery Lookup Table'!A4:A36,m) (对应电池型号)

在哪里n是包含计算的列号和行号的两个单元格引用。

相关内容