Thay đổi giá trị mục rows và mục column của pivot table bằng vba excel để lọc dữ liệu

Liên hệ QC

kienduy

Thành viên mới
Tham gia
6/9/07
Bài viết
25
Được thích
4
Em nhờ các achi giúp em code sau: em có 1 bảng tính, sheet1 có pivot table được lọc các quyển sách theo năm (field), theo tháng (row), theo ngày (column) và data là tên các quyển sách. Sheet2 có 3 cell: ngày, tháng, năm. Em muốn gán giá trị ngày tháng năm của sheet2 vào giá trị lọc của pivot tương ứng hàng fields, rows, columns của pivot bằng code VBA. Anh chị giúp em với . Cam on anh chị
 
Em nhờ các achi giúp em code sau: em có 1 bảng tính, sheet1 có pivot table được lọc các quyển sách theo năm (field), theo tháng (row), theo ngày (column) và data là tên các quyển sách. Sheet2 có 3 cell: ngày, tháng, năm. Em muốn gán giá trị ngày tháng năm của sheet2 vào giá trị lọc của pivot tương ứng hàng fields, rows, columns của pivot bằng code VBA. Anh chị giúp em với . Cam on anh chị - Em gửi kèm theo file.
 

File đính kèm

  • vd_1.xlsm
    18.6 KB · Đọc: 9
Upvote 0
Em nhờ các achi giúp em code sau: em có 1 bảng tính, sheet1 có pivot table được lọc các quyển sách theo năm (field), theo tháng (row), theo ngày (column) và data là tên các quyển sách. Sheet2 có 3 cell: ngày, tháng, năm. Em muốn gán giá trị ngày tháng năm của sheet2 vào giá trị lọc của pivot tương ứng hàng fields, rows, columns của pivot bằng code VBA. Anh chị giúp em với . Cam on anh chị - Em gửi kèm theo file.

Sao với dữ liệu ở sheet1 không lọc sang Sheet2 rồi pivot hả bạn ?
Bạn tham khảo nhé. Thay đổi giá trị ngày-tháng-năm và kích là được. Thử làm theo cách này xem ổn không nhé. Mình cũng mới ngịch VBA này nên còn gà lắm bạn.


1592337268998.png
 

File đính kèm

  • vba1.xlsm
    32 KB · Đọc: 8
Lần chỉnh sửa cuối:
Upvote 0
Sao với dữ liệu ở sheet1 không lọc sang Sheet2 rồi pivot hả bạn ?
HI anh, vì nếu như vậy thì bảng tính sẽ phức tạp (phải add thêm code để filter từ data nguồn theo điều kiện lọc, rồi phải add code chạy tiếp pivot ). Và theo mình nghĩ (với kiến thưc vỡ lòng vba) thì chỉ cần thay đổi giá trị trực tiếp từ pivot thì dễ dàng hơn. Anh giúp em nha.
Bài đã được tự động gộp:

hoặc em vẫn chưa hiểu ý của anh, anh có thể giúp theo hướng của anh.
 
Upvote 0
Chỉ cần dùng slicer là được, đâu cần tới VBA
 
Upvote 0
Sao với dữ liệu ở sheet1 không lọc sang Sheet2 rồi pivot hả bạn ?
Bạn tham khảo nhé. Thay đổi giá trị ngày-tháng-năm và kích là được. Thử làm theo cách này xem ổn không nhé. Mình cũng mới ngịch VBA này nên còn gà lắm bạn.


View attachment 239383
Oi da ta Anh Tuyen, em cam on anh nhieu
Bài đã được tự động gộp:

Chỉ cần dùng slicer là được, đâu cần tới VBA
Anh oi, Slicer là gì ? em vẫn chưa hiểu, anh giải thích và hướng thêm giúp em ạ
Bài đã được tự động gộp:

Cho em hỏi thêm cái này nữa nha.
E, muốn có đoạn code VBA mẫu, để thực hiện việc sau:
- trong thư mục cho trước, có 10 file data ( big data), trong đó có 1 file là để tổng hợp (có thể là cáo cáo, các chỉ tiêu quan trọng ..)
- Từ file chính (main file), mình có list tên các file cần phải thực hiện (vd là 5 file)
- Viết code để tương tác với từng file: mở file, copy nội dung file, và dán vào main file theo vùng được chỉ định
- Việc copy nội dung file vào main file (được quy định theo điều kiện cần copy ):
vd form file cho trước: liệt kê theo từng nhóm, trong đó có từng cá nhân (row), và được liệt kê theo từng ngày (column)
copy nội dung đúng theo ngày được chỉnh định ...
Anh giúp em với nha. cảm ơn anh nhiều
 
Lần chỉnh sửa cuối:
Upvote 0
Oi da ta Anh Tuyen, em cam on anh nhieu
Bài đã được tự động gộp:


Anh oi, Slicer là gì ? em vẫn chưa hiểu, anh giải thích và hướng thêm giúp em ạ
Bài đã được tự động gộp:

Cho em hỏi thêm cái này nữa nha.
E, muốn có đoạn code VBA mẫu, để thực hiện việc sau:
- trong thư mục cho trước, có 10 file data ( big data), trong đó có 1 file là để tổng hợp (có thể là cáo cáo, các chỉ tiêu quan trọng ..)
- Từ file chính (main file), mình có list tên các file cần phải thực hiện (vd là 5 file)
- Viết code để tương tác với từng file: mở file, copy nội dung file, và dán vào main file theo vùng được chỉ định
- Việc copy nội dung file vào main file (được quy định theo điều kiện cần copy ):
vd form file cho trước: liệt kê theo từng nhóm, trong đó có từng cá nhân (row), và được liệt kê theo từng ngày (column)
copy nội dung đúng theo ngày được chỉnh định ...
Anh giúp em với nha. cảm ơn anh nhiều
Oi da ta Anh Tuyen, em cam on anh nhieu
Bài đã được tự động gộp:


Anh oi, Slicer là gì ? em vẫn chưa hiểu, anh giải thích và hướng thêm giúp em ạ
Bài đã được tự động gộp:

Cho em hỏi thêm cái này nữa nha.
E, muốn có đoạn code VBA mẫu, để thực hiện việc sau:
- trong thư mục cho trước, có 10 file data ( big data), trong đó có 1 file là để tổng hợp (có thể là cáo cáo, các chỉ tiêu quan trọng ..)
- Từ file chính (main file), mình có list tên các file cần phải thực hiện (vd là 5 file)
- Viết code để tương tác với từng file: mở file, copy nội dung file, và dán vào main file theo vùng được chỉ định
- Việc copy nội dung file vào main file (được quy định theo điều kiện cần copy ):
vd form file cho trước: liệt kê theo từng nhóm, trong đó có từng cá nhân (row), và được liệt kê theo từng ngày (column)
copy nội dung đúng theo ngày được chỉnh định ...
Anh giúp em với nha. cảm ơn anh nhiều


Mã:
Kích vào PivotTable -> Options -> Insert Slicer-> Kích chọn Name cần Insert -> OK
Công cụ này như Filter đó bạn.

Còn Code tổng hợp dữ liệu đó thì bạn thử gửi file tổng và 1 số file con nên để mọi người giúp bạn
 
Upvote 0
Anh oi, Slicer là gì ? em vẫn chưa hiểu, anh giải thích và hướng thêm giúp em ạ

Cho em hỏi thêm cái này nữa nha.
E, muốn có đoạn code VBA mẫu, để thực hiện việc sau:
- trong thư mục cho trước, có 10 file data ( big data), trong đó có 1 file là để tổng hợp (có thể là cáo cáo, các chỉ tiêu quan trọng ..)
- Từ file chính (main file), mình có list tên các file cần phải thực hiện (vd là 5 file)
Slicer bạn @Phạm Doãn Tuyến đã trả lời. 5 file tập hợp thành 1 có thể chưa cần VBA, mà dùng power query
 
Upvote 0
Mã:
Kích vào PivotTable -> Options -> Insert Slicer-> Kích chọn Name cần Insert -> OK
Công cụ này như Filter đó bạn.

