2 回答
![?](http://img1.sycdn.imooc.com/54584f240001db0a02200220-100-100.jpg)
TA贡献1801条经验 获得超16个赞
为此,您需要两个函数:
MATCH 将在范围内查找值并返回其位置。 INDIRECT 将允许您指定表示范围的字符串,并将返回该范围中包含的值。
匹配功能
间接函数
做了这样的测试:
我在K9中的公式是:
=INDIRECT("A"&MATCH(L4;A:A;0)&":B"&(MATCH(L4;A:A;0)-1+L5))
它是这样工作的:
MATCH(L4;A:A;0)
会在A列中找到ID位置。因为我说我是在整列中搜索,所以返回的值是ID所在的行号。所以如果我想找到 ID 2,它将返回3
。我们将上一步中的数字与字符串结合起来,得到一个像 一样的字符串
A3:B5
。5 是从MATCH(L4;A:A;0)-1+L5)
我想要查找的 ID 的行号中获得的,将要获取的行数相加,然后减去 1。INDIRECT("A3:B5")
是我想要的并且已返回。
注意:根据您的 Excel 版本,间接是否会自动扩展到相邻单元格。
注 2:如果未找到 id,MATCH 将引发错误,并且公式将不起作用。
首先使用 COUNTIF 检查 ID 是否存在于 A 列中,如果为真,则执行 MATCH 和 INDIRECT。像这样的东西:
=IF(COUNTIF(A:A;L4)>0;INDIRECT("A"&MATCH(L4;A:A;0)&":B"&(MATCH(L4;A:A;0)-1+L5));"ID NOT FOUND")
如果返回的行数为 0 或更少,则相同。
![?](http://img1.sycdn.imooc.com/54584d9f0001043b02200220-100-100.jpg)
TA贡献1111条经验 获得超0个赞
根据您的 Excel 版本,有多种公式。
如果您有动态数组(Excel 2016+,如果我没记错的话),您可以在单个单元格中输入以下内容。如果您的 Excel 没有动态数组,则需要进行修改。
=INDEX(fruitTbl,Start,0):INDEX(fruitTbl,Count+Start-1,0)
我将数据范围转换为 Excel 表,但如果您愿意,也可以使用常规寻址。对于表,第一行数据将是,1
因为表仅返回数据主体范围。
如果您没有动态数组,请尝试
在某个单元格中输入:
=IFERROR(INDEX(INDEX(fruitTbl,Start,0):INDEX(fruitTbl,Count+Start-1,0),ROWS($1:1),COLUMNS($A:A)),"")
然后向右拖动一列
选择两个单元格并向下拖动至少直到您开始看到空白单元格
添加回答
举报