0

我正在做一个项目,用户将通过“测试”列表并检查测试是通过还是失败。如果测试失败,他们会检查第二列中的“失败”框,并记录测试失败的原因。设置如下所示:

工作表 1 - 顶部图像

我需要编写一个宏,以便当用户完成“测试”并单击“生成报告”按钮时,它会在另一个工作表上编译失败测试的摘要和相关注释,例如:

工作表 2 - 失败测试总结(下图)

我有开发背景,但不熟悉 Excel 宏的语法。我已经做了一些挖掘,但我想我会先在这里问。本质上,我需要循环遍历“失败”列中的所有单元格。每次我点击“真”值时,将其右侧单元格中的注释内容和左侧测试两个单元格的名称输出到另一个工作表上。让我知道您将如何处理此问题以及您需要什么类型的功能 - 非常感谢您的帮助!

更新:在这里回答:

我创建了 3 个命名范围:测试、失败和注释。这很简单,只需选择测试列表(不包括标题)并在地址框中输入测试。已创建命名范围。对你的失败和笔记做同样的事情。然后,在第 2 页:

[A3]=INDEX(tests,MATCH(TRUE,fails,0))
[B3]=INDEX(notes,MATCH(TRUE,fails,0))
[A4]=IFERROR(INDEX(OFFSET(tests,MATCH(A3,tests,0),0),MATCH(TRUE,OFFSET(fails,MATCH(A3,tests,0),0),0)),"")
[B4]=IFERROR(INDEX(OFFSET(notes,MATCH(A3,tests,0),0),MATCH(TRUE,OFFSET(fails,MATCH(A3,tests,0),0),0)),"")

(根据需要将 A4 和 B4 向下复制。)

4

1 回答 1

1

为真值运行自动过滤器,然后将可见单元格复制到新工作表中。用于此的 VBA 代码将如下所示:

Sub AutoFilterAndCopy()
Dim shtNew As Worksheet, shtOrg As Worksheet

Set shtOrg = ActiveSheet
Set shtNew = Sheets.Add

With shtOrg.range("A1").CurrentRegion
    .AutoFilter Field:=3, Criteria1:="True"

    .Columns(1).SpecialCells(xlCellTypeVisible).Copy shtNew.Cells(2, 1)
    .Columns(4).SpecialCells(xlCellTypeVisible).Copy shtNew.Cells(2, 2)

    .AutoFilter
End With

End Sub

这里的解决方案:

我创建了 3 个命名范围:测试、失败和注释。这很简单,只需选择测试列表(不包括标题)并在地址框中输入测试。已创建命名范围。对你的失败和笔记做同样的事情。然后,在第 2 页:

[A3]=INDEX(tests,MATCH(TRUE,fails,0))
[B3]=INDEX(notes,MATCH(TRUE,fails,0))
[A4]=IFERROR(INDEX(OFFSET(tests,MATCH(A3,tests,0),0),MATCH(TRUE,OFFSET(fails,MATCH(A3,tests,0),0),0)),"")
[B4]=IFERROR(INDEX(OFFSET(notes,MATCH(A3,tests,0),0),MATCH(TRUE,OFFSET(fails,MATCH(A3,tests,0),0),0)),"")

(根据需要将 A4 和 B4 向下复制。)

于 2012-10-08T18:06:36.913 回答