我有一个名为'student_courses'的Excel 2013表,其中包含列:stu_id,stu_major,stu_course和名为validated_crs的计算列。
我正在尝试为名为validated_crs的计算列创建一个公式,用于计算每条记录。
在这个计算列中,我需要引用stu_major列中的值来查找第二个表中的列'qualified_courses'。 'qualified_courses'表中的标题与stu_major值相关联。
我需要检查'qualified_courses'中相关列中的任何值是否与'student_courses'表中正在评估的记录中的'stu_course'值匹配。
如果相关列中的任何值与第一个表中任何给定记录的stu_course值匹配,则它应在计算列中返回“validated”值。
到目前为止,我已经找到了如何使用=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
答案 0 :(得分:2)
此公式以您的公式为基础:
=IF(ISNUMBER(MATCH([@[stu_course]],INDIRECT("qualified_courses"&"["&[@[stu_major]]&"]"),0)),"Validated","")
我们使用MATCH函数在返回的列中搜索课程。如果有,则返回一个数字,否则为错误。
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","")
将返回相同的内容。
我们使用INDEX / MATCH代替INDIRECT找到正确的列。 MATCH再次返回一个数字,这次是第二个表中的列。
INDEX()使用此nubmer返回该位置的完整列。第二个标准的0
表示我们需要完整的列。
然后就像第一个一样。
VOLATILE公式是每次Excel重新计算它所绑定的数据是否发生更改时重新计算的公式。
非易失性公式只会在他们引用的数据发生变化时重新计算。
图片中的validated_cs列是顶部公式,下一列是底部: