Tổng hợp dữ liệu từ nhiều sheet có lựa chọn (1 người xem)

  • Thread starter Thread starter huy vu
  • Ngày gửi Ngày gửi
Liên hệ QC

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

huy vu

Thành viên hoạt động
Tham gia
29/2/12
Bài viết
164
Được thích
1
Em chào các anh chị trên GPE,

Em có bài toán sau, mong các anh/chị giúp đỡ

Em có 1 file gồm các Sheet:

- T1, T2... T12: nội dung là doanh thu bán hàng của từng tháng theo từng mã cửa hàng và nhân viên bán hàng. Cấu trúc giống sau, gồm các trường: MA, NHAN VIEN, SO TIEN, PHI

- Sheet TongHop: Có ô C3 để chọn mã cửa hàng. File đính kèm đang thể hiện doanh thu theo ô C3 ứng với từng nhân viên (Chọn tháng tại ô C4).

Nếu theo từng tháng em có thể dùng Sumifs để tính toán (tuy nhiên không linh hoạt nếu muốn chọn cho nhiều tháng).
Tuy nhiên bài toán đặt ra như sau:
Em muốn tạo 1 CheckList, cho tùy chọn multichoise từ 1,2...,12 (Có thể chọn 1 hoặc nhiều).
Nều tích chọn 1 thì ra số tiền tháng 1, nếu chọn 1 và 2.... thì ra số tiền của tháng 1 + tháng 2...

Để cho file nhẹ, ở đây em chỉ để 3 sheet T9, T10, T11.

Mong các anh chị giúp đỡ!
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Bạn mồi .xlsb thì chơi VBA vậy. Bạn xem file

1. Xem theo tháng thì chọn Tháng tại C4 thì code tự chạy
2. Xem nhiều tháng thì tick trên Listbox (tick từ 2 tháng trở lên). Sau đó Click button "Xem theo thang" để code chạy
3. Muốn xem cả năm thì chỉ cần Click vào Button "Xem ca nam" thì code chạy.

Lưu ý: bạn bổ sung cho đủ 12 tháng (12 sheet), nếu không có thể code chạy bị lỗi...Hoặc có dòng dư ra do trên ListBox tôi Set mặc định là đủ 12 tháng.
Cảm ơn bạn, Rất hay và rất nhiều cái để học hỏi.
Xin hỏi thêm mọi người là bài này có thể dùng Pivot Table từ nhiều bảng được không ạ???
Xin cảm ơn!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Pivot hok biết có được nhiều Sheet (hoặc nhiều bảng) hay không. Tôi ít xài nên hok có rành vụ này. Nhưng ở trên tôi có nói...Nếu pivot được đi chăng nữa cũng căn cứ cái gì mà sau khi Pivot thì nhóm theo Tháng được ấy.... Vì trên file dữ liệu tại mỗi sheet chỉ có 4 cột, không có cột ngày tháng năm. Chỉ có tên sheet là phân biệt được tháng...(mấu chốt nó nằm ở đây đó chàng...). Cho nên tôi mới đưa ra giải phảp là gôm dữ liệu lại 1 sheet Tổng & kèm theo tên sheet để phân biệt ==> Lúc này ta Pivot Table nó đơn giản hơn ...--=0--=0--=0
File thật ít nhất mỗi sheet có 13 cột. Chưa chắc là hông có gì để phân biệt đâu nha. Nếu nói dựa vào tên sheet, tổng hợp vào 1 sheet để phân biệt, thì cũng có thể dựa vào tên sheet, không tổng hợp cũng phân biệt được mà. Có chăng là cách đó chàng chưa biết.
P/s: Và tui cũng hông có biết, đừng có hỏi nha. Hehe (như đã comment bài trên, gom về 1 sheet là hợp lý nhất rồi, có chăng tại chàng nói..........nên mới.........)
 
Lần chỉnh sửa cuối:
Upvote 0
Cái này bạn tìm 1 addin trong 4rum này.
Hay lắm.
Bạn muốn tổng hợp từ sheet nào đến sheet nào.
Từ ô nào đến ô nào đều được.
 
Upvote 0
Là sao chỗ đỏ đỏ chưa hiểu ý của chàng... Hay chàng lại hiểu theo cách nào khác nữa...???
Ý tui nói là copy về sheet tổng rồi dựa vào tên Sheet ở 1 cột trên sheet tổng (tất nhiên cái này VBA thì đơn giản rồi.) thì lúc đó Pivot mới có cái để mình nhóm theo Tháng đó cha nội...



Vì như vậy ở trên tôi mới nói là chủ topic cần úp cái file thật lên đó đó...Chàng phá phách quá, rảnh thì ra quá làm vài ve đi cha nội!
Xin cảm ơn mọi người đã quan tâm và giúp đỡ.
Như tôi nói File thật cũng y chang thế thôi, chỉ thêm các sheet T1, T2...(Mọi người có coi như các sheet đó đi, nhưng dữ liệu =0).
Do hơi nặng nề nên tôi chỉ ví dụ ra 3 sheet T9,T10,T11
Việc Copy về một sheet tổng hợp cũng hợp lý. Tôi sẽ thử xem.
Nhưng nếu vẫn muốn cấu trúc như hiện tại, mọi người có thể xem xét cách tổng hợp dữ liệu từ nhiều bảng bằng Pivot table.
Xin cảm ơn!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Bạn muốn thì tôi chiều bạn luôn. Lấy file và Click vào cái Button "TONGHOP_GPE". Dữ liệu của các tháng sẽ được kéo về và dán xuống vùng bên dưới... Giờ thì bạn muốn Pivot Table chế biến thế nào thì tùy...

P/s: cơ mà với file ở Post 2 là chạy ngon lành rồi mà lại thích Pivot nữa ta???

Code của anh rất hay và hiệu quả rồi ạ.
Nhưng em có nghe phong phanh, Excel hỗ trợ bằng Query From Workbook, kết hợp Pivot Table rất hay. Mà em đang muốn tìm hiểu.

P/S: Giải pháp Excel mà anh, có càng nhiều cách thì càng học hỏi được nhiều.
 
Upvote 0
Code của anh rất hay và hiệu quả rồi ạ.
Nhưng em có nghe phong phanh, Excel hỗ trợ bằng Query From Workbook, kết hợp Pivot Table rất hay. Mà em đang muốn tìm hiểu.

P/S: Giải pháp Excel mà anh, có càng nhiều cách thì càng học hỏi được nhiều.
Query Table mình chưa thấy 4rum có tài liệu.
 
Upvote 0
Bạn mồi .xlsb thì chơi VBA vậy. Bạn xem file

1. Xem theo tháng thì chọn Tháng tại C4 thì code tự chạy
2. Xem nhiều tháng thì tick trên Listbox (tick từ 2 tháng trở lên). Sau đó Click button "Xem theo thang" để code chạy
3. Muốn xem cả năm thì chỉ cần Click vào Button "Xem ca nam" thì code chạy.

Lưu ý: bạn bổ sung cho đủ 12 tháng (12 sheet), nếu không có thể code chạy bị lỗi...Hoặc có dòng dư ra do trên ListBox tôi Set mặc định là đủ 12 tháng.
Cảm ơn bạn hpkhuong đã rất nhiệt tình giúp đỡ.
Để hiểu hơn về code của bạn, tiếp theo bài #2 tôi thấy có đối tượng: OLEObjects("ListBox1").Object
Bạn có thể giải thích thêm về cách dùng đối tượng này.
Xin cảm ơn bạn!
 
Upvote 0
Cảm ơn bạn hpkhuong đã rất nhiệt tình giúp đỡ.
Để hiểu hơn về code của bạn, tiếp theo bài #2 tôi thấy có đối tượng: OLEObjects("ListBox1").Object
Bạn có thể giải thích thêm về cách dùng đối tượng này.
Xin cảm ơn bạn!
Lâu không thấy hồi âm.
xin hỏi có phải object này để lấy giá trị của list box xuống sheet.
tôi có thử insert một list bõ vào 1 file khác và dùng code của bạn thì báo lỗi ngay dòng mầu xanh đó "Sub or Function not define".
ko hiểu có phải trong thư viện thiếu j đó, mà ko biết thiếu cái gì.
mong các thành viên khác giúp đỡ.
 
Upvote 0
Gì mà lâu hồi âm. Thứ 7 tôi có làm đâu mà hồi với âm... đi làm mới rảnh có thời gian vào GPE chứ. Ở nhà sao thời gian đâu mà vào...
Cái Listbox đó là thư viện ActiveX control trên excel thôi...mà
Bạn insert thêm một cái nữa là phải xem cái đó tên là gì chứ... ví dụ với file tôi làm cho bạn tên là "ListBox1" .... thì cái bạn mới thêm có thể là ListBox2,....ListBox(n) chứ.... sao xài code của cái 1 được...
Có thể hơi máy móc, Tôi muốn đưa giá trị ListBox xuống B5
Mã:
Sub layDL()
Dim LB As MSForms.ListBox
Set LB = OLEObjects("ListBox21").Object
With LB
    If .Selected(5) Then
        [B2] = .List(5)
    End If
End With
End Sub
Nhưng chưa được. Mong bạn giúp
 

File đính kèm

Upvote 0
Cảm ơn bạn đã chia sẻ. Phần activeX control này tôi chưa nắm vững cho lắm.
tôi cũng rất từ từ ko có vội,
hy vọng hiểu vấn đề để đêm nay ngủ ngon
 
Upvote 0
Bạn chưa có kiến thức cơ bản về VBA. Cho nên phải từ từ mà học...cái cơ bản trước rồi mới đến những thứ này.
+ Trên list box của bạn có rất nhiều giá trị... Cho nên bạn muốn gán cho nó thì phải gán ở nhiều cell (cái này phải dùng vùng lặp mà dán xuống.)
...............
Với câu này của bạn làm tôi sáng tỏ ra bao nhiêu. Vô cùng cảm ơn, quan trọng là tôi đã đưa được từng giá trị của ListBox xuống Sheet.
Còn code TongHop tôi cũng đã hiểu.
 
Upvote 0
Web KT

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

Back
Top Bottom