【问题标题】:How can I find/highlight recurring values in multiple columns on Excel如何在 Excel 的多列中查找/突出显示重复值
【发布时间】:2020-01-27 07:06:53
【问题描述】:

我需要在我的工作表(found here) 的 8 列中的每一列中查找/突出显示重复值。这些列是从 D0 到 D8 并且其中有不同的行。我已经尝试过here 提供的解决方案。我使用的解决方案是;

(1) =LOOKUP("zzz",CHOOSE({1,2},"",INDEX(A$2:A$10,MATCH(0,COUNTIF(E$1:E1,A$2:A$10))+IF(IF(COUNTIF( B$2:B$8,A$2:A$10)>0,1,0)+IF(COUNTIF(C$2:C$9,A$2:A$10)>0,1,0)=2,0,1) ,0))))

(2) =INDEX($A$2:$A$10, MATCH(0, COUNTIF($E$1:E1, $A$2:$A$10)+IF(IF(COUNTIF($B$2:$B$8, $A$2: $A$10)>0, 1, 0)+IF(COUNTIF($C$2:$C$9, $A$2:$A$10)>0, 1, 0)=2, 0, 1), 0))

我根据自己的工作表替换了这些值,但每次我都得到“0”作为答案,即使这是不可能的。只需查看前 2 行,就可以很容易地判断出所有 8 列中都出现了值。

我是 Excel 初学者,目前使用 Microsoft Excel 2016 for Mac(版本 16.16.14)。

【问题讨论】:

  • 我已经修改了我的解决方案,我想我已经从示例答案中找到了问题。如果我的解决方案不适合您,请告诉我。

标签: excel excel-formula excel-2016


【解决方案1】:

编辑#2

在您提供的第二个公式的嵌套 IF 函数中发现错误。

在公式中您尝试使用IF(IF(A)+IF(B)=2,0,1),但我认为正确的方法应该是IF((IF(A)+IF(B))=2,0,1)

根据您提供的示例工作表,在单元格J2 中输入以下公式:

=INDEX(A$2:A$861,MATCH(0,COUNTIF(J$1:J1,A$2:A$861)+IF((IF(COUNTIF(B$2:B$243,A$2:A$861)>0,1,0)+IF(COUNTIF(C$2:C$162,A$2:A$861)>0,1,0)+IF(COUNTIF(D$2:D$132,A$2:A$861)>0,1,0)+IF(COUNTIF(E$2:E$118,A$2:A$861)>0,1,0)+IF(COUNTIF(F$2:F$112,A$2:A$861)>0,1,0)+IF(COUNTIF(G$2:G$94,A$2:A$861)>0,1,0)+IF(COUNTIF(H$2:H$81,A$2:A$861)>0,1,0))=7,0,1),0))

请注意,它是一个数组公式,所以在输入上述公式后需要进行以下操作:

选择范围,按CONTROL + U然后按COMMAND + RETURN kbd>

如果上述方法不适合您:

选择范围,按 CONTROL + U 然后按 COMMAND + SHIFT + RETURN

如果您仍然不清楚,请阅读此内容:How to Use Array Formula in Excel Mac(谁知道在 Excel for Mac 中使用数组公式是如此痛苦......)

向下拖动公式,直到列表返回 #N/A 错误,这意味着您已找到所有常见值。

假设您将这个常用值列表命名List,我在 Excel 2016 for Windows 中的经验是您返回源表,突出显示整个表,进入Home Tab下的Conditional Formatting,进入New Rule...,进入最后一个选项,输入如下公式作为格式化规则:

=MATCH(A2,List,0)>0

鉴于Excel 2011 and Excel 2016 for Mac 不支持 Power Query,请忽略以下使用 Power Query 的方法。在这种情况下,FYI 电源查询方法比上述数组公式方法要快得多......

从您的帖子和您提供的示例来看,我认为您希望找到 all 8 列中出现的常见值,这意味着您将忽略 7、6、5 中出现的值或更少的列。

鉴于您正在处理大型数据集 (860 x 8),我建议使用 Power Query 来解决问题。 Power Query 是 Excel 2010 Professional Plus 和所有更高版本的 Excel 中的内置函数。

步骤是:

  1. 使用Data 选项卡下的From Table 函数将数据加载到Power Query 编辑器;
  2. 突出显示所有列,然后使用Transform选项卡下的Unpivot Columns功能将表格转换为2列表格;
  3. 使用Transform标签组Value列下的Group By功能,通过计算不同的行数,如下所述;

  1. 右键单击列标题右侧的 filer 框以通过8 过滤列表,这将返回出现在所有 8 列中的值;
  2. 关闭并加载列(实际上是一个单列表)到新工作表(默认情况下)。

这里是后台电源查询M码,仅供参考。所有步骤都使用编辑器的内置功能,非常简单。

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"

【讨论】:

  • 所以我从嵌套 IF 语句中的错误开始,在应用您更新的公式后,我得到一个错误,“检测到循环依赖”
  • 所以将公式粘贴到K1中,然后使用control+shift+ enter (mac),在K1中只得到1个值。我非常肯定还有其他共同价值观。
  • 好的,将第一个值单元格向下拖动并获得 29 个共同值,直到我开始看到#NA :) 得到我的答案!现在尝试找出如何获取在这 8 列中的任何一个中出现 7 次的值:)
  • @shahz 您需要从第二行开始,所以如果您将公式粘贴到 K1 中,则会出现循环引用错误。
  • 我已接受您的回答 :) 我还将 =7 更改为 =6,但它仍然给了我所有 8 列中出现的值。
猜你喜欢
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多