0

与我定义的可用类型相比,我想在整个列中搜索不匹配(我犯的类型错误)。如果有任何不匹配,我希望在下面的单元格中显示该不匹配的单元格。

所以这就是我所拥有的(出于隐私原因,我用同义词替换了实际类型,显然它们没有命名为 type# irl):

E 列:E

  • 类型 1 (E1)
  • 5型(E2)
  • 类型 3 (E3)
  • 类型 3 (E4)
  • 7型(E5)
  • Tipe2 (E6)
  • 类型 9 (E7)
  • (E8)
  • 类型 3 (E9)

K2 栏:K10

  • 类型 1 (K2)
  • 类型 2 (K3)
  • 3型(K4)
  • 4型(K5)
  • 5型(K6)
  • 6型(K7)
  • 7型(K8)
  • 8型(K9)
  • 9型(K10)

例如,我在单元格 E6 中创建了类型错误“tipe2”,并在单元格 E8 中添加了一个空行。现在我想要一个公式,当 E:E 列中的某些内容与 K2:K10 列中的一种类型不匹配时显示“错误”,否则不打印任何内容或“未找到错误”。同时我希望在一个单独的单元格中不匹配单元格的坐标(在本例中为 E6)。

我已经得到了获取不匹配单元格的部分,其中 my_string 应替换为已找到的不匹配字符串:

="E"&MATCH("my_string",E:E,FALSE)+IF(COUNTIF(E:E,"my_string")=1,0,COUNTIF(E:E,"my_string")-1)

PS:我不想要 VBA 脚本!我只想要两个单元格内的公式。看看我是否犯了不匹配,如果我确实犯了不匹配,我想要单元格的坐标(或者当发现多个不匹配时,最后一个单元格的坐标)。

4

2 回答 2

1

您可以使用所谓的数组公式来实现这一点。作为说明,我在这张图片中模拟了你的情况:

Excel 情况图片

重要的单元格是H1,它包含列中违规单元格的索引E。为了简单起见,我介绍了两个命名范围items,包含单元格E1:E9lookup包含单元格K2:K10。中的公式H1

=MAX(IF(ISBLANK(items),0,IF(ISERROR(MATCH(items,lookup,0)),ROW(INDIRECT("1:"&ROWS(items))),0)))

这是一个数组公式,这意味着您必须使用Ctrl- Shift-来确认Enter。如果你做对了,公式会在它周围显示大括号——你不需要自己输入。此公式遍历名为 的范围内items的所有单元格,为所有空白单元格或在名为 的范围内具有匹配项的所有单元格创建一个值为 0 的数组lookup。对于剩余的单元格,插入的值等于行号。然后最大值被接管。

因此,H1将包含最后一个违规项目的索引。如果所有项目都正常,则显示值 0。

单元格G1显示Error是否发现了任何违规项目,OK否则显示。公式是

=IF(H1=0,"OK","Error")

最后,I1通过显示实际的违规项目

=IF(H1>0,INDEX(items,H1),"")

如果您不想使用命名范围,请替换items$E$1:$E$9和。lookup$K$2:$K$10

如果违规单元格是空单元格,I1则将包含值 0。

我认为 in 的值H1对分析很有用,但如果你不想要它,你可以隐藏它。或者您可以将该公式折叠到 和 中使用的公式中G1I1但公式变得非常复杂。

包含此答案的工作簿在此处上传

作为旁注:您是否知道您可以使用 Excel 的数据验证功能和下拉列表来避免您正在查看的这些类型的拼写错误。这可能对你有用。文章在 Microsoft Excel 中使用数据验证下拉菜单中给出了一个示例

于 2013-03-09T14:53:02.300 回答
0

最简单的方法是;使用过滤器“不包含”

Excel 2010 解决方案,与 2003 类似

  • 选择整列
  • 选择数据
  • 选择过滤器
  • 选择过滤器选项(列顶部的三角形)
  • 选择文本过滤器
  • 选择不包含
  • 输入类型
  • 根据需要修改并重新运行。
于 2013-03-09T13:38:02.130 回答