【问题标题】:How to fill a worksheet based on cell values from another worksheet如何根据另一个工作表中的单元格值填充工作表
【发布时间】:2019-05-03 23:25:52
【问题描述】:

我有两个工作表(“工作表 A”和“工作表 B”)。

工作表 A 有一个测试列表。每行代表执行的测试。 F 列的值为“通过”或“未通过”。

如果“未通过”,则需要将整行自动添加到代表操作列表的“工作表 B”中。

关于如何动态执行此操作的任何建议,即无需手动运行宏?

【问题讨论】:

  • 显然您可以在工作表 B 的 A1 中尝试公式 =IF(Sheet1!$F1="Not Passed",Sheet1!A1,""),然后扩展到您的范围,但这会在工作表 B 的条目之间留下空白行
  • 听起来像worksheet events
  • 可以使用 , Evaluate , IndexMatch ,但需要先尝试

标签: excel vba


【解决方案1】:

使用工作表事件。 Alt + F11 打开VBA界面:

双击界面左侧的“Sheet1”并粘贴到:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 0 Then
        update_sheet
    End If
End Sub

在“Sheet1”下方,右键单击“模块”。将鼠标悬停在插入上,然后单击“添加模块”。将以下代码粘贴到模块中:

Sub update_sheet()
    s1_rows = ThisWorkbook.Worksheets(1).Cells(ThisWorkbook.Worksheets(1).Rows.Count, "F").End(xlUp).Row
    Set s1_rng = ThisWorkbook.Worksheets(1).Range("F1:F" & s1_rows)

    s2_rows = 1
    For Each cell In s1_rng
        If cell.Value = "Not Passed" Then
            cell.EntireRow.Copy
            ThisWorkbook.Worksheets(2).Range("A" & s2_rows).PasteSpecial xlPasteValues
            s2_rows = s2_rows + 1
        End If
    Next cell
    Application.EnableEvents = True
End Sub

这可以改进,但应该让你开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 2015-08-19
    • 2022-11-27
    相关资源
    最近更新 更多