我有一个名为“参与者”的 Excel 表。我想过滤掉代表团名称(在此公式中)Participant[Delegation]
和事件名称。数据中的不同列表示一系列不同的事件。因此,我想动态更改字段值并让该字段值更改作为过滤器的数据列。据我了解,我应该使用 INDIRECT 函数将动态字段转换为 FILTER 公式使用的文本。
我一直在尝试使用嵌套在 FILTER 函数中的 INDIRECT 函数来动态设置返回的列。下面的公式似乎不起作用。有人能告诉我我哪里错了吗?
=CHOOSECOLS(FILTER(Participants, (Participants[Delegation]=C2)*(INDIRECT(TEXT(Participants,"[") & C3 & "]")=C3), "No Records Found"), 6, 7, 8, 9, 10, 11, 12, 13, 15)
答案1
假设您的数据如下所示:
您可以尝试使用 HSTACK 函数而不是 CHOOSECOLS:
=FILTER(HSTACK(Participants[Participant], Participants[Delegation], INDIRECT("Participants["&C3&"]")), Participants[Delegation]=C2)
FILTER 函数的第一个参数是 HSTACK 函数。在 HSTACK 中,您只需选择要返回的列。使用 INDIRECT 添加一个可使其动态化。
当然,将其包装在 IFERROR 中可以处理潜在的错误。您还可以使用数据验证来限制在 C3 中输入的值,以确保该列存在。