2013-02-13 6 views
0

피벗 테이블의 일부 선택된 영역을 선택하고 복사하려고합니다. 나는 내가 원하는 영역의 양을 결정할 수 있으며, 내 목표가 아닌 메시지 상자에 범위를 표시 할 수 있습니다. 선택한 범위를 복사하려고합니다. 내 코드는 다음과 같습니다. 범위의 값 (toprow1, leftcoloumn : lastrow, rightcoloumn)을 복사하려고합니다. FYI 메시지 상자 코드는 내가 필요로하지 않는 것입니다.일부 피벗 테이블 영역을 선택하는 방법은 무엇입니까?

Sub PivotTableRangeAreas() 

    With ActiveSheet.PivotTables(1) 

    Dim TopRow1 As Long, TopRow2 As Long, LastRow As Long 
    Dim LeftColumn As Long, RightColumn As Long 

    TopRow2 = .TableRange2.Row 
    With .TableRange1 
    TopRow1 = .Row 
    LastRow = .Rows.Count + .Row - 1 
    LeftColumn = .Column 
    RightColumn = .Columns.Count + .Column - 1 
    End With 

    MsgBox "The pivot table named " & .Name & vbCrLf & _ 
    "occupies these range elements:" & vbCrLf & vbCrLf & _ 
    "With the Report (Page) field: " & vbCrLf & _ 
    .TableRange2.Address(0, 0) & vbCrLf & _ 
    "Without the Report (Page) field: " & vbCrLf & _ 
    .TableRange1.Address(0, 0) & vbCrLf & vbCrLf & _ 
    "First row, with the Report (Page) field: " & TopRow2 & vbCrLf & _ 
    "First row, without the Report (Page) field: " & TopRow1 & vbCrLf & _ 
    "Last row: " & LastRow & vbCrLf & _ 
    "Left column: " & LeftColumn & vbCrLf & _ 
    "Right column: " & RightColumn, , "Pivot table location." 

    End With 

    End Sub 
+0

범위가 연속적이지 않은 경우 - 그렇지 않을 수도 있습니다. 복사하여 붙여 넣을 수 있습니다. –

+0

@ 피터 나중에 복사하여 붙여 넣을 수 없습니다. 변수 toprow, lastrow, firstcolumn, lastcolumn은 제가 선호하는 범위를 좁히는 데 도움이되었습니다. 피벗 테이블에서 생성 된 보고서는 tablerange1을 통해 액세스합니다. 보고서 영역에서 SEcond 열에서 6 열을 선택하고 해당 보고서의 처음 2 행과 마지막 보고서 행을 남기고 싶습니다. 항목을 문자열로 복사하여 내 용도에 붙여 넣기를 선택하십시오. – Nishant

답변

1

필자가 복사하려는 값을 추측하고 있습니까? 그렇다면 먼저 A1과 같이 Sheet2에 값을 입력하십시오. 피벗 테이블에서 복사 할 범위가 어디인지 알 수 없습니다.이 중 일부를 변경해야합니다.

Sub CopyRange() 

Dim vArray() As Variant 

'Copies the values between (Toprow1, LeftColumn) and (LastRow, RightColumn) into an array 
vArray = ActiveSheet.Range(Cells(TopRow1, LeftColumn), Cells(LastRow, RightColumn)).Value 
'Pastes the values from the array into Sheet2, starting at A1 
Sheet2.Range("A1").Resize(UBound(vArray, 1), UBound(vArray, 2)).Value = vArray 

End Sub 
+0

작동하지 않습니다 – Nishant

+0

어디서 오류가 있습니까? Sheet2라는 시트가 있습니까? 나는 조금 더 많은 정보없이 더 많은 것을 도울 수 없다. – MattCrum

+0

매트 내 코드를보고 싶다면 코드를 어떻게 사용했는지 말할 수 있습니다. 두 개의 END WITH 사이에 작성된 코드를 제거했습니다. 그런 다음 코드에서 SUB와 END SUB 사이에 코드를 복사했습니다. 그런 다음 붙여 넣기 코드의 일부분, 내 END SUB 바로 위. 이렇게하면 작동하지 않습니다. 사용 방법을 설명해 주시겠습니까? – Nishant

관련 문제