我如何 find/highlight 在 Excel 的多个列中重复出现值
How can I find/highlight recurring values in multiple columns on Excel
我需要 find/highlight 复制出现在我的工作表 (found here). The columns are from D0 to D8 and have varrying rows in them. I have tried solutions provided here 的 8 列中每一列的值。我使用的解决方案是;
(1)
=LOOKUP("zzz",CHOOSE({1,2},"",INDEX(A:A,MATCH(0,COUNTIF(E:E1,A:A)+IF(IF(COUNTIF(B:B,A:A)>0,1,0)+IF(COUNTIF(C:C,A:A)>0,1,0)=2,0,1),0))))
和
(2)
=INDEX($A:$A, MATCH(0, COUNTIF($E:E1, $A:$A)+IF(IF(COUNTIF($B:$B, $A:$A)>0, 1,
0)+IF(COUNTIF($C:$C, $A:$A)>0, 1, 0)=2, 0, 1), 0))
我根据自己的工作表替换了这些值,但每次我都只是得到“0”作为答案,尽管这是不可能的。只需查看前 2 行,就可以轻松判断出所有 8 列中都有值。
我是 Excel 的初学者,目前使用 Microsoft Excel 2016 for Mac(16.16.14 版)。
编辑#2
在您提供的第二个公式的嵌套 IF 函数中发现错误。
在您尝试执行的公式中 IF(IF(A)+IF(B)=2,0,1)
但我认为正确的方法应该是 IF((IF(A)+IF(B))=2,0,1)
。
根据您提供的示例工作表,在单元格 J2
中输入以下公式:
=INDEX(A:A1,MATCH(0,COUNTIF(J:J1,A:A1)+IF((IF(COUNTIF(B:B3,A:A1)>0,1,0)+IF(COUNTIF(C:C2,A:A1)>0,1,0)+IF(COUNTIF(D:D2,A:A1)>0,1,0)+IF(COUNTIF(E:E8,A:A1)>0,1,0)+IF(COUNTIF(F:F2,A:A1)>0,1,0)+IF(COUNTIF(G:G,A:A1)>0,1,0)+IF(COUNTIF(H:H,A:A1)>0,1,0))=7,0,1),0))
请注意,这是一个数组公式,所以您需要在输入上面的公式后进行以下操作:
Select the range, press CONTROL + U and then press COMMAND + RETURN
In case the above does not work for you:
Select the range, press CONTROL + U and then press COMMAND + SHIFT + RETURN
如果你还不清楚,请看这篇文章:How to Use Array Formula in Excel Mac(谁知道用Excel中的数组公式对Mac这么痛苦...)
向下拖动公式,直到列表出现 returning #N/A
错误,这意味着您已找到所有公共值。
假设您将此常用值列表命名为列表,我在Excel 2016年的经验为[=107] =] 是你回到你的来源 table,突出显示整个 table,转到 Home Tab
下的 条件格式 ,转到 New Rule...
,转到最后一个选项,然后输入以下公式作为格式规则:
=MATCH(A2,List,0)>0
Given that Power Query is not supported in Excel 2011 and Excel 2016 for Mac
, please disregard the following approach using Power Query. FYI power query approach is way faster than the above array formula approach in this case...
从您的 post 和您提供的示例来看,我认为您想找到 all 8 列中出现的共同值,这意味着您将忽略出现在 7、6、5 或更少列中的值。
鉴于您正在处理大型数据集 (860 x 8
),我建议使用 Power Query 来解决该问题。 Power Query 是 Excel 2010 Professional Plus 和 Excel.
所有更高版本中的一个 built-in 函数
步骤是:
- 使用 From Table 函数在
Data
选项卡下将数据加载到 Power Query 编辑器;
- 突出显示所有列,然后使用
Transform
选项卡下的 Unpivot Columns 功能将 table 转换为 2 列 table;
- 在
Transform
选项卡组 Value
列下使用 Group By 功能,按如下所述计算不同的行;
- 右键单击 header 列右侧的 filer 框以按
8
对列表进行归档,这将 return 值出现在所有 8 个栏目中;
- 关闭并加载 列(实际上是 one-column table)到新工作表(默认情况下)。
下面是后台的电源查询M码,仅供参考。所有步骤都使用编辑器的 built-in 功能,非常简单。
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"d0", Int64.Type}, {"d1", Int64.Type}, {"d2", Int64.Type}, {"d3", Int64.Type}, {"d4", Int64.Type}, {"d5", Int64.Type}, {"d6", Int64.Type}, {"d7", Int64.Type}}),
#"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {}, "Attribute", "Value"),
#"Grouped Rows" = Table.Group(#"Unpivoted Columns", {"Value"}, {{"Count", each Table.RowCount(Table.Distinct(_)), type number}}),
#"Filtered Rows" = Table.SelectRows(#"Grouped Rows", each ([Count] = 8)),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Count"})
in
#"Removed Columns"
我需要 find/highlight 复制出现在我的工作表 (found here). The columns are from D0 to D8 and have varrying rows in them. I have tried solutions provided here 的 8 列中每一列的值。我使用的解决方案是;
(1) =LOOKUP("zzz",CHOOSE({1,2},"",INDEX(A:A,MATCH(0,COUNTIF(E:E1,A:A)+IF(IF(COUNTIF(B:B,A:A)>0,1,0)+IF(COUNTIF(C:C,A:A)>0,1,0)=2,0,1),0))))
和
(2) =INDEX($A:$A, MATCH(0, COUNTIF($E:E1, $A:$A)+IF(IF(COUNTIF($B:$B, $A:$A)>0, 1, 0)+IF(COUNTIF($C:$C, $A:$A)>0, 1, 0)=2, 0, 1), 0))
我根据自己的工作表替换了这些值,但每次我都只是得到“0”作为答案,尽管这是不可能的。只需查看前 2 行,就可以轻松判断出所有 8 列中都有值。
我是 Excel 的初学者,目前使用 Microsoft Excel 2016 for Mac(16.16.14 版)。
编辑#2
在您提供的第二个公式的嵌套 IF 函数中发现错误。
在您尝试执行的公式中 IF(IF(A)+IF(B)=2,0,1)
但我认为正确的方法应该是 IF((IF(A)+IF(B))=2,0,1)
。
根据您提供的示例工作表,在单元格 J2
中输入以下公式:
=INDEX(A:A1,MATCH(0,COUNTIF(J:J1,A:A1)+IF((IF(COUNTIF(B:B3,A:A1)>0,1,0)+IF(COUNTIF(C:C2,A:A1)>0,1,0)+IF(COUNTIF(D:D2,A:A1)>0,1,0)+IF(COUNTIF(E:E8,A:A1)>0,1,0)+IF(COUNTIF(F:F2,A:A1)>0,1,0)+IF(COUNTIF(G:G,A:A1)>0,1,0)+IF(COUNTIF(H:H,A:A1)>0,1,0))=7,0,1),0))
请注意,这是一个数组公式,所以您需要在输入上面的公式后进行以下操作:
Select the range, press CONTROL + U and then press COMMAND + RETURN
In case the above does not work for you:
Select the range, press CONTROL + U and then press COMMAND + SHIFT + RETURN
如果你还不清楚,请看这篇文章:How to Use Array Formula in Excel Mac(谁知道用Excel中的数组公式对Mac这么痛苦...)
向下拖动公式,直到列表出现 returning #N/A
错误,这意味着您已找到所有公共值。
假设您将此常用值列表命名为列表,我在Excel 2016年的经验为[=107] =] 是你回到你的来源 table,突出显示整个 table,转到 Home Tab
下的 条件格式 ,转到 New Rule...
,转到最后一个选项,然后输入以下公式作为格式规则:
=MATCH(A2,List,0)>0
Given that Power Query is not supported in
Excel 2011 and Excel 2016 for Mac
, please disregard the following approach using Power Query. FYI power query approach is way faster than the above array formula approach in this case...
从您的 post 和您提供的示例来看,我认为您想找到 all 8 列中出现的共同值,这意味着您将忽略出现在 7、6、5 或更少列中的值。
鉴于您正在处理大型数据集 (860 x 8
),我建议使用 Power Query 来解决该问题。 Power Query 是 Excel 2010 Professional Plus 和 Excel.
步骤是:
- 使用 From Table 函数在
Data
选项卡下将数据加载到 Power Query 编辑器; - 突出显示所有列,然后使用
Transform
选项卡下的 Unpivot Columns 功能将 table 转换为 2 列 table; - 在
Transform
选项卡组Value
列下使用 Group By 功能,按如下所述计算不同的行;
- 右键单击 header 列右侧的 filer 框以按
8
对列表进行归档,这将 return 值出现在所有 8 个栏目中; - 关闭并加载 列(实际上是 one-column table)到新工作表(默认情况下)。
下面是后台的电源查询M码,仅供参考。所有步骤都使用编辑器的 built-in 功能,非常简单。
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"d0", Int64.Type}, {"d1", Int64.Type}, {"d2", Int64.Type}, {"d3", Int64.Type}, {"d4", Int64.Type}, {"d5", Int64.Type}, {"d6", Int64.Type}, {"d7", Int64.Type}}),
#"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {}, "Attribute", "Value"),
#"Grouped Rows" = Table.Group(#"Unpivoted Columns", {"Value"}, {{"Count", each Table.RowCount(Table.Distinct(_)), type number}}),
#"Filtered Rows" = Table.SelectRows(#"Grouped Rows", each ([Count] = 8)),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Count"})
in
#"Removed Columns"