Góp ý, thắc mắc về topic "Ứng dụng VBA trong Pivot Table" (1 người xem)

  • Thread starter Thread starter khamha
  • Ngày gửi Ngày gửi

Người dùng đang xem chủ đề này

khamha

Không có việc gì khó...
Tham gia
4/6/10
Bài viết
662
Được thích
846
Nghề nghiệp
CNVC Laos
Góp ý, thắc mắc trong topic "Ứng dụng VBA trong Pivot Table"

Nhờ bạn ptm0412 tách và hướng dẫn cho lấy đoạn Code số thứ tự để áp dụng vào File của mình với,Cảm ơn bạn
 
Chỉnh sửa lần cuối bởi điều hành viên:
Bạn xem trong Module Common, sẽ thấy Sub STT(Rng As Range), đây là macro có ứng dụng tham số truyền.
Sub đó dùng để đánh số thứ tự

1. Trong file Pivot-VBA-09.xls
Sub đó dùng để đánh số thứ tự đơn giản (1 cấp):

PHP:
Sub SoTT(Rng As Range)
With Rng
    .Resize(200, 1).Clear
    .Value = Evaluate("=row(R:R)")
    .NumberFormat = "00"
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
End With
End Sub

Trong các module khác, sau khi thay đổi cấu trúc, hoặc lọc, hoặc tác động khác đến Pivot table, ta xác định dòng đầu và dòng cuối cần đánh số TT, thí dụ 10 và 25, 10 thì cố định, 25 có thể là giá trị 1 biến.

Ta dùng lệnh sau để gọi Sub STT:

STT Range("A10:A25")

2. Trong file Pivot-VBA-08.xls Sub đó dùng để đánh số thứ tự phức tạp (2 cấp, 1 cấp số la mã và 1 cấp số thường):

PHP:
Sub SoTT(Rng As Range)
With Rng
    .Resize(200, 1).Clear
    For Each Clls In Rng
        With Clls
        If .Offset(0, 1) <> "" Then
            SoCap1 = SoCap1 + 1
            SoCap2 = 0
            .Value = Application.Roman(SoCap1)
            .HorizontalAlignment = xlCenter
            .Resize(1, 8).Font.Bold = True
            .Resize(1, 8).Font.ColorIndex = 10
        Else
            SoCap2 = SoCap2 + 1
            .Value = SoCap2
            .Resize(1, 8).Font.Bold = False
            .Resize(1, 8).Font.ColorIndex = 1
        End If
        End With
    Next
    
    .VerticalAlignment = xlCenter
End With
End Sub

Cách gọi tương tự như trên, truyền tham số Range cần đánh số.
 
Bạn hướng dẫn mình cách tạo lệnh để gọi Sub STT: ,Cảm ơn bạn.
 
Cũng chỉ như tôi nói nãy giờ thôi:
- Xác định dòng đầu cần đánh số TT của Pivot table, thường là cố định là 1 số nào đó không thay đổi, thí dụ 10
- Xác định dòng cuối của Pivot Table bằng End(xlUp).Row vào 1 biến. Phải chọn cột có dữ liệu Pivot table đầy đủ nhất, thường là cột đầu tiên có chứa Grand Total(cột b)
- Gọi Sub STT với tham số truyền.

Thí dụ:

PHP:
BeginR = 10
EndR = [B10000].End(xlUp).Row
' Đánhsố TT cột A'
STT Range("A" & BeginR & ":A" & EndR - 1)

EndR - 1 vì ta không muốn đánh số cả dòng GrandTotal, nếu không có Grand Total thì không trừ.
 
Lần chỉnh sửa cuối:
Chắc là do trình độ mình có hạn về phần này,đọc hướng dẫn của bạn mà làm trả được,mà hỏi nhiều thì lại
ngại quá.nên quyết định đưa file nên nhờ bạn làm giúp (vì nếu làm riêng phần này chắc rễ hiểu)
bạn cố gắng giúp mình nhé,Cảm ơn bạn.
 

File đính kèm

Chắc là do trình độ mình có hạn về phần này,đọc hướng dẫn của bạn mà làm trả được,mà hỏi nhiều thì lại
ngại quá.nên quyết định đưa file nên nhờ bạn làm giúp (vì nếu làm riêng phần này chắc rễ hiểu)
bạn cố gắng giúp mình nhé,Cảm ơn bạn.

