Code chọn trường dữ liệu của Pivotable

Liên hệ QC

hoahuongduong1986

Thành viên thường trực
Tham gia
14/11/18
Bài viết
346
Được thích
40
Dear Các Anh Chị,
Làm sao để thiết lập chọn vùng dữ liệu do Pivotble tạo ra ạ. Khi dữ liệu xuất ra thay đổi theo Slicer. Em không muốn Code chọn bằng thực hiện đến từ dưới lên như Đoạn Code trong File em đính kèm mà Code nó gắn với tên của Pivot - Mà ở đây là PivotTable6 ạ. Em xin cảm ơn.
 

File đính kèm

Dear Các Anh Chị,
Làm sao để thiết lập chọn vùng dữ liệu do Pivotble tạo ra ạ. Khi dữ liệu xuất ra thay đổi theo Slicer. Em không muốn Code chọn bằng thực hiện đến từ dưới lên như Đoạn Code trong File em đính kèm mà Code nó gắn với tên của Pivot - Mà ở đây là PivotTable6 ạ. Em xin cảm ơn.
Bạn diễn giải không hiểu vấn đề bạn muốn
 
Upvote 0
Bạn diễn giải không hiểu vấn đề bạn muốn
Dear Anh,
Giả sử mình chọn một vùng cố định thì mình viết kiểu như sheet1.Range("A2:C3").select đó là cho vùng cố định. Giờ khi thực hiện Pivot có dùng Slicer chọn thì các vùng của Pivotable sẽ thay đổi liên tục. Như ví dụ em gửi kèm theo File là Pivotable6 thì mình viết Code gì để nó chọn vùng dữ liệu xuất ra từ Pivot - Code này gắn với Mảng là Pivotable6.
 
Upvote 0
Dear Anh,
Giả sử mình chọn một vùng cố định thì mình viết kiểu như sheet1.Range("A2:C3").select đó là cho vùng cố định. Giờ khi thực hiện Pivot có dùng Slicer chọn thì các vùng của Pivotable sẽ thay đổi liên tục. Như ví dụ em gửi kèm theo File là Pivotable6 thì mình viết Code gì để nó chọn vùng dữ liệu xuất ra từ Pivot - Code này gắn với Mảng là Pivotable6.
Là vậy hả?

Mã:
Sub Pivot()
Dim ws As Worksheet
Dim lastRow As Integer
Set ws = Sheet1
lastRow = ws.Range("B3:" & "B" & Rows.Count).End(xlDown).Row
Range("B3:I" & lastRow).Select
End Sub
 
Upvote 0
Là vậy hả?

Mã:
Sub Pivot()
Dim ws As Worksheet
Dim lastRow As Integer
Set ws = Sheet1
lastRow = ws.Range("B3:" & "B" & Rows.Count).End(xlDown).Row
Range("B3:I" & lastRow).Select
End Sub
Anh ơi,
Cái này chỉ áp dụng
Là vậy hả?

Mã:
Sub Pivot()
Dim ws As Worksheet
Dim lastRow As Integer
Set ws = Sheet1
lastRow = ws.Range("B3:" & "B" & Rows.Count).End(xlDown).Row
Range("B3:I" & lastRow).Select
End Sub


Dạ không ạ,
Cái File em gửi là Pivot có tên là PivotTable6, vùng của nó biến động khi em thay đổi Slicer chọn. Viết code gì mà nó hiểu lấy vùng dữ liệu của Pivot đó ạ kiểu như này Range("PivotTable6").Select.....Em có 10 Pivot chẳng hạn mà là Code như a viết thì phải làm 10 lần ạ.
 
Upvote 0
Anh ơi,
Cái này chỉ áp dụng



Dạ không ạ,
Cái File em gửi là Pivot có tên là PivotTable6, vùng của nó biến động khi em thay đổi Slicer chọn. Viết code gì mà nó hiểu lấy vùng dữ liệu của Pivot đó ạ kiểu như này Range("PivotTable6").Select.....Em có 10 Pivot chẳng hạn mà là Code như a viết thì phải làm 10 lần ạ.
Là vậy hả?

Mã:
Sub Pivot1()
    Sheet1.PivotTables("PivotTable1").TableRange1.Select
    MsgBox "PivotTable1"
End Sub

Sub Pivot2()
    Sheet1.PivotTables("PivotTable2").TableRange1.Select
    MsgBox "PivotTable2"
End Sub

Sub Pivot3()
    Sheet1.PivotTables("PivotTable3").TableRange1.Select
    MsgBox "PivotTable3"
End Sub

Sub Pivot4()
    Sheet1.PivotTables("PivotTable4").TableRange1.Select
    MsgBox "PivotTable4"
End Sub

Sub Pivot5()
    Sheet1.PivotTables("PivotTable5").TableRange1.Select
    MsgBox "PivotTable5"
End Sub
Sub Pivot6()
    Sheet1.PivotTables("PivotTable6").TableRange1.Select
    MsgBox "PivotTable6"
End Sub
 

File đính kèm

Upvote 0
Dạ đúng rồi ạ. Đúng ý em rồi.
Căn cứ vào đó thì sửa cái đoạn lệnh Rangestr = Array("A2:E18", "A23:25", "A39:G51", "A1:F60") như thế nào anh. Mục đích của em là cho cái mảng cố định thành mạng động giá trị của Pivot1,2,...n

