如何使用结构化引用来标识列,并使用标识列中的行值作为条件?
我有一个名为“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列是顶部公式,下一列是底部: