0

我想开发一个像这样的简单功能

搜索(值、范围、偏移量)

给出下表

     A    B    C   

1    10   A    desc for 10a
2    20   B    desc for 20b
3    30   C    desc for 30c

将返回以下内容

Search(10; a1:c3; 3) -> desc for 10a
Search(A; a1:c3; 3)  -> desc for 10a

Search(20; a1:c3; 3) -> desc for 20a
Search(B; a1:c3; 3)  -> desc for 20a
Search(desc for 20a; a1:c3; 3)  -> desc for 20a

也就是说,它应该允许我搜索范围内的任何列,而不仅仅是像 VLookup 那样搜索第一个列

4

1 回答 1

1

这取决于您的列的可预测性。如果没有显着特征,那么您将遇到困难。但是,如果您可以从搜索字符串中确定哪一列将包含匹配项,那么您就可以了。在您的示例中,数值仅存在于 A 列中,单个字母字符串仅存在于 B 列中,较长的字符串仅存在于 C 列中。在这种情况下,您可以使用以下两个公式:

将搜索值放在 E1 中。在 F1 中:=IF(ISNUMBER($E1),0,IF(LEN($E1)=1,1,2))

在 G1 中:=VLOOKUP($E1,OFFSET($A$1,0,$F1,10,(3-$F1)),(3-$F1),FALSE)

您当然可以通过将所有 $F1 替换为完整公式来将两者组合成一个公式。为了功能的清晰起见,我在这里将它们分开。

此外,偏移公式中的 10 需要对应于查找范围内的总行数。

于 2012-12-04T05:14:31.320 回答