Ví dụ: Mảng cố định "A2:E18" => Thay bằng mảng dữ liệu Gắn cho Pivot 1,
"A23:25" => Thay bằng mảng dữ liệu Gắn cho Pivot 2
....
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ đúng rồi ạ. Đúng ý em rồi.
Căn cứ vào đó thì sửa cái đoạn lệnh Rangestr = Array("A2:E18", "A23:25", "A39:G51", "A1:F60") như thế nào anh. Mục đích của em là cho cái mảng cố định thành mạng động giá trị của Pivot1,2,...n

Ví dụ: Mảng cố định "A2:E18" => Thay bằng mảng dữ liệu Gắn cho Pivot 1,
"A23:25" => Thay bằng mảng dữ liệu Gắn cho Pivot 2
....
Ý muốn copy hay sao?
Mã:
Sub CopyALL()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Sheet5.Range("A1:N1000").ClearContents
    For i = 1 To 6
        LR = Sheets("KetQua").Range("A" & Rows.Count).End(3).Row
        Sheets("pivot").Activate
        Sheets("pivot").PivotTables("PivotTable" & i).PivotSelect "", xlDataAndLabel, True
            Selection.Copy
        Sheets("KetQua").Activate
            Sheets("KetQua").Range("A" & LR + 3).Select
            ActiveSheet.Paste
    Next i
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub
 

File đính kèm

Upvote 0
Ý muốn copy hay sao?
Mã:
Sub CopyALL()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Sheet5.Range("A1:N1000").ClearContents
    For i = 1 To 6
        LR = Sheets("KetQua").Range("A" & Rows.Count).End(3).Row
        Sheets("pivot").Activate
        Sheets("pivot").PivotTables("PivotTable" & i).PivotSelect "", xlDataAndLabel, True
            Selection.Copy
        Sheets("KetQua").Activate
            Sheets("KetQua").Range("A" & LR + 3).Select
            ActiveSheet.Paste
    Next i
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

Dạ không Anh. Nó chính là cái mà qua nay em có nhờ anh đó anh. Mục đích là khi xuất ra WORD thì bảng biểu do Pivot sinh ra sẽ in ra File ảnh, còn chữ giữa các bảng đó vẫn xuất ra WOrd dạng bình thường. Nhưng bảng biểu bị thay đổi do Slicer chọn. Hôm qua anh có viết cho em Code nhưng chỉ làm được cho một trường hợp (Mã anh rà soát từ dười lên trên dùng End(3) đó anh). Mục đích là làm được cho nhiều Pivot, thay các mảng cố định B2:E12, B16:E22...bằng các tên của Pivot => Như File e gửi kèm là Pivot3, và Pivot13...
rangestr = Array("B2:E12", "B16:E22", "A1:F60")
 

File đính kèm

Upvote 0
Dạ không Anh. Nó chính là cái mà qua nay em có nhờ anh đó anh. Mục đích là khi xuất ra WORD thì bảng biểu do Pivot sinh ra sẽ in ra File ảnh, còn chữ giữa các bảng đó vẫn xuất ra WOrd dạng bình thường. Nhưng bảng biểu bị thay đổi do Slicer chọn. Hôm qua anh có viết cho em Code nhưng chỉ làm được cho một trường hợp (Mã anh rà soát từ dười lên trên dùng End(3) đó anh). Mục đích là làm được cho nhiều Pivot, thay các mảng cố định B2:E12, B16:E22...bằng các tên của Pivot => Như File e gửi kèm là Pivot3, và Pivot13...
rangestr = Array("B2:E12", "B16:E22", "A1:F60")
Èo vẫn chưa từ bỏ ý định nữa à copy đo cho nhanh, pivot bảng động khó canh chỉnh trong word lắm.
 
Upvote 0
Tại em thấy rõ ràng cảm giác nó rất gần rùi mà không ra được. Một mảng đã được chỉ mặt đặt tên mà không thay được ạ. hehe
Vậy thử dùng code này xem

Mã:
Sub CopyALL()
Dim WrdApp As Word.Application
Dim WrdDoc As Word.Document

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    Set WrdApp = New Word.Application
        WrdApp.Visible = True
        WrdApp.Activate
      
    Set WrdDoc = WrdApp.Documents.Add
     With WrdApp.Selection
            .PageSetup.Orientation = wdOrientLandscape
            .ParagraphFormat.Alignment = wdAlignParagraphCenter
            .Font.Name = "Times New Roman"
            .Font.Size = 11
    End With
        
      For i = 1 To 6
        Sheets("pivot").PivotTables("PivotTable" & i).PivotSelect "", xlDataAndLabel, True
        Selection.Copy

   With WrdApp.Selection
            .TypeParagraph
            .PasteExcelTable False, True, False
   End With

    Next i

    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

End Sub
 

File đính kèm

Upvote 0
Vậy thử dùng code này xem

Mã:
Sub CopyALL()
Dim WrdApp As Word.Application
Dim WrdDoc As Word.Document

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
   
    Set WrdApp = New Word.Application
        WrdApp.Visible = True
        WrdApp.Activate
     
    Set WrdDoc = WrdApp.Documents.Add
     With WrdApp.Selection
            .PageSetup.Orientation = wdOrientLandscape
            .ParagraphFormat.Alignment = wdAlignParagraphCenter
            .Font.Name = "Times New Roman"
            .Font.Size = 11
    End With
       
      For i = 1 To 6
        Sheets("pivot").PivotTables("PivotTable" & i).PivotSelect "", xlDataAndLabel, True
        Selection.Copy

   With WrdApp.Selection
            .TypeParagraph
            .PasteExcelTable False, True, False
   End With

    Next i

    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

End Sub
Em cảm ơn anh ạ !!!
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom