每次运行宏

时间:2018-02-28 18:11:45

标签: excel-vba vba excel

我是VBA的新用户,尝试从一个名为lookup xxx的标签中复制值(数据将始终位于Column F中)并粘贴到关联的actuals xxx标签中。

我为大约10个不同的查找标签执行此操作。我的目标是在第一次运行宏时将Week 50201750粘贴到Column F

第二次运行时,我想粘贴到column G,第三次粘贴到column H,依此类推;每次都将数据保存在前面的列中。

内置宏,或Personal.xlsb!AllSheets更新查找选项卡上的数据,并更新周数。这实际上是一个"复制并粘贴到一列"题。

我想要发生的是:

  • 我第一次运行时,actuals xxx标签上的列F填充了201750数据(来自lookup xxx标签)

  • 下次运行时,column F会保留201750G=201751数据。

  • 下次运行时,F=201750, G=201751, H=201752数据
  • 等......

实际发生的事情是:

  • 第一次运行时,columns F上的Gactuals xxx都填充了201750个数据。

  • 下次我运行时,F=201751, G=201750, and H=201751

  • 下次我运行时,F=201750, G=201751, H=201752, I=201752.

以下是我目前正在使用的代码:

  Sub ActualsAutomation()
    '
    ' ActualsAutomation Macro
    '

    '
        Application.Run "PERSONAL.XLSB!AllSheets"

        Sheets("SS Actuals").Range("F3:F500").Value = Sheets("SS Lookup").Range("F1:F498").Value

        Dim c As Long

        c = Sheets("SS Actuals").Cells(3, Columns.Count).End(xlToLeft).Column + 1
        Sheets("SS Actuals").Cells(3, c).Resize(498).Value = Sheets("SS Lookup").Range("F1:F498").Value

        Sheets("All Actuals").Range("F3:F500").Value = Sheets("All Lookup").Range("F1:F498").Value

        c = Sheets("All Actuals").Cells(3, Columns.Count).End(xlToLeft).Column + 1
        Sheets("All Actuals").Cells(3, c).Resize(498).Value = Sheets("All Lookup").Range("F1:F498").Value

        Sheets("Base Specialties Actuals").Range("F3:F500").Value = Sheets("Base Specialties Lookup").Range("F1:F498").Value

        c = Sheets("Base Specialties Actuals").Cells(3, Columns.Count).End(xlToLeft).Column + 1
        Sheets("Base Specialties Actuals").Cells(3, c).Resize(498).Value = Sheets("Base Specialties Lookup").Range("F1:F498").Value

        Sheets("Combat Actuals").Range("F3:F500").Value = Sheets("Combat Lookup").Range("F1:F498").Value

        c = Sheets("Combat Actuals").Cells(3, Columns.Count).End(xlToLeft).Column + 1
        Sheets("Combat Actuals").Cells(3, c).Resize(498).Value = Sheets("Combat Lookup").Range("F1:F498").Value

        Sheets("Great Value Actuals").Range("F3:F500").Value = Sheets("Great Value Lookup").Range("F1:F498").Value

        c = Sheets("Great Value Actuals").Cells(3, Columns.Count).End(xlToLeft).Column + 1
        Sheets("Great Value Actuals").Cells(3, c).Resize(498).Value = Sheets("Great Value Lookup").Range("F1:F498").Value

        Sheets("Persil Actuals").Range("F3:F500").Value = Sheets("Persil Lookup").Range("F1:F498").Value

        c = Sheets("Persil Actuals").Cells(3, Columns.Count).End(xlToLeft).Column + 1
        Sheets("Persil Actuals").Cells(3, c).Resize(498).Value = Sheets("Persil Lookup").Range("F1:F498").Value

        Sheets("Purex Actuals").Range("F3:F500").Value = Sheets("Purex Lookup").Range("F1:F498").Value

        c = Sheets("Purex Actuals").Cells(3, Columns.Count).End(xlToLeft).Column + 1
        Sheets("Purex Actuals").Cells(3, c).Resize(498).Value = Sheets("Purex Lookup").Range("F1:F498").Value

        Sheets("Renuzit Actuals").Range("F3:F500").Value = Sheets("Renuzit Lookup").Range("F1:F498").Value

        c = Sheets("Renuzit Actuals").Cells(3, Columns.Count).End(xlToLeft).Column + 1
        Sheets("Renuzit Actuals").Cells(3, c).Resize(498).Value = Sheets("Renuzit Lookup").Range("F1:F498").Value

        Sheets("Snuggle Actuals").Range("F3:F500").Value = Sheets("Snuggle Lookup").Range("F1:F498").Value

        c = Sheets("Snuggle Actuals").Cells(3, Columns.Count).End(xlToLeft).Column + 1
        Sheets("Snuggle Actuals").Cells(3, c).Resize(498).Value = Sheets("Snuggle Lookup").Range("F1:F498").Value

        Sheets("Sun Cuddle Soft Actuals").Range("F3:F500").Value = Sheets("Sun Cuddle Soft Lookup").Range("F1:F498").Value

        c = Sheets("Sun Cuddle Soft Actuals").Cells(3, Columns.Count).End(xlToLeft).Column + 1
        Sheets("Sun Cuddle Soft Actuals").Cells(3, c).Resize(498).Value = Sheets("Sun Cuddle Soft Lookup").Range("F1:F498").Value

        Sheets("Sun Actuals").Range("F3:F500").Value = Sheets("Sun Lookup").Range("F1:F498").Value

        c = Sheets("Sun Actuals").Cells(3, Columns.Count).End(xlToLeft).Column + 1
        Sheets("Sun Actuals").Cells(3, c).Resize(498).Value = Sheets("Sun Lookup").Range("F1:F498").Value

        Sheets("Surf Actuals").Range("F3:F500").Value = Sheets("Surf Lookup").Range("F1:F498").Value

        c = Sheets("Surf Actuals").Cells(3, Columns.Count).End(xlToLeft).Column + 1
        Sheets("Surf Actuals").Cells(3, c).Resize(498).Value = Sheets("Surf Lookup").Range("F1:F498").Value

        Sheets("Uno Dos Tres Actuals").Range("F3:F500").Value = Sheets("Uno Dos Tres Lookup").Range("F1:F498").Value

        c = Sheets("Uno Dos Tres Actuals").Cells(3, Columns.Count).End(xlToLeft).Column + 1
        Sheets("Uno Dos Tres Actuals").Cells(3, c).Resize(498).Value = Sheets("Uno Dos Tres Lookup").Range("F1:F498").Value
    End Sub

这是我运行宏3次后会发生什么的图片:

(点击图片查看完整版。) screenshot (edited by ashleedawg)

1 个答案:

答案 0 :(得分:0)

想通了我正在加倍工作。当我删除副本时,宏工作得很好。这是最终结果:

cursor.execute("SELECT * FROM TABLE1;")
data_from_db = cursor.fetchall()
processed_data = filter(lambda s: 'abc' in s.field1 or s.StartTime >= start_date_time, data_from_db) 

感谢您的帮助!