Còn Code tổng hợp dữ liệu đó thì bạn thử gửi file tổng và 1 số file con nên để mọi người giúp bạn
Da em gửi file mẫu tên: VD_12 với nội dung sau:

Nội dung:
Có một file Main ở thu mục: C:\Minh\VB\
trên file đó sở sheet2 có list danh sách tên file cần thực hiện
Path:file name:
C:\Minh\VB\Doanh_so.xlsx
C:\Minh\VB\Chi_phi.xlsx
C:\Minh\VB\Tiep_thi.xlsx
C:\Minh\VB\Khao_sat.xlsx
C:\Minh\VB\Dao_tao.xlsx
cần viết code VBA để:
+ thi hành lần lược các tên file trên (mở, copy nội dung và dán vào từng sheet của Main file, nghĩa là mỗi file mở ra và dán vào mỗi sheet)
+ Khi thực hiện lệnh dán, sẽ chọn vùng để copy (vd chọn vùng là B3: H150), vùng dán file là D3: G150
 

File đính kèm

  • vd_12.xlsm
    19.1 KB · Đọc: 3
Upvote 0
Da em gửi file mẫu tên: VD_12 với nội dung sau:

Nội dung:
Có một file Main ở thu mục: C:\Minh\VB\
trên file đó sở sheet2 có list danh sách tên file cần thực hiện
Path:file name:
C:\Minh\VB\Doanh_so.xlsx
C:\Minh\VB\Chi_phi.xlsx
C:\Minh\VB\Tiep_thi.xlsx
C:\Minh\VB\Khao_sat.xlsx
C:\Minh\VB\Dao_tao.xlsx
cần viết code VBA để:
+ thi hành lần lược các tên file trên (mở, copy nội dung và dán vào từng sheet của Main file, nghĩa là mỗi file mở ra và dán vào mỗi sheet)
+ Khi thực hiện lệnh dán, sẽ chọn vùng để copy (vd chọn vùng là B3: H150), vùng dán file là D3: G150

Bạn diễn tả như vậy còn thiếu nhiều điều kiện để viết thành code lắm tốt nhất nếu không có file gốc thì tạo ra file Main và 1 số file con với dữ liệu khu vực cần copy để mọi người hiểu và giúp được bạn
 
Upvote 0
Bạn diễn tả như vậy còn thiếu nhiều điều kiện để viết thành code lắm tốt nhất nếu không có file gốc thì tạo ra file Main và 1 số file con với dữ liệu khu vực cần copy để mọi người hiểu và giúp được bạn
Anh Tuyến ơi, em trình bày lại nha, và nhờ anh giúp đỡ:
Em có file chính tên: vd_xuly, Sau khi tính toán đã có list danh sách tên file (E3:E18), và danh sách đường dẫn (C3:C18), em muốn viết các code sau:
Code1 (code nay viết mãi không được ): Muốn viết code để thực thi Mở file theo danh sách bên cạnh , rồi đóng file lại, làm lần lượt từng file (số file có thể lên đến 16 file trong vùng E3:E16)
Code2:
+ Mở file doanh_so_1.xlsx, sau khi mở,
+ Copy vùng dữ liệu (A5: G11) của file đó ở sheet1, sau đó tạo sheet mới cuả file chính (có tên: vd_xuly), Paste data vào vùng (B5:H11),
+ Thoát file doanh_so_1,xlsx (không có lưu),
+ tiến hành lưu file chính (file name: vd_xuly) sau khi đã paste.
+ Cuối cùng xóa sheet vừa tạo tại file chính (vd_xuly).

Em copy để anh hình dung và đính kèm file.
Path:file name:Full path & file name
1C:\Minh\VBdoanh_so_1.xlsxC:\Minh\VB\doanh_so_1.xlsx
2C:\Minh\VBdoanh_so_2.xlsxC:\Minh\VB\doanh_so_2.xlsx
3C:\Minh\VBdoanh_so_3.xlsxC:\Minh\VB\doanh_so_3.xlsx
4C:\Minh\VBdoanh_so_4.xlsxC:\Minh\VB\doanh_so_4.xlsx
5C:\Minh\VBdoanh_so_5.xlsxC:\Minh\VB\doanh_so_5.xlsx
6
7
8
9
10
11
12
13
14
15
16
Bài đã được tự động gộp:

