2017-05-25 105 views
1

我想将我的数据透视表的值复制到工作表中。我正在尝试创建一个模板,所以数据透视表的大小会有所不同,我还需要粘贴这些值的地方的电子表格。我已经想出了如何(a)通过宏插入剪切单元或(b)粘贴特殊(值),但我不知道如何粘贴特殊(值)和插入(即创建额外的行)。插入剪切单元格并粘贴特殊值

我目前使用简单:

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 

是否有某种方式这两个结合起来?或者是否有其他替代方案?

回答

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 
+0

嗨,我试过了,它插入了切分数据透视表,然后粘贴它下面的单元格值。因此,插入剪切单元格工作,并没有覆盖我的文本,但下面的粘贴单元格。 我想知道如果可能解决方案是以某种方式获取数据透视表(行数)的维度,并将多行插入目标工作表,然后粘贴特殊值。 – humblpirate

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 

我目前也在通过计算数据透视表中的行数然后插入该行数来完成此操作。