我最近需要查找在列中任意位置出现的匹配项。这篇文章在这里
给了我执行此任务所需的确切信息。后来,我发现我需要这样做,并从单独的列中添加其他条件。我访问过许多网站,并尝试了许多不同的公式来实现这一点,但到目前为止,我的公式每次都失败了。为了让您直观地了解我想要做的事情,我在下面附上了一张图:
了解以下内容可能会有所帮助:
- E 列中的项目总数比 T 列中的项目总数少(少很多)。
- E 列中的单元格包含一个单词,并且该列中不存在重复项。
- T 列中的单元格包含一个单词,并且该列中不存在重复项。
- 第 V 列中的单元格包含“匹配”、“þ”(选中的复选框)或空白。
- E 列单元格的内容可能存在于 T 列,也可能不存在。
- “匹配”表示 T 列中的单元格与上图中未显示的列中的单词匹配。换句话说,它并不旨在传达与 E 列中单元格内容匹配的意思。
现在,我想用这些信息列来执行以下操作:
- 如果 E 中某个单元格的内容与 T 中的任何单元格都不匹配,在 X 列中返回“仅 V3”。
- 如果 E 单元格的内容位于 T 列,且 V 列包含“匹配”,在 X 列中返回“匹配”。
- 如果 E 单元格的内容位于 T 列,并且 V 列包含复选框 ("þ"),在 X 列中返回“þ”(选中的复选框)。
我希望这个问题不太难解决。尽管我很难找到一个可以执行此操作的公式,但我感觉这个社区中有人知道如何设置它。
为了防止出现差异,我需要此公式适用于 Excel 2007。
在此先感谢那些知道如何做到这一点并愿意与我们分享的人。
答案1
如果在 T 列中找到 E 中单元格的内容并且 V 列包含“匹配”,则返回 X 列中的“匹配”。
如果在 T 列中找到 E 中单元格的内容并且 V 列包含复选框(“þ”),则返回 X 列中的“þ”(选中的复选框)。
我只需添加“如果 E 中单元格的内容位于 T 列,且 V 列为空,则返回 X 列中的空字符串”,
然后我们可以将上述所有内容简化为如果 E 中单元格的内容位于 T 列,则返回 X 列中的 V 列
所以你不需要使用复杂的条件:
=SUBSTITUTE(IF(ISNUMBER(MATCH(T1,$E$1:$E$19,0)),V1,"Only "&ADDRESS(ROW(V1),COLUMN(V1),4)),"0","")
在哪里
ISNUMBER(MATCH(T1,$E$1:$E$19,0))
- 检查 T1 中的值是否存在于 E 列中"Only "&ADDRESS(ROW(V1),COLUMN(V1),4))
- 生成 V1 的地址IF(ISNUMBER(...),V1,"Only "&...)
- 如果 E 列中存在 T1,则输入 V1,否则“仅 V1”=SUBSTITUTE(IF(...),"0","")
- 如果 V1 为空白,则公式会将其转换为0
,这会将其转换为""
- 这是一个数组公式,因此您需要按CTRL++插入它SHIFTENTER
答案2
在尝试了多次以我最初设想的方式解决这个问题之后,我最终决定采用一种更实用、更简单的方法来解决同样的问题。最初,我尝试将较短列表中的单词与较长列表中的单词(其中包含额外的信息列)进行匹配。随着我对公式和函数的头脑风暴逐渐减少,我坐下来思考是否有不同的方法,并开始思考,如果我只是尝试将较长列表与较短列表进行匹配,这可能会容易得多。然后我发现了以下帖子
Excel:检查列中是否存在单元格值,然后获取下一个单元格的值
我在其中发现了以下公式:
=IF(ISERROR(MATCH(A1,B:B, 0)), "无匹配", "匹配")
我使用这个公式将它应用于我的问题[简化以使其更易于阅读]:
=IF(ISERROR(MATCH(C2,'[OTHER WORKBOOK.xlsx]SHEET'!$F:$F, 0)), "无匹配", "匹配")
注意我原来的E列因为其他原因插入了一列变成了F列。
最后的结果如下:
以单词“vigor”为例,这张表现在告诉我的是,“vigor”与另一个列表中的单词匹配,但不与我目前正在研究的列表匹配(因为 J 列包含“无匹配”),并且它符合我已确定的另外两个标准。我不知道这种解决方案是否适用于每种情况,但它对我的目的来说很有效,如果你正在阅读这篇文章,也许这也是一种适合你的解决方案。
如果有人知道如何按照我最初设想的方式解决这个问题,或者有更好的解决方案,我将暂时不给自己打绿色勾。因此,如果您一直在研究解决方案,或者现在想要解决这个问题,并且可以想出一些您认为有用的东西,请毫不犹豫地发布您的答案。