在句子范围内查找单词范围

在句子范围内查找单词范围

基于以下示例:

在此处输入图片描述

$D$2:$D$6我想在范围内的句子中查找范围内的单词$A$2:$A$8,并使用侧栏中的值(此处Tag)。到目前为止,我正在这样做:

B2 formula
------------------
=IF(NOT(ISERROR(SEARCH($D$2,A2))),$E$2,
IF(NOT(ISERROR(SEARCH($D$3,A2))),$E$3,
IF(NOT(ISERROR(SEARCH($D$4,A2))),$E$4,
IF(NOT(ISERROR(SEARCH($D$5,A2))),$E$5,
IF(NOT(ISERROR(SEARCH($D$6,A2))),$E$6,
"other"
)
)
)
)
)

虽然这可行,但我的公式与我拥有的查找词的数量一样长,而我想使用一个范围使其更清晰且更易于维护(即现在如果我添加查找词,我需要IF在我的公式中为该词添加一个语句)。

有没有办法用基于范围的公式复制上述解决方案?

答案1

您可以使用 B2 中复制下来的这个普通公式

=LOOKUP(2^15,SEARCH(D$2:D$6,A2),E$2:E$6)

查看有关该公式的讨论和更多信息这里

答案2

您需要使用数组公式。在单元格 B2 中,输入:

=IFERROR(OFFSET($E$1,MATCH(1E+37,SEARCH(D$2:D$6,A2),1),0),"other")

并按Ctrl+Shift+Enter将其作为数组公式输入。

它使用SEARCH函数匹配列表中的每个单词,并找到最后一个小于“大数字”(此处为 1E+37)的单词。如果有多个匹配项,它将找到列表中最远的那个(例如,“一辆红色汽车和一只黑猫”将返回“对象”)。如果没有找到,则位为IFERROR您提供“其他”。

当然,随着列表变长,您必须扩展它。(Ctrl+Shift+Enter编辑时务必记住这一点!)

答案3

为了解决这个问题,我在标有“更新”的页面上启用宏的按钮上使用了一些 VBA,以便您可以根据需要附加工作表;

Private Sub CommandButton1_Click()
Dim Target, cell As Range
Set Target = Range(Range("A1"), Range("A65536").End(xlUp))

    Dim term, tag As String

        term = "cat"
        tag = "animal"
        For Each cell In Target
            If InStr(1, cell, term, 1) Then cell.Offset(0, 1).Value = tag
        Next cell

        term = "dog"
        tag = "animal"
        For Each cell In Target
            If InStr(1, cell, term, 1) Then cell.Offset(0, 1).Value = tag
        Next cell

        i = "car"
        k = "object"
        For Each cell In Target
            If InStr(1, cell, term, 1) Then cell.Offset(0, 1).Value = tag
        Next cell

        term = "plane"
        tag = "object"
        For Each cell In Target
            If InStr(1, cell, term, 1) Then cell.Offset(0, 1).Value = tag
        Next cell

        term = "sister"
        tag = "person"
        For Each cell In Target
            If InStr(1, cell, term, 1) Then cell.Offset(0, 1).Value = tag
        Next cell

    End Sub

的基本格式;

term= "cat"
tag = "animal"
For Each cell In Target
    If InStr(1, cell, i, 1) Then cell.Offset(0, 1).Value = k
Next cell

可以复制并更改术语和标签的变量值,以适应您想要的任何搜索词和标签,而不必存在于工作表中。

还值得注意的是,您的 IF 方程使用双重否定,您可以使用 IF(SEARCH 而不是 IF(NOT(ISERROR( SEARCH。

相关内容