Chào bạn khamha !
Đọc file bạn gửi thấy nội dụng của bạn hỏi không đúng với nội dung của ptm0412 đã viết. Những nội dung mà ptm0412 viết gồm 2 phần chính:
1- PivotTable (công cụ của excel để tổng hợp và phân tích số liệu)
2-Ứng dụng VBA vào pivotTable để lọc dữ liệu, để đánh số thứ tự(STT)
Nếu bạn chưa sử dụng công cụ pivotTable thì sẽ khó hiểu với ví dụ của ptm0412. Bạn nên nghiên cứu để ứng dụng công cụ pivotTable, đây là công cụ mạnh của excel cho việc tổng hợp và tạo ra các báo cáo rất nhanh(chỉ bằng động tác kéo thả chuột).
Việc đánh STT trên diễn đàn đã có nhiều bài viết. Trong ví dụ của ptm0412 dùng VBA để đánh số thứ tự cho cột nằm ngoài bảng pivotTable. Nếu bạn tạo được pivotTable thì ứng dụng đánh STT bằng VBA như của ptm0412 sẽ dễ hiểu hơn.
Vài điều muốn chia sẻ thêm với bạn. Thân ái !
 
Xin lỗi, tôi không coi kỹ.
Tặng bạn code kẻ khung cột A luôn.
Ngoài ra, sau khi nhập liệu sheet 1, khi select sheet3, pivot tự cập nhật, với điều kiện dùng name động hoặc data source dư.
 

File đính kèm

Lần chỉnh sửa cuối:
Cảm ơn bạn đã giúp,bạn cho hỏi là nếu ô bắt đầu để điền số thứ tự là 9 thì phải sửa lại Code như thế nào ( bạn thông cảm,vì mình áp dụng
cái này vào nhiều File nên ô bắt đầu để điền số thứ tự có thay đổi ) mình cũng tự sửa rồi nhưng không được,nó bị lỗi như sau:
1, cái kẻ dòng báo lỗi phải tắt.
2, điền số thứ tự bị vượt qua phần Tổng 02 dòng.
Cảm ơn bạn nhiều.

3.Còn cái này nữa bạn,cái kẻ bảng bạn dùng là dấu ... chứ không phải _________nếu là ô ở trong thì OK nhưng đây lại là ở ngoài rìa nên
không được đẹp,bạn hướng dẫn mình cách sửa với,cám ơn.
 
Chỉnh sửa lần cuối bởi điều hành viên:
1 & 2: Bắt đầu dòng nào:

Đã nói bạn rằng:
- Xác định dòng đầu cần đánh số TT của Pivot table, thường là cố định là 1 số nào đó không thay đổi, thí dụ 10
PHP:
BeginR = 10
Vậy, bắt đầu đánh số từ dòng bao nhiêu, BeginR bằng bấy nhiêu.

3: Kẻ dòng Dot hay Continuous:

Do bạn dùng 2003 nên không thấy hiệu quả của style. Trong file trên tôi đã dùng style kẻ Borders cho Pivot Table bằng đường Dot giống như cột A.

Vậy tôi sửa lại để dùng trong 2003, nhưng vẫn là đường Dot ngang toàn bộ các cột. Riêng dòng Tổng cộng, Border riêng bằng continuous.

PHP:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
BeginR = 9                       'Sửa dòng bắt đầu ở dòng lệnh này'
EndR = [b200].End(xlUp).Row
SoTT Range("A" & BeginR & ":A" & EndR - 1)
DrawBorder Range("A" & BeginR & ":D" & EndR - 1)  'Nếu cột cuối không phải D thì sửa ở đây'
DrawBorder Range("A" & EndR & ":D" & EndR)         'Và đây'

End Sub
Note:
Field đơn giá đưa vào Pivot sẽ bị tính Sum, không có ý nghĩa. Tính Average cũng sai
 

File đính kèm

Lần chỉnh sửa cuối:
Chào bạn ptm0412,bạn cho hỏi là nếu có hai Pivot nằm trong một Sheet thì phải sửa cái Code như
thế nào để nó Refresh cả hai.
Mã:
Private Sub Worksheet_Activate()
Me.PivotTables(2).PivotCache.Refresh
End Sub
 
Bạn sửa như sau thì có bao nhiêu nó cập nhật tất

Mã:
Private Sub Capnhat()
Dim Pv As PivotTable
For Each Pv In Sheet1.PivotTables
Pv.PivotCache.Refresh
Next
End Sub
 
mình làm theo cách của bạn SeaLand nhưng không được,nó không hoạt động gì cả,bạn xem lại cho
mình với,Cảm ơn bạn.
 
