如何使用结构化引用来标识列并将标识列中的行值用作条件?
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栏是最上面的公式,下一栏是最下面的:
我有一个 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栏是最上面的公式,下一栏是最下面的: