函数/宏来检索单元格值&单元格值为TRUE时输出到另一个工作表

时间:2012-10-09 20:26:14

标签: excel excel-vba excel-2007 excel-formula vba

我昨天提出了这个问题,并希望向VertexVortex大声说出他的解决方案。当我在工作表的工作副本上实现我的演示公式时,我无法使它工作 - 我第二行超出第一行的公式输出不正确。原始帖子在这里:

Original Thread

本工作簿的目的是,当测试人员完成每个步骤时,他们会标记产品是否通过。如果步骤失败,测试人员会记录为什么会发生这种情况。在第二张纸上,“执行摘要”,我需要它输出失败的所有步骤的列表以及失败原因的说明。

Here's the Workbook

Here's a screenshot of the first worksheet -- the "steps" and pass/fail checkboxes

Here's the second worksheet -- where the failed steps and notes are supposed to be output

第二张纸上的前两个公式 - 返回失败的第一步和该步骤的注释。对于那些细胞,感谢VertexVortex,我使用了:

=INDEX(tests,MATCH(TRUE,fails,0))    ///formula for 'section/step' cell
=INDEX(notes,MATCH(TRUE,fails,0))   ///formula to output notes from first fail

我还应该提到我被告知要在第一个工作表上创建命名范围 - 'tests'是注明section / step的列,'failed'是包含fail复选框的列的命名范围,'' notes'是包含有关步骤失败原因的注释的列的命名范围。

除此之外的行让我感到困惑 - 该公式适用于我在之前的帖子中设置的演示,但不再返回任何值。我的公式是:

=IFERROR(INDEX(OFFSET(tests,MATCH(K57,tests,0),0),MATCH(TRUE,OFFSET(fails,MATCH(K57,tests,0),0),0)),"") ///formula for outputting the second 'section/step' cell that has failed
=IFERROR(INDEX(OFFSET(notes,MATCH(K57,tests,0),0),MATCH(TRUE,OFFSET(fails,MATCH(K57,tests,0),0),0)),"")  //formula to output the notes from the second fail

如果有办法让这种情况发生,涉及一个宏观或不同的解决方案,我会全力以赴。我感谢大家对此的帮助。

1 个答案:

答案 0 :(得分:0)

OFFSET无法在完整列上运行,因此您应将命名范围更改为实际单元格范围。 make fails(和其他范围)相等=Testing!$R$1:$R$10000(您可以通过按CTRL + F3进行编辑),这使它对我有效。

但是进一步测试一下,如果存在具有相同名称的测试/步骤,例如25. Enter City/equivalent,则此公式会中断,因为'history'查找依赖于从先前找到的测试的名称开始。< / p>

我建议使用一种不同的方法,在每次找到TRUE之后缩小范围,方法是在执行摘要工作表中添加一个实用程序列(我使用了列H)。

在“步骤和备注”列中,使用

=IFERROR(INDEX(tests,$H57),"")
=IFERROR(INDEX(notes,$H57),"")

并在新列的第一个单元格(H57)中,将=MATCH(TRUE,fails,0)放在以下行中,

=MATCH(TRUE,OFFSET(fails,$H57,0),0)+$H57

这应该可以解决问题。

编辑:我故意在后一栏中没有使用IFERROR,因此如果需要调试会更容易。