首页 > 解决方案 > VBA - 使用其他表中的特定数据自动填充表

问题描述

我有两张表,一张包含我项目的所有信息,另一张显示主表中过期或即将过期的行。

我正在尝试做的是每次打开工作表时使用主表中的所有过期变量更新过期表。

我面临的问题是,当使用 For 循环时,它会在将下一个值添加到 Expired 表之前添加许多空单元格。

过期表代码:

    Private Sub warning_list()
    Dim wsExp As Worksheet: Set wsExp = Worksheets("EXPIRED_LIST")
    Dim wsList As Worksheet: Set wsList = Worksheets("LIST")
    Dim digsafe As String
    Dim exp_date As Date
    Dim time_left As Long
    Dim i As Integer
    Dim warning_val As String: warning_val = "OK"
    Dim warning_tbl As ListObject: Set warning_tbl = wsExp.ListObjects("Table3")
    Dim warning_or As ListRow
    Dim list_tbl As ListObject: Set list_tbl = wsList.ListObjects("Table1")
    Dim list_or As ListRow

    Set warning_or = warning_tbl.ListRows.Add

    For i = 1 To wsList.ListObjects("Table1").DataBodyRange.Rows.Count
        If wsList.ListObjects("Table1").DataBodyRange.Cells(i, 24).Value = warning_val Then
            digsafe = list_tbl.DataBodyRange.Cells(i, 1).Value
            exp_date = list_tbl.DataBodyRange.Cells(i, 2).Value

            warning_or.Range(1, 1).Value = digsafe
            warning_or.Range(1, 2).Value = exp_date

        End If
    Next i


End Sub

编辑:我还有以下代码可以自动运行宏。

'Action whenever sheet is opened
 Private Sub Worksheet_Activate()
   Call warning_list
 End Sub

标签: vbaexcel

解决方案


VBA 宏的另一种解决方案是在“完整”表中创建最后一列,说明它是否已过期。您可以使用该=IF(功能对其进行测试。然后,使用PIVOT TABLE

在此处输入图像描述


推荐阅读