我在一张表上列出了域名及其注册商的列表,在另一张表上列出了相同的域名和其他数据(但不是注册商)的列表。
我需要从表 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
函数将返回错误的注册商。