Chà,Chắc bạn Sealand thử mình đây,mình sửa lại như thế này thì nó chạy được,Cảm ơn bạn.
Mã:
Private Sub Worksheet_Activate()
Dim Pv As PivotTable
For Each Pv In Sheet2.PivotTables
Pv.PivotCache.Refresh
Next
End Sub
 
Tôi e rằng dữ liệu của bạn không có thay đổi, nên refresh không thấy thay đổi. Hoặc code là sheet1 nhưng pivot của bạn nằm trên sheet khác?
Chứ code sealand là OK.

Cũng có cách khác:

PHP:
Private Sub Worksheet_Activate()
With Me
For i = 1 to .PivotTables.Count
 .PivotTables(i).PivotCache.Refresh
Next
End With
End Sub
 
Lần chỉnh sửa cuối:
Vấn đề dùng VBA chuyển dữ liệu từ Pivot Table

Tôi có một File có 3 sheet, 1 sheet chứa CSDL, sheet 2 chứa bảng phương án, sheet 3 chứa Pivot Table (nguồn từ CSDL).

Sau khi Pivot phân tích, tôi muốn nhập dữ liệu vào bảng phương án, nhưng không biết viết CODE như thế nào để được kết quả như sheet Kết quả phương án.

Xin vui lòng xem File và hướng dẫn.

Cám ơn rất nhiều!
 

File đính kèm

Mình thử làm bằng công thức thì cũng ra kết quả giống sheet ketquaphuongan, từ đó mình bạn muốn đưa code vào thì cũng dễ mà với trình độ của bạn mình nghĩ bạn dư sức làm mà. Đâu bạn xem file mình làm bằng công thức xem đúng ý bạn không hen
 

File đính kèm

Mình thử làm bằng công thức thì cũng ra kết quả giống sheet ketquaphuongan, từ đó mình bạn muốn đưa code vào thì cũng dễ mà với trình độ của bạn mình nghĩ bạn dư sức làm mà. Đâu bạn xem file mình làm bằng công thức xem đúng ý bạn không hen

Cám ơn bạn đã quan tâm, tuy nhiên không hẳn là vậy đâu bạn, mình muốn truy vấn theo ID chứ không phải tham chiếu đến địa chỉ từng cell trong Pivot.
 
Dùng hàm GetPivotTable đi, thêm cái bẫy lỗi là OK. Dù dữ liệu có thay đổi, Pivot table thêm bớt gì, thì cũng cập nhật.
Khỏi cần VBA.

Nếu xài VBA thì thà lấy ngay sheet Pivot dấu dòng, định dạng thành ra report ngon lành. Có topic về vấn đề này.
 
Cám ơn bạn đã quan tâm, tuy nhiên không hẳn là vậy đâu bạn, mình muốn truy vấn theo ID chứ không phải tham chiếu đến địa chỉ từng cell trong Pivot.

Mình thấy cũng hơi lạ, mình làm thử file này không biết có giống ý bạn không nữa hen, mình cũng đang học Pivot của Thầy Mỹ hay tuyệt
 

File đính kèm

Gởi nmhung,
Code của nmhung hình như dư 1 đoạn cuối từ For Each Rng2 trở về sau?

Tôi xin giới thiệu cách dùng hàm GetPivotTable:

- Đứng tại cells E8 sheet PAn, đánh dấu =, click chọn sheet Pivot, chọn ô D3 của sheet Pivot ta có:

=GETPIVOTDATA("S.LƯỢNG GT";PIVOTTABLE!$A$1;"MÃ CHỦ HÀNG";"02_TT66_230411_Z11";"CHỦ HÀNG";"HÀNG %";"PHƯƠNG ÁN";"Cần tàu/ ĐB/ xe Cty/ NK")

(Sao mà ghét tên sheet dài và tên field dữ liệu dài đến thế)

- Để nguyên công thức như vậy thì không sao chép đi được, chép đến đâu cũng chỉ 1 số.

- Hàm Get Pivot Table, cho phép tham chiếu đến các ô cho tất cả các đối số của hàm, trừ tên field đang được tính toán (tham số đầu tiên)

Nghĩa là ta có thể sửa thành:

=GETPIVOTDATA("S.LƯỢNG GT";PIVOTTABLE!$A$1;$A$5;$A8;$B$5;$B8;$R$5;$R8)

Công thức này đã có thể fill xuống.

- Cột F cũng làm tương tự, hoặc chép từ cột E qua và thay tên field cho tham số đầu tiên.

