我正在尝试在包含多个工作表的 .csv 文件中自动执行一些检查。我需要一个公式,该公式将在特定工作表(药物工作表)中搜索两个列标题(AgeAtStart
和AgeAtStop
)。找到后,它将对这两列的值执行 IF 语句(=IF(E2<=F2,"Ok","Not Ok")
),确保AgeAtStart
小于或等于AgeAtStop
。
用药单
AgeAtStart Other Column Other Column Other Column AgeAtStop
61.85 x x x 61.98
61.98 x x x 72.22
72.62 x x x 73.74
72.27 x x x 72.57
73.82 x x x 73.85
61.85 x x x 61.98
对于“摘要”表如何报告此问题,我可以灵活处理,但我的初步想法是报告AgeAtStart
大于AgeAtStop
或返回包含错误年龄的单元格的数量。我不想返回每个 IF 语句的结果,而是返回返回“Ok”或“Not Ok”的 IF 检查的数量。
我尝试使用 VLOOKUP 和 INDEX/MATCH 的组合来实现这一点,但到目前为止还无法理解其中的逻辑。也许 VBA 是一个更好的解决方案?
编辑: 使用 cybernetic.nomad 的实现效果很好。
=IF(INDEX('Sheet2'!2:2,,MATCH("AgeAtStart",'Sheet2'!$1:$1,0))<INDEX('Sheet2'!2:2,,MATCH("AgeAtStop",'Sheet2'!$1:$1,0)),"OK","Not OK")
作为后续工作,我将此公式放入“摘要”表中并引用“数据”表。有没有办法在“摘要”表中自动应用此公式“x”次,其中“x”代表“数据”表中的行数?因此,如果我的数据表有 100 行,则在摘要表中,公式将自动填充 100 次,引用每 100 行。
答案1
假设您的数据在A1:E7
,在中插入以下公式F2
=IF(INDEX(A5:E5,,MATCH("AgeAtStart",A$1:E$1,0))<INDEX(A5:E5,,MATCH("AgeAtStop",A$1:E$1,0)),"OK","Not OK")
并填充下来
要获得摘要,您可以过滤“OK”或“Not OK”,或者执行COUNTIF
要忽略空白使用:
=IF(AND(NOT(ISBLANK(INDEX(A2:E2,,MATCH("AgeAtStart",A$1:E$1,0)))),NOT(ISBLANK(INDEX(A2:E2,,MATCH("AgeAtStop",A$1:E$1,0))))),IF(INDEX(A2:E2,,MATCH("AgeAtStart",A$1:E$1,0))<INDEX(A2:E2,,MATCH("AgeAtStop",A$1:E$1,0)),"OK","Not OK"),"")