根据列标题对列执行计算

根据列标题对列执行计算

我正在尝试在包含多个工作表的 .csv 文件中自动执行一些检查。我需要一个公式,该公式将在特定工作表(药物工作表)中搜索两个列标题(AgeAtStartAgeAtStop)。找到后,它将对这两列的值执行 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"),"")

答案2

我能够扩展 cybernetic.nomad 的初始回复以实现我的目标。我在下面详细介绍了我的实现...

摘要表 通过:计算所有出现的“1” 失败:计算所有出现的“0” 总记录数:如果查找返回“是”,则计算行数 概括

查找表 Rows:如果 A 列单元格不为空,则返回“是”(行总数将随​​新文件而变化)AgeAt:如果 INDEX-MATCH 返回空白,则不执行任何操作。否则,比较 AgeAtStart 和 AgeAtStop 列中的年龄 抬头

查找表中的公式向下复制的 A 和 B 列中的行数比我的数据中的行数多。这是因为我们每两周收到一次这些文件,有些文件的行数会多一些或少一些。 公式

相关内容