代码之家  ›  专栏  ›  技术社区  ›  JuliusSecret

查找一个值,返回其下方(或其下方最多4个)的单元格,其中第一个值以1开头

  •  0
  • JuliusSecret  · 技术社区  · 10 年前

    我在Excel中导入了一个word文件。该文件位于A列,长达400-500行。举例说明:

    Type application
    0 shortcut
    1 Client installation (standalone)
    0 Client installation with data on the network (fileshare needed)
    0 Client/server (server needed)
    0 Webbased without dependancies
    0 Webbased with dependancies
    Importancy
    0 Company critical
    1 Important
    0 Supportive
    

    以及许多其他感兴趣的领域。现在我有一个公式 搜索 对于某个文本值,例如“Product manager”和 回报 下面的值(名称)。举例说明:

    =INDEX(A:A;MATCH("Product manager";A:A;0)+2;1)
    

    这里,+2返回产品经理的姓名。

    我需要你的帮助!

    问题如下。在上面的大代码块中,您可以看到一个位值,1对应于单词文件中单击的复选框。现在我想搜索 类型应用程序 仅返回 与1对应的值,因此在本例中 1客户端安装(独立) .

    上面使用INDEX和MATCH的解决方案不起作用,因为它只返回某一行 在下面 搜索查询(因此行+1或行+5)。我想找到价值 类型应用程序 ,serach在其下面的6行中,并返回它将找到的唯一1个值。

    2 回复  |  直到 10 年前
        1
  •  1
  •   Tom Sharpe    10 年前

    以我更杰出的同事为例,我开始尝试使用INDEX来回答这类问题,因此答案大致如下:-

    =INDEX(INDEX(B$1:B$10,MATCH(D2,B$1:B$10,0)):B$10,MATCH(1,INDEX(A$1:A$10,MATCH(D2,B$1:B$10,0)):A$10,0))
    

    因此它在列B中找到字符串(例如charlie),并在列A中的其余范围中搜索“1”。

    enter image description here

    如果所有值都在问题中的一列中,则公式变为

    =INDEX(INDEX(A$1:A$10,MATCH(D2,A$1:A$10,0)):A$10,
    MATCH("1*",INDEX(A$1:A$10,MATCH(D2,A$1:A$10,0)):A$10,0))
    

    enter image description here

    要限制范围和错误处理,应该如下所示:-

    =IFERROR(
    INDEX(INDEX(A:A,MATCH(D2,A:A,0)):
    INDEX(A:A,MATCH(D2,A:A,0)+4),
    MATCH("1*",INDEX(A:A,MATCH(D2,A:A,0)):
    INDEX(A:A,MATCH(D2,A:A,0)+4),0)),
    "No entry")
    

    如果希望以相同的方式搜索多个列,可以使用相同类型的公式,但如果不使用帮助列,则不实用。所以在两列之间复制它,然后显示第一个匹配项。

    在E2中设置搜索开始:-

    =MATCH(D2,A$1:A$20,0)+1
    

    F2中的搜索结束可能只是E2+4,但您也可以使用以下方法搜索下一个“副标题”:-

    =MATCH(1,INDEX((INDEX(A$1:A$20,E2):A$20>"2")+(INDEX(A$1:A$20,E2):A$20=""),),0)+E2-2
    

    在G2中搜索以“1”开头的单元格:-

    =IFERROR(MATCH("1*",INDEX(A$1:A$20,$E2):INDEX(A$1:A$20,$F2),0),"")
    

    并拉入H2和I2。

    获得J2三场比赛中的第一场:-

    =MIN(G2:I2)
    

    并找出它适用于K2中的哪些列:-

    =IF(J2=0,"",MATCH(J2,G2:I2,0))
    

    最后使用J2和K2中的行和列获得匹配的单元格:-

    =IF(K2="","No entry",INDEX(INDEX(A$1:A$20,E2):C$20,J2,K2))
    

    enter image description here

        2
  •  0
  •   Gary's Student    10 年前

    假设我们有如下数据:

    enter image description here

    我们希望:

    1. 发现 Puck公司
    2. 返回以开头的第一个值 "1" 在下面 Puck公司

    使用 匹配() 使用通配符可以使用 Puck公司 。所以在 第5页 ,我们输入:

    =MATCH("*Puck",A1:A9999,0)
    

    然后我们使用 匹配() 再次查找下面以 "1" 。所以在 第6页 我们输入::

    =INDEX(A1:A9999,MATCH("1*",INDIRECT("A" & C5 & ":A9999"),0)+C5-1)
    

    enter image description here

    自然,这种2单元方法总是可以组合成一个单元。

    推荐文章