- Vấn đề còn lại là 3 cột A, B, và R. Chỉ cần dùng công thức = như ngmhung bài số #2, với 1 tí xảo thuật.
 

File đính kèm

Gởi nmhung,
Code của nmhung hình như dư 1 đoạn cuối từ For Each Rng2 trở về sau?
Dạ, đoạn code này dùng để tìm tên khi mà Mã Chủ Hàng bị gộp lại, nếu bình thường thì dư, như nó chưa tổng quát Thầy ah
Mà sao khi em gộp mà chủ hàng bên sheet Pivottalbe thì bên sheet Phuong an bi lỗi như hình sau đây là bị sao vậy Thầy

hinh1.jpg
hinh2.jpg
 
Chỉnh sửa lần cuối bởi điều hành viên:
Cái vụ nhấn dấu - cho thành + của 2007 và 2010, bên 2003 không có (không phải group nha, là Hide detail). Khi Hide detail thì field "PhuongAn" bị dấu đi, hàm GetPivotData tìm không ra (ở 2 tham số cuối). Nên lỗi là #Ref#: tham chiếu không tìm thấy.

GETPIVOTDATA(data_field,pivot_table,field1,item1,field2,item2,..., field14,item14)

Ở đây là field 3.
 
Gời nmhung,
Theo tôi suy đoán thì L_E sẽ không group, không Hide/Unhide gì cái Pivot table đâu, Sheet P-An đã chuẩn bị 48 dòng vì đã dự đoán dữ liệu chỉ có 1 số nhóm nhất định. Do đó dùng công thức và hàm GetPivotDadta là ổn rồi.

Còn nếu bạn muốn nghiên cứu thêm, thì xem file kèm theo: Không công thức, không VBA, chỉ là thủ thuật Pivot và dấu dòng, không sợ Group/Ungroup, Hide/Unhide gì nữa:
Insert 3 calculated field:
SumSLDB ='SL-GT' +'SL-NK' +'SL-DV'
SumTLDB ='TL-GT' +'TL-NK' +'TL-DV'
Xa =TLXaXe +TLXaXL +TLXaSM +TLXaNK

Cấu trúc có thể khác file gốc 1 tí ti về thứ tự cột Phuongan và cột lược khai, nhưng đây chỉ là thí dụ mẫu.
 

File đính kèm

Lần chỉnh sửa cuối:
Chuyển dữ liệu từ Pivot bằng VBA

Pivot đối với tôi còn rất mới mẽ, tuy nhiên sau khi đọc cuốn sách hướng dẫn Pivot 2003 của Thầy PTM tôi rất thích và bắt đầu nghiên cứu về nó.

Cám ơn Thầy PTM đã tận tình hướng dẫn hổm rày. Nay dùng VBA để chuyển dữ liệu mà qua những File Thầy gửi lên, nghiên cứu rồi viết thành Code.

Xin Thầy và các Anh, Chị vui lòng xem qua, nếu code thừa, thiếu gì xin được bổ sung ạ!

PHP:
Private Sub PhucHoi()
  With BangPhuongAn
    .AutoFilterMode = False
    .Range("A9:I48, L9:O48, Q9:Q48").ClearContents
    BangPivot.[X1:Z4].Copy .[A9]
  End With
End Sub

PHP:
Sub TinhPhuongAn()
  With Application
    .EnableEvents = False: .ScreenUpdating = False
    .Calculation = xlCalculationManual
    On Error GoTo ExitSub
    Dim MaChuHang As String, MaCH As String, PhuongAn As Range, MyRng As Range
    Dim SoHangMS As Byte, SoHangPA As Byte, i As Byte, a As Byte
    Dim Ham: Set Ham = .WorksheetFunction
 
    With Range(CSDL1.[A4], CSDL1.[A65536].End(xlUp)).Resize(, 20)
      If .Rows.Count = 1 Then CSDL2.[A4:T5].Name = "NguonPivot" Else .Name = "NguonPivot"
    End With
    With BangPivot
      .PivotTables("PivotTable1").PivotCache.Refresh
      .[T:V].Clear
    End With
    Call PhucHoi ''<--- XONG SE XOA, hoac chuyen mã cho BangPhuongAn
    If BangPhuongAn.[A8] <> "" Then
      With BangPhuongAn
        Range(.[A9], .[A48].End(xlUp)).Resize(, 3).Copy BangPivot.[T1]
        .Range("A9:I48, L9:O48, Q9:Q48").ClearContents
      End With
      With BangPivot
        SoHangMS = .[T65536].End(xlUp).Row
        For i = 1 To SoHangMS
          MaCH = .Range("T" & i)
          MaChuHang = .[A1]
          .PivotTables("PivotTable1").PivotFields(MaChuHang).CurrentPage = MaCH
          Set PhuongAn = Range(.[B5], .[B65536].End(xlUp))
          SoHangPA = Ham.CountA(PhuongAn)
          Set MyRng = BangPhuongAn.[A48].End(xlUp)
          With PhuongAn
            .Copy: MyRng.Offset(1, 16).PasteSpecial 3
            .Offset(, 1).Resize(, 6).Copy: MyRng.Offset(1, 3).PasteSpecial 3
            .Offset(, 7).Resize(, 4).Copy: MyRng.Offset(1, 11).PasteSpecial 3
          End With
          .Range("T" & i).Resize(, 3).Copy: MyRng.Offset(1).PasteSpecial 3
          If SoHangPA >= 2 Then
            For a = 2 To SoHangPA
              BangPhuongAn.[A48].End(xlUp).Offset(1) = BangPhuongAn.[A48].End(xlUp).Value
            Next
          End If
        Next
        .PivotTables("PivotTable1").PivotFields(MaChuHang).CurrentPage = "(All)"
        .[T:V].Clear
      End With
    End If
  With BangPhuongAn
    .[A8:A48].AutoFilter 1, "<>", , , False
    ''.[A:A].EntireColumn.Hidden = True
  End With
ExitSub:
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True: .EnableEvents = True
  End With
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Trong các mẫu báo cáo của Anh Ptm0412 em thấy có các dòng kẻ bao quanh, đó hình như là Anh Ptm0412 đặt tên vùng in Print_Area, và khi dữ liệu Pivot table thay đổi thì nó cũng thay đổi theo. Cách làm như thế nào vậy các Bác. Em cảm ơn nhiều ạ!
 
Nhờ ptm0412 làm cho bài này với ( mình đã làm theo bạn hướng
dẫn đợt trước mà ko được )
mình cần bạn giúp:
1, kẻ dòng giống như trong File
2, tự động điền STT
3, tạo chữ ký
4, đỉa chỉ Download: http://laoupload.com/WGZ8D6V13MVC/Baocao_PV.xls.html
( bạn thông cảm,vì ko vào DD bằng PC được )
 
Dữ liệu của bạn không chuẩn. Tôi đã nhắc đi nhắc lại ở khắp nơi về điều này: Pivot table, ADO, MSQuery, bài này bài kia, trong sách, trong bài viết:
- Tiêu đề là 1 dòng đơn, không merge cell,
- Tiêu đề không được trùng và không được bỏ trống: ເລກທີ có 4 cột, ລົງວັນທີ có 3 cột, để trống rất nhiều tên cột
- Không được có dòng trống xen kẽ, hoặc dòng thứ tự cột.

Ngoài ra, tôi không biết chữ Lào nên không biết A1, A2, ... lấy từ cột chữ Lào nào
Tên thì tôi đoán (và test bằng thủ thuật riêng) là ຊື່ເຈົ້າຂອງຕອນດິນ, Diện tích, thì đoán và test sẽ là tổng các cột từ S đến AW, thể hiện trên cột AX, mà AX lại chẳng thấy công thức SUM?

Tóm lại, tôi bó tay
 
Lần chỉnh sửa cuối:
Hôm qua,sau khi hỏi thì ngồi mày mò lại bài của bạn và đã làm được khâu STT và kẻ dòng cho cột A.
Còn vấn đề muốn bạn giúp là:
1, làm cho ròng kẻ thành ______thay vì...........
2, kẻ dòng cho các ô nằm bên phải của Pivot,ví dụ: thêm 4 cột.
3, chèn chữ ký dưới Pivot.
Cảm ơn bạn.
 
Rất cảm ơn ptm0412 đã giải thích cặn kẽ về những điều cơ
bản khi muốn làm việc với PV.
Nhưng nghe bạn nói thì rễ,khi bắt tay vào làm nó lại khó
thế ( chắc là mình chưa hiểu được là PV có thể làm được
những cái gì )
Nhân đây nhờ bạn làm giúp cho khamha theo kiểu ngược lại ( theo
mình chắc là rễ hiểu hơn )
---> Bạn xem bản báo cáo của mình và sắp xếp thứ tự trong
Data thế nào để thuận tiện cho việc sử dụng PV<---
LinkDownload: http://laoupload.com/TE5T203HOKUG/BaoCao.xls.html

* Giá của từng loại đất nằm trong Sheet"DLN"
 
Nếu chỉ nói về borders thì sửa code border như sau:
PHP:
Sub BorderSelection()

On Error Resume Next
    With Selection
    For i = 7 To 12
         .Borders(i).LineStyle = 1
         .Borders(i).Weight = 1
    Next
    End With
End Sub
 
Lần chỉnh sửa cuối:
With ActiveSheet.PivotTables("<PivotTableName>").PivotFields("<FieldName>")
For
i = 1 To .PivotItems.Count
With
.PivotItems(i)
.
Visible = (Condition1 And/Or Condition2 And/Or Condition3 ...)
End With
Next
End With

Code trên là của thầy PTM để Filter multi selection trong PivotTable.
Nhưng em làm thử không được, với lại em không hiểu chỗ
(Condition1 And/Or Condition2 And/Or Condition3 ...)

Mong thầy PTM viết code filter cho pivot từ ngày....đến ngày... dùm em.

Em xin cảm ơn. (có file mẫu kèm theo).
 
(Condition1 And/Or Condition2 And/Or Condition3 ...) là các điều kiện của bạn. Ở đây là 2 điều kiện

(CDate(.Value) <= [H3] And CDate(.Value) >= [H2])

PHP:
Sub abc()
With ActiveSheet.PivotTables(1).PivotFields("Ngày")
For i = 1 To .PivotItems.Count
    With .PivotItems(i)
        .Visible = (CDate(.Value) <= [H3] And CDate(.Value) >= [H2])
    End With
Next
End With

End Sub

Ghi chú: Nhớ lưu về dạng xlsm.
 
Thầy PTM ơi, code đã lọc được nhiều ngày rồi.
Nhưng mà nó cứ lọc ngày lộn xộn tùm lum.
Em nghĩ chắc là do cái kiểu DATE. (em thấy trong code có CDate rồi mà vẫn bị).

Thầy xem lại trong file mẫu dùm em nhé.

Em xin cảm ơn.
 
VBA nhận dạng ngày trong pivot table nếu ngày <13 là tháng và nếu ngày >=13 nhận dạng đúng là ngày.

Định dạng trường "Ngay" là [$-409]d-mmm-yy;@ hoặc long date English sẽ hết lỗi. Muốn vậy nhấn chuột phải vào ô B1, field setting, chọn format number

PHP:
Sub abc()
Application.ScreenUpdating = False
On Error Resume Next
With ActiveSheet.PivotTables("NHAP").PivotFields("NGAY")
For i = 1 To .PivotItems.Count
    With .PivotItems(i)
        .Visible = CDate(.Value) <= [H3] And CDate(.Value) >= [H2]
    End With
Next
.PivotItems(ErrNo).Visible = False
End With

Application.ScreenUpdating = True
End Sub
 

File đính kèm

VBA nhận dạng ngày trong pivot table nếu ngày <13 là tháng và nếu ngày >=13 nhận dạng đúng là ngày.

Định dạng trường "Ngay" là [$-409]d-mmm-yy;@ hoặc long date English sẽ hết lỗi. Muốn vậy nhấn chuột phải vào ô B1, field setting, chọn format number

PHP:
Sub abc()
Application.ScreenUpdating = False
On Error Resume Next
With ActiveSheet.PivotTables("NHAP").PivotFields("NGAY")
For i = 1 To .PivotItems.Count
    With .PivotItems(i)
        .Visible = CDate(.Value) <= [H3] And CDate(.Value) >= [H2]
    End With
Next
.PivotItems(ErrNo).Visible = False
End With

Application.ScreenUpdating = True
End Sub

Em xin cảm ơn thầy PTM !
 
Ứng dụng VBA trong Pivot Table

Em đang gặp một vấn đề lớn trong khi làm việc với Pivot Table, nhờ mọi người giúp đỡ

Trong sheet BCTH toi muốn lọc dữ liệu theo trường tên khách hàng, nhưng không hiểu sao không lọc được. Em có làm theo hướng dẫn trên diễn đàn nhưng không chạy được. Mong mọi người chỉ giáo
 

File đính kèm

Rows("17:500").Hidden = False EndR = ActiveSheet.[B1000].End(xlUp).Row
Rows(EndR + 1 & ":" & EndR + 10).Clear

Thầy ptm ơi
Thầy chú thích cho em mấy cái này với, sao em làm cứ báo lỗi ở dòng 3 hoài.
 

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

Back
Top Bottom