Nhờ chuyển công thức SumProduct thành Code ! (1 người xem)

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

van_thanh_phong

Thành viên chính thức
Tham gia
25/6/08
Bài viết
87
Được thích
10
Nghề nghiệp
Giáo viên
Mình có 1 file có 2 sheet: DSHS và THONG KE THEO DIA CHI
Mình thống kê trong sheet "THONG KE THEO DIA CHI" bằng công thức.
Và mình muốn chuyển công thức này sang Code để dùng trong trường hợp tổng quát hơn ( Mảng không xác định)
Mong các bạn trong GPE giúp đỡ !
Chân thành cảm ơn !
 

File đính kèm

Xài hàm DCOUNT() với sự trợ giúp bỡi VBA
Hi !... Cảm ơn bạn đã giúp mình !
Trình độ VBA của mình "Cùi Bắp" lắm nên không hiểu hết code của bạn.
Mà có thể không dùng cột phụ được không bạn ChanhTQ@
Trong DSHS mình đã có cột phụ rùi ( hơi nhiều ) nên không thể dùng cột phụ nữa !
 
Upvote 0
Hi !... Cảm ơn bạn đã giúp mình !
Trình độ VBA của mình "Cùi Bắp" lắm nên không hiểu hết code của bạn.
Mà có thể không dùng cột phụ được không bạn ChanhTQ@
Trong DSHS mình đã có cột phụ rùi ( hơi nhiều ) nên không thể dùng cột phụ nữa !
Thực ra macro (hay nói đúng hơn là DCOUNT() chỉ cần 5,00 ô trống trên trang tính 'DSHS' hay trên trang tính 'Thong Ke. . .' cũng được.

Mà thực ra, nếu muốn xóa tạm thời chúng sau khi chạy macro cũng có thể được;
 
Upvote 0
Hi !... Cảm ơn bạn đã giúp mình !
Trình độ VBA của mình "Cùi Bắp" lắm nên không hiểu hết code của bạn.
Mà có thể không dùng cột phụ được không bạn ChanhTQ@
Trong DSHS mình đã có cột phụ rùi ( hơi nhiều ) nên không thể dùng cột phụ nữa !
Xem thử file này, không có cột phụ, chỉ có cell phụ (Q3 sheet DSHS) thôi.
 

File đính kèm

Upvote 0
Mình có 1 file có 2 sheet: DSHS và THONG KE THEO DIA CHI
Mình thống kê trong sheet "THONG KE THEO DIA CHI" bằng công thức.
Và mình muốn chuyển công thức này sang Code để dùng trong trường hợp tổng quát hơn ( Mảng không xác định)
Mong các bạn trong GPE giúp đỡ !
Chân thành cảm ơn !
Thử "cố tỏ ra lợi hại" xem sao nào:
[GPECODE=vb]Sub TongHop()
Dim i As Long, j As Long, k As Long, l As Long, Arr(), Tmp, DicT, DicA
Tmp = Sheets("DSHS").[G5:H10000]
ReDim Arr(1 To 100, 1 To 100)
Set DicT = CreateObject("Scripting.Dictionary")
Set DicA = CreateObject("Scripting.Dictionary")
k = 1: l = 1: Arr(1, 1) = "T" & ChrW(7893)
'Thong ke chi tiet
For i = 1 To UBound(Tmp)
If IsEmpty(Tmp(i, 1)) Then Exit For
If Not DicT.Exists(Tmp(i, 1)) Then 'Them To neu chua co
k = k + 1: DicT.Add Tmp(i, 1), k: Arr(k, 1) = Tmp(i, 1)
End If
If Not DicA.Exists(Tmp(i, 2)) Then 'Them Ap neu chua co
l = l + 1: DicA.Add Tmp(i, 2), l: Arr(1, l) = Tmp(i, 2)
End If
Arr(DicT.Item(Tmp(i, 1)), DicA.Item(Tmp(i, 2))) = Arr(DicT.Item(Tmp(i, 1)), DicA.Item(Tmp(i, 2))) + 1
Next
'Tao hang tong cong
k = k + 1: Arr(k, 1) = "T" & ChrW(7893) & "ng"
For i = 2 To k - 1
For j = 2 To l
Arr(k, j) = Arr(k, j) + Arr(i, j)
Next
Next
'Gan gia tri len sheet, sort theo cot To va ke khung
With Sheets("THONG KE THEO DIA CHI")
.[A3].CurrentRegion.Clear
.[A1].Resize(, l).HorizontalAlignment = xlCenterAcrossSelection
With .[A3].Resize(k, l)
.Value = Arr
.Resize(k - 1).Sort .Cells(1, 1), 1, Header:=xlYes
.Borders.LineStyle = 1
End With
End With
End Sub[/GPECODE]
Trong file đính kèm, bạn nhấn tổ hợp phím Ctrl+Shift+C để chạy code.

Thực ra với bài này, tôi nghĩ là PivotTable với source là name động có thể xử lý êm đẹp, nhẹ nhàng, nhưng mà tôi lại rất dở về món này nên không dám múa rìu qua mắt thợ, đành nhờ các thành viên khác ra tay vậy.
 

File đính kèm

Upvote 0
Xin chân thành cảm ơn tất cả các bạn trong GPE đã nhiệt tình giúp mình !
Các code của các bạn chạy rất tốt, hơn cả những gì mình mong đợi
Vì trình độ VBA của mình còn quá cùi bắp nên có lẽ cần nhiều thời gian hơn để hiểu các đoạn code.
Còn rất nhiều điều mình muốn học hỏi trong các đoạn code của các bạn, nhưng tạm thời "ngâm cú" đã, trước mắt thì.....chưa biết gì để hỏi !!!
Cảm ơn các bạn rất nhiều !
 
Upvote 0
Mình có 1 file có 2 sheet: DSHS và THONG KE THEO DIA CHI
Mình thống kê trong sheet "THONG KE THEO DIA CHI" bằng công thức.
Và mình muốn chuyển công thức này sang Code để dùng trong trường hợp tổng quát hơn ( Mảng không xác định)
Mong các bạn trong GPE giúp đỡ !
Chân thành cảm ơn !

Thế sao bạn không dùng PivotTable cho nó khỏe
Dạng báo cáo kiểu này thì cả công thức hay VBA đều thua xa lắc PivotTable
Mảng dữ liệu của bạn thay đổi thế nào cũng OK, chỉ việc Refresh phát là cập nhật ngay kết quả
Bạn đã từng thử chưa?

Capture.jpg
 
Upvote 0
Thế sao bạn không dùng PivotTable cho nó khỏe
Dạng báo cáo kiểu này thì cả công thức hay VBA đều thua xa lắc PivotTable
Mảng dữ liệu của bạn thay đổi thế nào cũng OK, chỉ việc Refresh phát là cập nhật ngay kết quả
Bạn đã từng thử chưa?
Tui đã "nghía" cái Pivot nhưng "hơi bị điếc" nên hổng dám làm.
Nhiều "chiện" xài nó cũng "đã" mà chưa có thời gian "ngâm kiếu".
Nhìn cũng đã thiệt.
Híc, ẹc...
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Tui đã "nghía" cái Pivot nhưng "hơi bị điếc" nên hổng dám làm.
Nhiều "chiện" xài nó cũng "đã" mà chưa có thời gian "ngâm kiếu".
Híc, ẹc...

Mấy bài PivotTable phức tạp thì để thầy Mỹ làm, còn bài dạng này dễ mà anh
Anh cứ kéo thả lung tung đi, nhiều khi lượm được "bí kiếp" đấy
Ẹc... Ẹc...
 
Upvote 0
Thế sao bạn không dùng PivotTable cho nó khỏe
Dạng báo cáo kiểu này thì cả công thức hay VBA đều thua xa lắc PivotTable
Mảng dữ liệu của bạn thay đổi thế nào cũng OK, chỉ việc Refresh phát là cập nhật ngay kết quả
Bạn đã từng thử chưa?
Em cũng biết vậy nhưng mà hổng dám chơi:
Thực ra với bài này, tôi nghĩ là PivotTable với source là name động có thể xử lý êm đẹp, nhẹ nhàng, nhưng mà tôi lại rất dở về món này nên không dám múa rìu qua mắt thợ, đành nhờ các thành viên khác ra tay vậy.
 
Upvote 0
Em cũng biết vậy nhưng mà hổng dám chơi:
Thực ra với bài này, tôi nghĩ là PivotTable với source là name động có thể xử lý êm đẹp, nhẹ nhàng, nhưng mà tôi lại rất dở về món này nên không dám múa rìu qua mắt thợ, đành nhờ các thành viên khác ra tay vậy
.
Cứ "chơi" đại đi
Cũng không cần name động hay tĩnh gì cả Phúc à. Có 2 cách:
- Biến dữ liệu thành 1 Table ---> Tự nó sẽ "động" luôn
- Lúc tạo PV, cứ quét dữ liệu "thẳng tay" đến 20,000 luôn đi ---> Chết thằng Tây nào đâu
----------------------------
Mới thử tùm lum nè, nhìn thấy "gớm"
Anh đặt trỏ chuột vào khu vực PV, xong anh bấm vào tab Design, sẽ có 1 rừng kiểu cho anh chọn ---> Hết gớm liền
Ẹc... Ẹc...
 
Lần chỉnh sửa cuối:
Upvote 0
Bài này sao Ba Tê và Nghĩa Phúc lại sử dụng tới 2 em "đít- to" thế nhỉ, nếu đúng dữ liệu như trong bài hình như chỉ cần 1 là đủ
Hôm bữa Ba Tê nhát hích, hổng dám ra, làm tụi mình nhậu xong, ngồi chỗ (hình như) tượng bác Tôn, ngắm thành phố Long Xuyên lúc......2 giờ sáng. Híc+-+-+-++-+-+-++-+-+-+
 
Lần chỉnh sửa cuối:
Upvote 0
Bài này sao Ba Tê và Nghĩa Phúc lại sử dụng tới 2 em "đít- to" thế nhỉ, nếu đúng dữ liệu như trong bài hình như chỉ cần 1 là đủ
Hôm bữa Ba Tê nhát hích, hổng dám ra, làm tụi mình nhậu xong, ngồi chỗ (hình như) tượng bác Tôn, ngắm thành phố Long Xuyên lúc......2 giờ sáng. Híc+-+-+-++-+-+-++-+-+-+
"Dic-to " càng nhiều càng khoái chớ sao?
Mỗi "Dic" làm một "nhiệm vụ" dễ "quản lý" mà.
Sáng hôm sau còn "mần công chuyện" sao dám "hổng nhát".
Thấy Long Xuyên nhậu "đã" hông? Hông đã lần sau sang Chợ Mới hé!
 
Upvote 0

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

Back
Top Bottom