我有 2 个 excel 文件。我想比较文件 1 的 sheet1 和文件 2 的 sheet1,然后获取所有相同/匹配的行。2 个独立文件中的行可以位于不同的行位置
第一个 XL 文件
列A 列B 列C 11 角色11 名称12 22 角色21 文本22 33 角色31 名称32 55 角色49 名称69
第二个 XL 文件
列A 列B 列C 11 角色11 名称12 33 角色31 名称36 55 角色45 名称69 22 角色21 文本22
所以最终结果应该是匹配的行,如下所示
列A 列B 列C 11 角色11 名称12 22 角色21 文本22
答案1
使用Excel Formulas
你可以尝试这样的事情:
• 单元格中使用的公式K3
=FILTER(A3:C6,1-ISNA(XMATCH(A3:A6&"|"&B3:B6&"|"&C3:C6,F3:F6&"|"&G3:G6&"|"&H3:H6)))
- 因此,该
XMATCH()
函数返回匹配行的位置,请注意,我已使用|
so 连接单元格/范围以避免任何FALSE Positives
-->=XMATCH(A3:A6&"|"&B3:B6&"|"&C3:C6,F3:F6&"|"&G3:G6&"|"&H3:H6)
- 然后包裹在其中
ISNA()
以获取那些不匹配的字符并减去它,1
我们也可以使用ISNUMBER()
这个,但是我看到使用的字符较少,因此返回TRUE
实例-->=1-ISNA(XMATCH(A3:A6&"|"&B3:B6&"|"&C3:C6,F3:F6&"|"&G3:G6&"|"&H3:H6))
- 最后使用
FILTER()
函数提取这里包含的那个,即的那个TRUE
。
或者,也COUNTIFS()
可以使用函数:FILTER()
=FILTER(F3:H6,COUNTIFS(A3:A6,F3:F6,B3:B6,G3:G6,C3:C6,H3:H6))
或者使用Windows 和 MAC 以上版本POWER QUERY
可用的版本。Excel 2010+
- 首先将源范围转换为表格并进行相应命名,在此示例中,我将其命名为
Table_1st
&Table_2nd
- Data接下来,从Tab --> Get & Transform Data--> Get Data--> From Other Sources-->打开一个空白查询Blank Query
- 上面的命令可以Power Query打开窗口,现在从HomeTab --> Advanced Editor--> 删除您看到的任何内容并粘贴以下内容M-Code,然后按Done
let
SourceOne = Excel.CurrentWorkbook(){[Name="Table_1st"]}[Content],
SourceTwo = Excel.CurrentWorkbook(){[Name="Table_2nd"]}[Content],
MergeData = Table.NestedJoin(SourceOne, {"ColumnA", "ColumnB", "ColumnC"}, SourceTwo, {"ColumnA", "ColumnB", "ColumnC"}, "SourceTwo", JoinKind.LeftOuter),
#"Expanded SourceTwo" = Table.ExpandTableColumn(MergeData, "SourceTwo", {"ColumnA", "ColumnB", "ColumnC"}, {"ColumnA.1", "ColumnB.1", "ColumnC.1"}),
#"Filtered Rows" = Table.SelectRows(#"Expanded SourceTwo", each [ColumnA.1] <> null and [ColumnA.1] <> ""),
#"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows",{"ColumnA", "ColumnB", "ColumnC"})
in
#"Removed Other Columns"
- 最后,将其导回Excel--> 单击Close & Load或Close & Load To--> 第一个单击的将创建一个New Sheet具有所需输出的,而后者将提示一个窗口询问您将结果放在何处。
笔记:根据您的需要更改单元格引用和范围,如果使用,则POWER QUERY
根据您的喜好对表名称进行必要的更改。