Cac anh chị ơi, em cần gấp lắm, giúp em với ah
 

File đính kèm

  • vd_xuly.xlsm
    22.6 KB · Đọc: 4
Lần chỉnh sửa cuối:
Upvote 0
+ Copy vùng dữ liệu (A5: G11) của file đó ở sheet1, sau đó tạo sheet mới cuả file chính (có tên: vd_xuly), Paste data vào vùng (B5:H11),
...
+ Cuối cùng xóa sheet vừa tạo tại file chính (vd_xuly).

Copy xong rồi xoá kết quả thì copy làm chi vậy?
 
Upvote 0
Code dưới đây không xoá sheet vừa tạo, tôi copy xong tôi tiếc
PHP:
Sub action()
Application.ScreenUpdating = False
Dim i As Integer, j As Integer, z As String

j = Sheet2.[G100].End(xlUp).Row

For i = 3 To j
    z = Sheet2.Cells(i, 7).Value
    If Len(z) > 0 Then
        ThisWorkbook.Sheets.Add: ActiveSheet.Name = "abc" & i - 2
        Workbooks.Open z
        ActiveWorkbook.ActiveSheet.Range("A5:G11").Copy ThisWorkbook.ActiveSheet.Range("B5:H11")
        ActiveWorkbook.Close False
    End If
Next

Application.ScreenUpdating = True
End Sub
 
Upvote 0
Da em muon có code demo de em viết tiếp đoạn xử lý sau này anh/chị ơi.
Vi data xu ly sau nay lớn trên 30.000 rows, nên khi đó phải có công đoạn copy gián tiếp và sau khi xu lý xong thì phải xóa đi .
Vậy tôi xoá code bài trên nhé?
 
Upvote 0
Vậy tôi xoá code bài trên nhé?
Hi anh chị, những code anh chi hỗ trợ đều hữu ích cho em, em rất cảm ơn. Anh chị đừng xoá nha.
Bài đã được tự động gộp:

Hi anh chị, những code anh chi hỗ trợ đều hữu ích cho em, em rất cảm ơn. Anh chị đừng xoá nha.
Anh chị giúp fix lỗi doan code này giup em với:
———

Sub action()
Dim i as integer, j as integer, z as string, y as string, x as string
j=4
Rang(“E3”).select
For i =1 to j
z= sheet1.cells(sheet1.range(“E3”).row+i-1,”E”) ‘Full path, vd C:\minh\vd\... theo tung dong i
y=sheet1.cells(sheet1.range(“F3”).row+i-1,”F”) ‘ten file theo tung dong i
x=sheet1.cells(sheet1.range(“G3”).row+i-1,”G”) ‘ ten sub de action tung file theo tung dong i
Workbooks.open (z)
Call x ‘ cai nay bị lỗi error em tim chua ra, a chị giúp
‘ action sub co ten thong qua bien x
‘ vd neu i la 1, x nhan gia tri la B
‘ neu i la 2, x nhan gtri la C
‘ i la 3 thi x la L
‘ i la 4 thi x la N
Workbooks(y). close
Next
End sub

Sub B()
Msgbox “ thuc cac viec sau”
‘Achi add code giup em: copy sheet 2 vung A1:C11 den sheet3 cua file chinh chua code nay.
End sub
Sub C()
Msgbox “ok”
End sub
Sub L()
Msgbox “ok”
End sub
Sub N()
Msgbox “ok”
End sub
 
Lần chỉnh sửa cuối:
Upvote 0
Và không nên đăt tên thủ tục là C ( cái này em không hiểu ly do vi sao)
Em nhờ anh viết giúp em códe teong thủ tục sub B() ạh
Tên thủ tục cần đặt sao cho có ý nghĩa dù cho viết tắt, tránh các từ khoá, thuộc tính, phương thức.
Code (không xoá) trong đó có 1 câu lệnh copy từ file này qua file khác. Bạn cần biết vận dụng chứ
 
Upvote 0
Web KT

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

Back
Top Bottom