excel - Excel,要根据其值查找一个单元格,然后从先前找到的单元格位置开始搜索另一个单元格
问题描述
我有一个巨大的 Excel 表,我需要从中提取一些数据...
为了简化我想要做的事情,我将提供一个简单的例子......
现在请允许我解释一下这是什么以及我想要实现的目标......
在图像中,左侧的第一个表格包含以下内容:
B1/B2/B3 代表Building 1, 2 and 3 每栋楼包含3层,F1/F2/F3 每层有3个不同的任务在进行中,T1/T2/T3 每个任务前面有两个值V1/V2分别是任务的计划进度和实际进度。
在右表上,我想从左表中提取所有建筑物和所有楼层的任务 1 (T1) 的所有值...
第一个想法是通过将右表上的每个单元格与其左表上的对应对象链接来进行手动提取,但是,对于数百座建筑物、第 20 或第 30 层和第 10 项任务,这种手动提取似乎需要一个月的工作。 .
另一种方法是通过查找每个任务并将其数据提取到新表来自动执行此操作,但是这里有一个巨大的问题......
每个类似的任务都命名相同,因此在我们的示例中有九个 T1、九个 T2 和九个 T3。楼层也是如此,每层有三个......
唯一独特的是建筑物 B1/B2/B3
所以我的问题是,(解释我的想法):
有没有办法在我们的示例 B2(即 Building 2)中运行搜索,一旦找到它,它就会从该位置(A14)开始另一个搜索并向下寻找 F2 的“第一次唯一出现”(其中是 2 楼)(因此它也没有找到 3 号楼的 F2),一旦找到它,它就会从这个 B2/F2 位置 (A19) 开始新的搜索,然后向下寻找 T1 的“第一次唯一出现”(其中是任务 1),然后当它被发现时,它提取它前面的数字(假设是第二个值 V2 下的那个)并将其放在右表中,即 V2 下 B2 的任务 1 表(T1)中F2前面。
如何实现这一点?在我们的示例中,M5 中应该使用什么公式或任何内容来完成这项工作?如果通过某种方式甚至可能!
提前感谢您的帮助,最好的问候。
解决方案
ctrlM5 的公式将是(使用+ shift+作为数组公式输入enter):
=INDEX($B:$C,MATCH($I$1,IF(ROW($A:$A)>MATCH($I5,IF(ROW($A:$A)>MATCH(IF(M$2="",L$2,M$2),$A:$A,0),$A:$A),0),$A:$A),0),MATCH(M$3,$B$1:$C$1,0))
可以将其复制以填写表格的其余部分。
编辑您可以通过将其限制在特定范围而不是整列来使其更快:
=INDEX($B$1:$C$39,MATCH($I$1,IF(ROW($A$1:$A$39)>MATCH($I5,IF(ROW($A$1:$A$39)>MATCH(IF(M$2="",L$2,M$2),$A$1:$A$39,0),$A$1:$A$39),0),$A$1:$A$39),0),MATCH(M$3,$B$1:$C$1,0))
EDIT2:嵌套MATCH
公式的快速解释:从第三个MATCH
,开始MATCH(IF(M$2="",L$2,M$2),$A:$A,0)
。这会在 A 列中找到包含“B2”(14) 的行,因此公式变为。
=INDEX($B:$C,MATCH($I$1,IF(ROW($A:$A)>MATCH($I5,IF(ROW($A:$A)>14,$A:$A),0),$A:$A),0),MATCH(M$3,$B$1:$C$1,0))
“14”用于第二个的比较IF
,它将A
以数组形式返回列中的所有值,但前 14 行除外,这些值将FALSE
在数组中。然后第二个MATCH
可以在该数组 (19) 中找到“F2”的第一个实例。现在的公式是:
=INDEX($B:$C,MATCH($I$1,IF(ROW($A:$A)>19,$A:$A),0),MATCH(M$3,$B$1:$C$1,0))
重复与之前相同的过程,在第 19 行之后获取“T1”的第一个实例的行。这是馈送到 的行INDEX
。最后一个MATCH
给出 的列INDEX
。
推荐阅读
- discrete-mathematics - 使用双射规则计算具有偶校验的二进制字符串
- amazon-web-services - CloudWatch 到 SNS:如何为 SNS 订阅过滤设置消息属性?
- azure - 在 Azure 中调试 asp .NET Core 5 beta
- android - 离线 Android Gradle 插件
- android - 在 Android 上的 Kotlin 中,如何在一个或每个循环期间在不可变列表中发生空指针异常?
- mysql - Mysql 按速度排序
- python - 使用 python 执行命令行脚本时找不到“__main__”模块
- java - Spring Webflux - 抛出检查的自定义异常(不是 RuntimeException)的正确方法
- java - 在 Postman 上测试时,GraphQL 查询语法错误。SpringBoot 服务器
- python - Seaborn 不断为多图翻转我的行