我正在开展一个项目,用户将浏览一系列“测试”并检查测试是通过还是失败。如果测试失败,他们会检查第二列中的“失败”框,并记录该测试失败的原因。设置如下:
我需要对宏进行编程,以便当用户完成“测试”并单击“生成报告”按钮时,它会编译失败测试的摘要以及另一个工作表上的相关注释,例如:
Worksheet 2 - Summary of Failed Tests (Bottom Image)
我有开发背景但不熟悉Excel宏的语法。我做了一点挖掘,但我想先问一下这里。基本上我需要在'fail'列中的所有单元格中运行循环。每当我点击'true'值时,将单元格中的音符内容输出到右边,将测试名称输出到左边的另一个工作表中。让我知道你如何处理这个以及你有什么类型的功能 - 我非常感谢你的帮助!
更新:在此处回答:
我创建了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复制下来。)
答案 0 :(得分: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复制下来。)