首页 > 解决方案 > 使用循环将数据从另一个表更新到另一个使用excel vba的表

问题描述

下面是一个宏,它根据输入的日期进行过滤,并通过手动更改 Rangetable1sheet1来手动获取数据。table2sheet2Range("J12:J18").Select

sheet2上table2中的数据以月份为单位排列。因此该列指的是九月Range("J12:J18").Select。有没有办法让table2上的数据自动填充到当前日期月份和年份,或者创建一个输入框,我们在table2上输入我们希望插入数据的月份列?

顺便说一句,我仍处于初学者水平,我很乐意感谢任何帮助..

Public mois As String, annee As String

Sub macro001()

    Dim this As Date
    Dim that As Date
    mois = 0
    année = 0

    mois = Month(Now)
    année = Year(Now)

    For x = 1 To mois
        this = Format(Date, "mm")
        that = Format(Date, "yyyy")

        this = InputBox("Insert date in format mm/yyyy", _
                        "User date", _
                        Format(Now(), "dd/mm/yyyy"))

        that = InputBox("Insert date in format mm/yyyy", _
                        "User date", _
                        Format(Now(), "dd/mm/yyyy"))

        mois = Format(CDate(this), "mm")
        annee = Format(CDate(that), "yyyy")

        Range("Tableau1[[#Headers],[Date réalisée RBT" & Chr(10) & "]]").Select
        ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=8, Operator:= _
                                                             xlFilterValues, _
                                                             Criteria2:=Array(1, mois & "/" & annee)
        Range("Tableau1[[#Headers],[Statut sortie RBT]]").Select
        ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=9, Criteria1:= _
                                                             "Rouge"
        Range("Tableau1[[#Headers],[MAJ Statut]]").Select
        ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=10, Criteria1:= "="


        Range("M1:S1").Select
        Selection.Copy
        Application.CutCopyMode = False
        Selection.Copy
        Application.CutCopyMode = False
        Selection.Copy
        Application.CutCopyMode = False
        Selection.Copy
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Défauts RBT").Select

        Range("J12:J18").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                               :=False, Transpose:=True
        Sheets("RBT-RAT ").Select
        ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=8
        ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=9
        ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=10

    Next x
End Sub

标签: excelvba

解决方案


也许您可以使用公式将行转换为列。考虑下面的例子。

在 X 列中,两个 ROW 函数之间的差异给出了一个增量值 (1, 2, 3, 4)。
在 Y 列中,OFFSET 函数使用增量值来选择不同列中的单元格。
结合起来,公式为= OFFSET($A$3, 0, ROW([@X]) - ROW(Table2[[#Headers],[X]]) - 1)

使用公式从行到列转置


推荐阅读