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

我有一个名为“student_courses”的Excel 2013表,其中包含stu_id,stu_major,stu_course和一个名为validated_crs的计算列。

我正在尝试为名为validated_crs的计算列创build一个计算每个logging的公式。

在这个计算列中,我需要引用stu_major列中的值来查找第二个表“qualified_courses”中的列。 “qualified_courses”表中的标题与stu_major值相关联。

我需要检查'qualified_courses'中相关列中的任何值是否与'student_courses'表中正在评估的logging中的'stu_course'值相匹配。

如果相关列中的任何值与第一个表中的任何给定logging的stu_course值匹配,则它应该在计算列中返回“已validation”值。

到目前为止,我已经find了如何使用=INDIRECT("qualified_courses"&"["&[@[stu_major]]&"]")返回第二个表列值,但我不知道如何使用返回根据stu_course值检查是否存在匹配值。

非常感谢,

林赛

student_courses表格:

 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表格:

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

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

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

我们使用MATCH函数来search课程的返回列。 如果有一个,那么它返回一个数字,否则一个错误。

ISNUMBER返回TRUE / FALSE,IF用来确定哪个结果。

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

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

哪个会返回相同的。

而不是INDIRECT来find正确的列,我们使用INDEX / MATCH。 MATCH再次返回一个数字,这是第二个表中列的时间。

INDEX()使用这个nubmer来返回那个位置上的整个列。 在第二个标准的0表明我们想要全列。

那就像第一个一样。

VOLATILE公式是那些每次重新计算它所绑定的数据是否改变的重新计算公式。

非易失性公式只有在引用的数据发生变化时才会重新计算。

图片中的validated_cs列是顶部公式,下一列是底部:

在这里输入图像说明