如何使用结构化引用来标识列并将标识列中的行值用作条件?

How can I use structured references to identify column and use row values in the identified column as criteria?

我有一个 Excel 2013 table,名为 'student_courses',列为:stu_id、stu_major、stu_course 和一个计算名为 validated_crs 的列。

我正在尝试为名为 validated_crs 的计算列创建一个计算每条记录的公式。

在这个计算的列中,我需要引用stu_major列中的值来在第二个table、'qualified_courses'中找到一个列。 'qualified_courses' table 中的 headers 与 stu_major 值相关。

我需要检查 'qualified_courses' 中相关列中的任何值是否与 'student_courses' [=59= 中正在评估的记录中的 'stu_course' 值相匹配].

如果相关列中的任何值与第一个 table 中任何给定记录的 stu_course 值匹配,则它应该 return 值 "validated" 在计算列中。

到目前为止,我已经找到了如何使用 =INDIRECT("qualified_courses"&"["&[@[stu_major]]&"]") return 第二个 table 列值,但我不确定如何使用 return ed 值集以检查 stu_course 值以查看是否存在匹配项。

非常感谢,

林赛

student_courses table:

stu_id     stu_major     stu_course     validated_crs
5432       MULTE         BIOL1102       validated
5432       MULTE         MUSC1303       NULL
5432       MULTE         ENGL2303       validated
6737       MULTM         HIST1104       validated
6737       MULTM         BIOL1222       NULL
6737       MULTM         EDUC2303       validated
6737       MULTM         EDUC1302       validated

qualified_courses table:

MULTA      MULTB         MULTE          MULTM
ART1301    HIST1301      BIOL1102       HIST1104
BIOL1322   POLS2210      ENGL2303       EDUC2303
ENGL1440   IS3340        ART3303        EDUC1302
           BIOL2302      BIOL1222       MUSC1303

这个公式建立在你的基础上:

=IF(ISNUMBER(MATCH([@[stu_course]],INDIRECT("qualified_courses"&"["&[@[stu_major]]&"]"),0)),"Validated","")

我们使用 MATCH 函数搜索课程的 returned 列。如果有,那么它 return 是一个数字,否则就是一个错误。

IF 用来确定结果的 ISNUMBER returns TRUE/FALSE。

但我不喜欢 INDIRECT() 公式,因为它是一个 VOLATILE 公式。我更喜欢 INDEX 公式:

=IF(ISNUMBER(MATCH([@[stu_course]],INDEX(qualified_courses,0,MATCH([@[stu_major]],qualified_courses[#Headers],0)),0)),"Validated","")

哪个会return一样。

我们使用 INDEX/MATCH 而不是 INDIRECT 来查找正确的列。再次 MATCH returns 一个数字,这次是第二个 table.

中的列

INDEX() 使用此数字 return 该位置的完整列。第二个标准的 0 表明我们想要完整的列。

然后和第一个一样

VOLATILE 公式是每次重新计算的公式 Excel 重新计算它所绑定的数据是否发生变化。

非易失性公式仅在它们引用的数据发生变化时才重新计算。

图中的validated_cs栏是最上面的公式,下一栏是最下面的: