澄清

澄清

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

由于您没有指定您使用的是哪个版本的 Excel,因此我想建议一种适用于每个版本的方法。

在此处输入图片描述

  • 单元格中的公式D86

    =IFERROR(IF(AND(ISNUMBER(A86),A86>0),VLOOKUP(A86,B$86:C$96,2,FALSE),""),"")
    

注意:

另外,您可以使用这个简单版本Index & Match,不测试 FID 数据,因为数字也大于零。

=IFERROR(INDEX($C$86:$C$96, MATCH(A86,$B$86:$B$96,0)), "")

根据需要调整公式中的单元格引用。

答案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 表格的优点是,如果添加或删除数据,它将自动调整引用的大小。

如果这对您有用,请告诉我。

相关内容