我在 Excel 中有 3 列如下所示(从中摘录一些内容来说明我的意思):
#FID ID result
1004321 1004321 0
1006573 1006573 1
.
.
.
1079013 1079013 0
1081778 1079734 1
1082015 1081778 0
1087533 1082015 1
.
.
.
#FID
是 的子集ID
。但是,result
对应于 的所有ID
超出了 的范围#FID
。我需要看到的是对应于 的所有的结果#FID
,即我需要从ID
和中提取result
对应于 中形成的 ID 子集的行#FID
。有没有一种简单的方法可以在 Excel 或其他方式中执行此操作?
澄清
#FID
只是 的一个子集ID
,即 中包含的所有标识符#FID
也包含在 中ID
- 但是,ID 包含的标识符比我实际需要的要多。唯一感兴趣的是 中的标识符#FID
。但是,我的结果列对应于ID
,这意味着它包含我不想要的标识符的结果。我需要 中包含的标识符子集的所有结果#FID
。
预期结果的模拟
#FID result
1004321 0
1006573 1
.
.
.
1079013 0
1081778 0
1082015 1
模拟结果解释:期望的结果是得到与列 中存在的每个数字相对应的所有结果#FID
,其中#FID
是较大列的子集ID
(即ID
包含 中的所有数字#FID
和更多)。目前,我有result
对应于列 的ID
,而我需要的是result
对应于 的#FID
。
实际数据的 Pastebin(不大): https://pastebin.com/KvzwvvGn
答案1
答案2
经过聊天讨论,我认为逻辑如下:
- 过滤列表并仅返回 #FID 列中包含值的行
- 对于过滤表中的每个值,在 ID 列中找到 #FID 数字,并从找到的 ID 的结果列中返回该值。
为了方便参考,我使用 Ctrl+T 将源数据转换为 Excel 表格。
该解决方案使用两个公式。在单元格 E2 中,筛选公式返回 #FID 列中包含值的所有行:
=FILTER(Table2['#FID],Table2['#FID]>0)
在单元格 F2 中,Xlookup 在 ID 列中查找 FID 号码并从结果列中返回值。
=XLOOKUP(E2#,Table2[ID],Table2[result])
使用 Office 365,公式将自动延伸至所需的范围,无需复制下来。
如果你不想使用表格,你可以使用从第 2 行开始的范围引用,例如
=FILTER(A2:A100,A2:A100>0)
=XLOOKUP(E2#,B2:B100,C2:C100)
Excel 表格的优点是,如果添加或删除数据,它将自动调整引用的大小。
如果这对您有用,请告诉我。