在Mac上的Excel 2011中,如何使用vlookup返回非空匹配值?

在Mac上的Excel 2011中,如何使用vlookup返回非空匹配值?

我在一张表上列出了域名及其注册商的列表,在另一张表上列出了相同的域名和其他数据(但不是注册商)的列表。

我需要从表 A 中获取注册商名称,并将其放在表 B 中相应的域名旁边。

工作表 A 的 CSV 示例:

domain1.com,,9.98,03/24/13
domain1.com,,9.98,03/24/13
domain1.com,godaddy,9.98,03/24/13
domain2.com,,9.98,03/24/13
domain2.com,godaddy,9.98,03/24/13
domain3.com,namecheap,9.98,03/24/13

工作表 B 的 CSV 示例:

domain1.com,1200,04/01/14
domain2.com,402,04/01/14
domain3.com,612,04/01/14

我希望将每个域名的注册商信息放在 B 表的第 4 列中。

问题在于,在工作表 A 上,该域名过去在其他注册商处有多个实例,但这些单元格已被删除。这导致我从工作表 B 中执行 vlookup 查找,找到域名的第一个匹配项并返回相应的注册商,结果为空白(返回零)。

有没有办法让 VLookup(或其他公式)仅返回不为空的相应注册商?

我对 Index & Match 进行了一些实验,但无法取得任何进一步的进展。

答案1

您可以使用数组公式进行此查找。如果您的原始数据位于 中A1:D6,则可以使用此公式(调整工作表引用以匹配您的工作簿):

=INDEX(SheetA!$B$1:$B$6,MIN(IF(SheetA!$A$1:$A$6=SheetB!A1,IF(SheetA!$B$1:$B$6="",2000000,ROW(SheetA!$B$1:$B$6)),2000000)))

将其粘贴到公式栏中并按Ctrl+ Shift+ Enter。然后向下填充。

解释和假设:

  • IF函数内部的语句组成MIN一个数值数组,满足条件的记录(即域名匹配且注册商不为空)将记录的行号存储在数组中,不符合条件的记录将数字 2000000 存储在数组中。
  • 2000000 是大于 Excel 工作表中行数的任意数字。这只是为了确保如果未找到匹配项,函数INDEX将返回错误。
  • INDEX返回数组中指定位置的值。
  • 记录的行号被用作表中记录位置的替代。如果表从第 1 行开始,则这没有问题,因为记录 1 位于第 1 行。但是,如果您的数据从不同的行开始,则需要调整公式才能使其正常工作。例如,如果记录 1 位于第 2 行,则需要用 替换ROW($B$2:$B$7)ROW($B$2:$B$7)-1否则,该INDEX函数将返回错误的注册商。

相关内容