【问题标题】:Excel Macro to Loop Through Cells, If Value is True output data to another worksheetExcel 宏循环遍历单元格,如果值为 True,则将数据输出到另一个工作表
【发布时间】:2012-10-09 04:28:25
【问题描述】:

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

Worksheet 1 - Top Image

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

Worksheet 2 - Summary of Failed Tests (Bottom Image)

我有开发背景,但不熟悉 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 向下复制。)

【问题讨论】:

    标签: excel excel-2007 excel-formula vba


    【解决方案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 向下复制。)

    【讨论】:

    • 你在Skype上吗?我能尽快和你谈谈吗?将不胜感激
    • 你的身份证是什么?还是你的位置?
    猜你喜欢
    • 2013-06-04
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    相关资源
    最近更新 更多