代码之家  ›  专栏  ›  技术社区  ›  user912205

如何在粘贴到Excel工作表之前使用临时表处理数据

  •  0
  • user912205  · 技术社区  · 3 年前

    我有一个VBA脚本,可以将数据从“源”工作表复制并粘贴到“工作区”工作表。VBA会评估是否存在某些数据,并对布局进行调整,使其与“工作区”选项卡中的布局匹配。


    问题: insert命令添加一行单元格(仅限a-X列),以使源工作表中的列标题与工作区工作表上的列标题对齐。 很遗憾,这会更改工作表上所有公式的目标单元格。(即第21行的公式现在从第22行的单元格中提取)。太糟糕了。


    首要问题: VBA能在临时表中完成所有这些操作吗?完成后,然后粘贴到“工作区域”,这样就不会在“工作区”选项卡中完成任何操作?。。。还是其他快速解决方案?


    当前代码: 我试图通过在SOURCE选项卡中插入行来解决这个公式问题。这很有效。。。但它在操纵SOURCE,我不想这么做。我想保持它不变。


    其他背景: “SOURCE”是一个动态报告。如果存在数据,则仅包括行和列。这一点无法更改。这是一个问题,因为“工作区域”选项卡包含所有可能的字段,并且每行都有许多公式。 简而言之,如果缺少“扣除”,我必须添加一个扣除行,然后将数据列转移到正确的列中


    当前代码:

    Sub Copy_And_Move_Columns_From_Pay_Reg_Source_to_Pay_Reg_Working_Area()
        '
        Sheets("Pay reg working area").Range("A:X").ClearContents
        Sheets("Pay reg working area").Range("A:X").ClearFormats
        
        If Sheets("WD Pay Reg Source").Range("a14") = "Deductions" Then
            Sheets("WD Pay Reg Source").Range("A:X").Copy Sheets("Pay reg working area").Range("A:X")
        Else
            Sheets("WD Pay Reg Source").Range("A14:X14").Insert
            Sheets("WD Pay Reg Source").Range("A:R").Copy Sheets("Pay reg working area").Range("A:R")
            Sheets("WD Pay Reg Source").Range("S:V").Copy Sheets("Pay reg working area").Range("U:X")
            Sheets("Pay reg working area").Range("S19").Value = "Deductions"
            Sheets("Pay reg working area").Range("S20").Value = "Name"
            Sheets("Pay reg working area").Range("T20").Value = "Value"
            Sheets("Pay reg working area").Range("S19:T20").Font.Color = vbRed
            Sheets("Pay reg working area").Range("S1").Value = "MAKE SURE Row 20 is the header row!!"
            Sheets("Pay reg working area").Range("S1").Font.Color = vbRed
            Sheets("Pay reg working area").Range("S1").Font.Size = 24
        End If
        
    End Sub
    
    0 回复  |  直到 3 年前