我有 9 列文本数据,需要知道所有 9 列(或可能是不同的列组合)中出现的常用术语。我可以处理 2 列,=IF(ISERROR(MATCH(A1,$C$1:$C$133,0)),"",A1)
并且可以找到整个电子表格中重复的文本值,但不知道如何查看多个不同列中的常见文本值。
有没有办法修改=IF(ISERROR(MATCH(A1,$C$1:$C$133,0)),"",A1)
公式,以便我可以比较 3、4、... 9 列,而不仅仅是 2 列?如果有帮助的话,我正在使用 Microsoft 2013。
答案1
我有一个可行的解决方案,但它有点丑陋。我假设您正在查看单元格 A1,看看它是否出现在所有 3 列(D、E、F)中。
=MIN(MAX(($D$1:$D$3=$A1)*1),MAX(($E$1:$E$3=$A1)*1),MAX(($F$1:$F$3=$A1)*1))
这是一个数组公式,因此需要输入Ctrl+Shift+回车
现在从内到外,它是如何工作的
($D$1:$D$3=$A1)*1将 D1 到 D3 与 A1 进行比较,返回 true 或 false *1 将其转换为 1 和 0
最大限度如果第一个公式在 D 列中找到匹配项,则返回 Max 将返回的 1。如果未找到匹配项,则最大(唯一)值为零。
分钟如果所有列都包含匹配项,则所有最大公式都将包含 1,因此最小值为 1。如果所有列中都没有匹配项,则最小值为零。
如果要计算匹配的列数,请使用 sum 而不是 min 和 rememeberCtrl+Shift+回车。
注意:您要搜索的每一列都会有一个最大公式。
答案2
此设置适用于任意数量的列。
首先进入名称管理器(公式选项卡)并定义以下内容:
Name: Range1
Refers to: =$A$1:$I$8
(或者无论所讨论的范围是什么。)
Name: Arry1
Refers to: =COLUMN(Range1)-MIN(COLUMN(Range1))
Name: Arry2
Refers to: =ROW(INDEX(Range1,,1))-MIN(ROW(INDEX(Range1,,1)))+1
Name: Arry3
Refers to: =MMULT(0+(COUNTIF(OFFSET(INDEX(Range1,,1),,Arry1,,),INDEX(Range1,,1))>0),ROW(INDIRECT("1:"&COLUMNS(Range1)))^0)
退出名称管理器。
所需数组公式那么:
=IFERROR(INDEX(INDEX(Range1,,1),SMALL(IF(FREQUENCY(IF(INDEX(Range1,,1)<>"",IF(Arry3=COLUMNS(Range1),MATCH(INDEX(Range1,,1),INDEX(Range1,,1),0))),Arry2),Arry2),ROWS($1:1))),"")
一直复制下去直到结果变为空白。
问候
数组公式的输入方式与“标准”公式不同。Enter您不必只按 ,而是先按住Ctrl和Shift,然后再按Enter。如果您操作正确,您会注意到 Excel 会{}
在公式周围加上花括号(但不要尝试自己手动插入这些括号)。