查找一个值,return 其下方的单元格(或下方最多 4 个单元格),其中第一个值以 1 开头
Find a value, return the cell below it (or up to 4 below it) where the first value starts with a 1
我在 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" 和 returns 下面的值它(名字)。举例说明:
=INDEX(A:A;MATCH("Product manager";A:A;0)+2;1)
这里+2return是产品经理的名字。
这个问题我需要你的帮助!
问题如下。在上面的大代码块中,您会看到一个位值,其中 1 对应于在 word 文件中单击的复选框。现在我想搜索 Type application 和 return only 与 1 对应的值,所以在这种情况下 1 客户端安装(单机).
上述使用 INDEX 和 MATCH 的解决方案不起作用,因为它仅 return 特定行低于 搜索查询(因此行 +1,或行 + 5).我想找到值 Type application,在它下面的 6 行中搜索,return 它会找到唯一的 1 个值。
假设我们有这样的数据:
我们想要:
- 找到帕克
- return 以 "1" 开头的第一个值低于 Puck
使用带有通配符的Match()可以找到带有Puck的行。所以在C5中,我们输入:
=MATCH("*Puck",A1:A9999,0)
然后我们再次使用 Match() 来查找下面以 "1" 开头的行。所以在 C6 我们输入::
=INDEX(A1:A9999,MATCH("1*",INDIRECT("A" & C5 & ":A9999"),0)+C5-1)
自然地,这种 2 单元格方法总是可以组合成一个单元格。
按照我更杰出的同事的例子,我开始尝试使用 INDEX 来解决这类问题,所以答案是这样的:-
=INDEX(INDEX(B:B,MATCH(D2,B:B,0)):B,MATCH(1,INDEX(A:A,MATCH(D2,B:B,0)):A,0))
因此它在 B 列中找到字符串(例如 charlie),并在 A 列中的其余范围内搜索“1”。
如果所有的值都像问题中一样在一列中,则公式变为
=INDEX(INDEX(A:A,MATCH(D2,A:A,0)):A,
MATCH("1*",INDEX(A:A,MATCH(D2,A:A,0)):A,0))
要限制范围和错误处理应该是这样的:-
=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:A,0)+1
F2 中的搜索结束可以是 E2+4,但您也可以搜索到下一个 'subheading' 使用:-
=MATCH(1,INDEX((INDEX(A:A,E2):A>"2")+(INDEX(A:A,E2):A=""),),0)+E2-2
在G2中搜索以“1”开头的单元格:-
=IFERROR(MATCH("1*",INDEX(A:A,$E2):INDEX(A:A,$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:A,E2):C,J2,K2))
我在 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" 和 returns 下面的值它(名字)。举例说明:
=INDEX(A:A;MATCH("Product manager";A:A;0)+2;1)
这里+2return是产品经理的名字。
这个问题我需要你的帮助!
问题如下。在上面的大代码块中,您会看到一个位值,其中 1 对应于在 word 文件中单击的复选框。现在我想搜索 Type application 和 return only 与 1 对应的值,所以在这种情况下 1 客户端安装(单机).
上述使用 INDEX 和 MATCH 的解决方案不起作用,因为它仅 return 特定行低于 搜索查询(因此行 +1,或行 + 5).我想找到值 Type application,在它下面的 6 行中搜索,return 它会找到唯一的 1 个值。
假设我们有这样的数据:
我们想要:
- 找到帕克
- return 以 "1" 开头的第一个值低于 Puck
使用带有通配符的Match()可以找到带有Puck的行。所以在C5中,我们输入:
=MATCH("*Puck",A1:A9999,0)
然后我们再次使用 Match() 来查找下面以 "1" 开头的行。所以在 C6 我们输入::
=INDEX(A1:A9999,MATCH("1*",INDIRECT("A" & C5 & ":A9999"),0)+C5-1)
自然地,这种 2 单元格方法总是可以组合成一个单元格。
按照我更杰出的同事的例子,我开始尝试使用 INDEX 来解决这类问题,所以答案是这样的:-
=INDEX(INDEX(B:B,MATCH(D2,B:B,0)):B,MATCH(1,INDEX(A:A,MATCH(D2,B:B,0)):A,0))
因此它在 B 列中找到字符串(例如 charlie),并在 A 列中的其余范围内搜索“1”。
如果所有的值都像问题中一样在一列中,则公式变为
=INDEX(INDEX(A:A,MATCH(D2,A:A,0)):A,
MATCH("1*",INDEX(A:A,MATCH(D2,A:A,0)):A,0))
要限制范围和错误处理应该是这样的:-
=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:A,0)+1
F2 中的搜索结束可以是 E2+4,但您也可以搜索到下一个 'subheading' 使用:-
=MATCH(1,INDEX((INDEX(A:A,E2):A>"2")+(INDEX(A:A,E2):A=""),),0)+E2-2
在G2中搜索以“1”开头的单元格:-
=IFERROR(MATCH("1*",INDEX(A:A,$E2):INDEX(A:A,$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:A,E2):C,J2,K2))