插入剪切单元格并粘贴特殊值

时间:2017-05-25 20:10:33

标签: excel excel-vba vba

我正在尝试将我的数据透视表的值复制到工作表中。我正在尝试创建一个模板,因此数据透视表的大小会有所不同,而且我需要在电子表格的下方添加更多这些值。

我已经想出如何(a)通过宏插入切割单元格或(b)粘贴特殊(值),但我无法弄清楚如何粘贴特殊(值)和插入(即创建其他行)。 / p>

我目前正在使用一个简单的:

    Sub CutPasteGainLossSales()
        Range("D3").Select
        ActiveSheet.PivotTables("PivotTable4").PivotSelect "", xlDataAndLabel, True
        Selection.Copy
        Sheets("SchA").Select
        Range("B12").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
             :=False, Transpose:=False
    End Sub

OR

    Sub testcutpastespecialinsert()

        ActiveSheet.PivotTables("Principal Amounts Received").PivotSelect "", _
             xlDataAndLabel, True
        Selection.Copy
        Sheets("SchA").Select
        Range("B5").Select
        Selection.Insert Shift:=xlDown
    End Sub

有没有办法将这两者结合起来?或者完全有替代方案吗?

2 个答案:

答案 0 :(得分:0)

试试这个。您无法剪切和粘贴值,因此您可以清除原始单元格(如果您不想要它们)。我认为这是一个罕见的选择是不可避免的事情之一(肯定邀请我被证明是错误的......)

Sub testcutpastespecialinsert()

Dim p As PivotTable

Set p = ActiveSheet.PivotTables("Principal Amounts Received")
p.PivotSelect "", xlDataAndLabel, True
Selection.Copy

With Sheets("SchA").Range("B5")
    .Insert Shift:=xlDown
    .PasteSpecial Paste:=xlPasteValues
End With

'these two lines clear the original table
p.PivotSelect "", xlDataAndLabel, True
Selection.Clear

End Sub

答案 1 :(得分:0)

所以,我似乎已经解决了我自己的问题。我使用了一些@SJR的代码,然后以不同的方式使用它(请参阅上面代码的问题)。我的解决方案是:从一个工作表复制我需要的数据透视表,将其插入摘要页面(将我需要插入的位置下方的任何数据下推),清除插入(保留插入提供的空间),然后再次复制另一个数据透视表并将其粘贴到原始复制/插入剪切单元格提供的空间中。

Sub cutpastespecialinsert()

Dim p As PivotTable

Set p = Sheets("SchAPivots").PivotTables("Principal Amounts Received")
p.PivotSelect "", xlDataAndLabel, True
Selection.Copy

With Sheets("SchA").Range("B6")
    .Insert Shift:=xlDown
    Sheets("SchA").Select
    Range("B6").Select
    ActiveSheet.PivotTables(ActiveCell.PivotTable.Name).PivotSelect "", _
        xlDataAndLabel, True
    Selection.Clear
End With

Sheets("SchAPivots").Select
Range("A2").Select
ActiveSheet.PivotTables("Principal Amounts Received").PivotSelect "", _
    xlDataAndLabel, True
Selection.Copy
Sheets("SchA").Select
Range("B6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

End Sub

我目前正在研究如何通过计算数据透视表中的行然后插入该行数来实现此目的。