如何比较 Excel 中的多个字段
How to compare multiple fields in Excel
我有两个展开sheet,我想比较其中的多个列。如何使用 Vlookup 或其他某种公式来获得正确的结果?
Sheet 1 有以下信息。
Sheet 2 有以下信息; column H
是预期结果列。
我希望能够在 sheet 2 中输入一个公式,以从 sheet 1(A 列)中提取与 [= 中的相同描述和收费编号相匹配的行号23=] 1.
试试这个作为数组公式(输入公式时按 Ctrl+Shift+Enter 而不是只按 Enter):
=INDEX(Sheet1!$A:$A,MATCH(D2&A2,Sheet1!$B:$B&Sheet1!$C:$C,0))
假设您将此公式放入 column E
in SHEET 2 然后:
=INDEX(Sheet1!$A:$A,MATCH(1,(Sheet1!$B:$B=Sheet2!$D2)*(Sheet1!$C:$C=$A2),0))
把这个放在E2然后因为这是一个数组公式,所以按ctrl+shift+输入计算公式。
然后复制并向下拖动公式以找到其他结果。
我将展示数组函数的另一种方法。这应该可以正常工作,但它是 calculation-intensive 因为它会查看 both 标准列中的 all 值来找到你想要的寻找。对于几百行,这很好,但如果您使用数十万行,那么您可能会遇到性能问题。数组函数可能很昂贵。
我要做的第一件事是创建一个辅助列,将费用编号和描述字段合并到 Sheet1 上的一个字段中。这将是您查找以从 Sheet1 获取所需信息的值。为了使用 VLOOKUP
,这需要是您正在查找的 table 中的 left-most 列(工作表 1 中的 table)。然后我在 Sheet2 上使用 VLOOKUP
公式从 Sheet1 中检索相关信息。
- 在工作表 1 上,right-click 列 A header 和 select 插入(这将在左侧添加一个新列)
- 在这个新的 A 列中,键入公式
=CONCATENATE(B2,C2)
(假设您的数据从第二行开始,占第一行的 header。如果不使用 =CONCATENATE(B1,C1)
).这将合并 B 列和 C 列的值。
- 在 Sheet2 上,将以下公式输入到要显示 Sheet1 中的行号的单元格中:
=VLOOKUP(CONCATENATE(A2,D2),Sheet1!$A:$D,2,FALSE)
并向下填写此公式
如果您愿意,可以通过右键单击列 header 然后隐藏来隐藏我们在第 1 步中创建的列。
现在,对于魔法的解释(VLOOKUP
):
第一个参数是您要查找的值。在这种情况下,我们想要找到合并的费用编号 + 描述,因为这些是我们创建的辅助列中的值。
第二个参数是"Look in Sheet1, columns A through D"。这是包含您要查找和检索的信息的 table。
第三个参数表示"If there is a match in column A (remember this is our helper column that we made by combining charge number + description) then return the value in the second column from the left"
FALSE
的最后一个参数意味着找到与我正在查找的值完全匹配的值,而不是近似值。
还有一个 step-by-step illustration of this method 可能也会派上用场。
我有两个展开sheet,我想比较其中的多个列。如何使用 Vlookup 或其他某种公式来获得正确的结果?
Sheet 1 有以下信息。
Sheet 2 有以下信息; column H
是预期结果列。
我希望能够在 sheet 2 中输入一个公式,以从 sheet 1(A 列)中提取与 [= 中的相同描述和收费编号相匹配的行号23=] 1.
试试这个作为数组公式(输入公式时按 Ctrl+Shift+Enter 而不是只按 Enter):
=INDEX(Sheet1!$A:$A,MATCH(D2&A2,Sheet1!$B:$B&Sheet1!$C:$C,0))
假设您将此公式放入 column E
in SHEET 2 然后:
=INDEX(Sheet1!$A:$A,MATCH(1,(Sheet1!$B:$B=Sheet2!$D2)*(Sheet1!$C:$C=$A2),0))
把这个放在E2然后因为这是一个数组公式,所以按ctrl+shift+输入计算公式。
然后复制并向下拖动公式以找到其他结果。
我将展示数组函数的另一种方法。这应该可以正常工作,但它是 calculation-intensive 因为它会查看 both 标准列中的 all 值来找到你想要的寻找。对于几百行,这很好,但如果您使用数十万行,那么您可能会遇到性能问题。数组函数可能很昂贵。
我要做的第一件事是创建一个辅助列,将费用编号和描述字段合并到 Sheet1 上的一个字段中。这将是您查找以从 Sheet1 获取所需信息的值。为了使用 VLOOKUP
,这需要是您正在查找的 table 中的 left-most 列(工作表 1 中的 table)。然后我在 Sheet2 上使用 VLOOKUP
公式从 Sheet1 中检索相关信息。
- 在工作表 1 上,right-click 列 A header 和 select 插入(这将在左侧添加一个新列)
- 在这个新的 A 列中,键入公式
=CONCATENATE(B2,C2)
(假设您的数据从第二行开始,占第一行的 header。如果不使用=CONCATENATE(B1,C1)
).这将合并 B 列和 C 列的值。 - 在 Sheet2 上,将以下公式输入到要显示 Sheet1 中的行号的单元格中:
=VLOOKUP(CONCATENATE(A2,D2),Sheet1!$A:$D,2,FALSE)
并向下填写此公式
如果您愿意,可以通过右键单击列 header 然后隐藏来隐藏我们在第 1 步中创建的列。
现在,对于魔法的解释(VLOOKUP
):
第一个参数是您要查找的值。在这种情况下,我们想要找到合并的费用编号 + 描述,因为这些是我们创建的辅助列中的值。
第二个参数是"Look in Sheet1, columns A through D"。这是包含您要查找和检索的信息的 table。
第三个参数表示"If there is a match in column A (remember this is our helper column that we made by combining charge number + description) then return the value in the second column from the left"
FALSE
的最后一个参数意味着找到与我正在查找的值完全匹配的值,而不是近似值。
还有一个 step-by-step illustration of this method 可能也会派上用场。