找到一个值,返回它下面的单元格(或者在它下面最多4个单元格),其中第一个值以1开头

时间:2015-07-24 11:04:17

标签: excel import ms-word excel-formula formulas

我在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

还有许多其他感兴趣的领域。现在我有一个搜索以获取特定文本值的公式,例如“产品经理”和返回下面的值(名称)。举例说明:

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

此处,+ 2返回产品经理的名称。

问题我需要您的帮助!

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

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

2 个答案:

答案 0 :(得分:1)

Following the example of my more illustrious colleagues, I have started trying to use INDEX for this sort of question, so the answer would be something like this:-

=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))

so it finds the string (e.g. charlie) in column B, and searches the rest of the range in column A for a '1'.

上的click()方法

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

答案 1 :(得分:0)

假设我们有以下数据:

enter image description here

我们希望:

  1. 找到 Puck
  2. 返回以“1”开头的第一个值 Puck
  3. Match()与通配符一起使用,可以使用 Puck 找到该行。所以在 C5 中,我们输入:

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

    然后我们再次使用 Match()来查找以“1”开头的行。所以在 C6 中我们输入::

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

    enter image description here

    当然,这种2细胞方法总是可以组合成一个细胞。