示例:单个学生的电子表格有四列:课程|已完成?|先决条件|可用
“课程”列列出了课程名称。“完成吗?”列表示如果学生已完成课程,则显示“是”。“先决条件”列包含以逗号分隔的课程列表,学生需要完成这些课程才能选修该行“课程”列中的课程;此列中出现的所有课程都位于“课程”列中的某行中。
目标是在“可用”列中放置一个公式,如果“先决条件”列中的每一门课程在该课程所在行的“已完成”列中的结果为“是”,则该公式将指示“是”。如果只有一个先决条件,这将是一个简单的 vlookup。但是,由于此处列出的课程数量可能不确定,因此我需要解析课程并根据先决条件的数量执行可变数量的 vlookup。
有没有一种不使用任何 VBA 代码的简单方法可以做到这一点?也许使用带有 sumproduct 的数组?
答案1
假设你的表格位于 A1:D10(标题位于第 1 行,因此课程,完全的?,先决条件 和可用的分别位于 A1、B1、C1 和 D1 中),并且假设先决条件每列都由一个逗号和一个空格的精确组合分隔,然后在 D2 中输入此公式:
=IF(SUMPRODUCT(0+(ISNUMBER(SEARCH(", "&$A$2:$A$10&", ",", "&C2&", "))),0+($B$2:$B$10="是"))=1+LEN(C2)-LEN(SUBSTITUTE(C2,",","")),"是","否")
按要求抄下来。
问候