Lập trình thống kê so sánh (1 người xem)

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

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

meacupa

Thành viên chính thức
Tham gia
2/12/11
Bài viết
77
Được thích
3
Hi all.
Mình có một vấn đề cần lập trình để thống kê nhưng lại không biết về marco.
Rất mong được các Pro giúp đỡ.
Thanks.
 

File đính kèm

Hi all.
Mình có một vấn đề cần lập trình để thống kê nhưng lại không biết về marco.
Rất mong được các Pro giúp đỡ.
Thanks.
1/ Bạn viết tiếng Việt thì thuần việt, trừ các từ chuyên môn, "Rất mong được các Pro giúp đỡ" đọc sao thấy "hổng khoái".HongHieu.JPG
2/ Bạn phải giải thích rõ, các số 6-1-6 trong cột C và 1-2-1 trong cột D nghĩa là gì? Đếm kiểu nào để ra kết quả đó? Mấy cái A(i+1)... không phải ai cũng hiểu được đâu.
3/ Bạn đã hỏi ở đây mà chưa ai trả lời có thể do 1 trong 2 ý trên. Chú ý đừng gởi cùng nội dung câu hỏi nhiều bài, nhiều nơi.
http://www.giaiphapexcel.com/forum/...-sánh-cần-các-Pro-giúp-đỡ&p=486239#post486239
 
Lần chỉnh sửa cuối:
Upvote 0
1/ Bạn viết tiếng Việt thì thuần việt, trừ các từ chuyên môn, "Rất mong được các Pro giúp đỡ" đọc sao thấy "hổng khoái".View attachment 99277
2/ Bạn phải giải thích rõ, các số 6-1-6 trong cột C và 1-2-1 trong cột D nghĩa là gì? Đếm kiểu nào để ra kết quả đó? Mấy cái A(i+1)... không phải ai cũng hiểu được đâu.
3/ Bạn đã hỏi ở đây mà chưa ai trả lời có thể do 1 trong 2 ý trên. Chú ý đừng gởi cùng nội dung câu hỏi nhiều bài, nhiều nơi.
http://www.giaiphapexcel.com/forum/...-sánh-cần-các-Pro-giúp-đỡ&p=486239#post486239

Thanks bạn đã quan tâm đến bài của mình.
Mình xin trả lời câu hỏi của bạn như sau:
Lấy 21(A1, lúc này i = 1) so sánh với 29, 85, 23, 31, 20, 62, 10, 35, 92, 19, 07, 67, 64, 04, 83, 97, 81(mảng F2:V2)

không có giá trị nào trùng( = 21). Tiếp tục lấy 21 so sánh với F3:V3 .....cho đến F7:V7 thì mới thấy giá trị trùng( 21 -mình đã bôi vàng-).
Ghi giá trị 6( = 7 - 1) vào ô C1.
Do chỉ trùng có 1 lần( mảng F7:V7 chỉ có 1 giá trị 21) ghi giá trị 1 vào ô D1.
So sánh song A1 tiếp tục so sánh tiếp A2( 88) với mảng F3:V3. Ta thấy có 2 giá trị 88 ở mảng nên ghi giá trị 1 ở ô C2 và 2 ở ô D2.
Tiếp tục như thế cho đến hết.

Rất mong bạn dành chút thời gian giúp mình nhé.
Thanks.
 
Lần chỉnh sửa cuối:
Upvote 0
Thanks bạn đã quan tâm đến bài của mình.
Mình xin trả lời câu hỏi của bạn như sau:
Lấy 21(A1, lúc này i = 1) so sánh với 29, 85, 23, 31, 20, 62, 10, 35, 92, 19, 07, 67, 64, 04, 83, 97, 81(mảng F2:V2)

không có giá trị nào trùng( = 21). Tiếp tục lấy 21 so sánh với F3:V3 .....cho đến F7:V7 thì mới thấy giá trị trùng( 21 -mình đã bôi vàng-).
Ghi giá trị 6( = 7 - 1) vào ô C1.
Do chỉ trùng có 1 lần( mảng F7:V7 chỉ có 1 giá trị 21) ghi giá trị 1 vào ô D1.
So sánh song A1 tiếp tục so sánh tiếp A2( 88) với mảng F3:V3. Ta thấy có 2 giá trị 88 ở mảng nên ghi giá trị 1 ở ô C2 và 2 ở ô D2.
Tiếp tục như thế cho đến hết.

Rất mong bạn dành chút thời gian giúp mình nhé.
Thanks.
Cũng hổng hoàn toàn hiểu, làm thí thí.
Enable Macros rồi bấm nút.
 

File đính kèm

Upvote 0
Thanks bạn.
Đúng với mục đích của mình rồi. Mình không ngờ là nó gọn đến thế
Bạn có thể giúp thêm mình một chút, mình muốn làm cho nó hoàn thiện, tổng quát hơn.
Thay vì so sánh 1 cell(A1) với 1 mảng(F2:V2) thì mình muốn so sánh 1 mảng với 1 mảng.
VD: so sánh mảng A1:C1 với H2:V2, chỉ cần có 1 giá trị trong mảng A1:C1 trùng với 1 giá trị trong bảng H2:V2 là được.
Kết quả ghi ra E1, số lần trùng ghi ra F1.
 
Lần chỉnh sửa cuối:
Upvote 0
Thanks bạn.
Đúng với mục đích của mình rồi. Mình không ngờ là nó gọn đến thế
Bạn có thể giúp thêm mình một chút, mình muốn làm cho nó hoàn thiện, tổng quát hơn.
Thay vì so sánh 1 cell(A1) với 1 mảng(F2:V2) thì mình muốn so sánh 1 mảng với 1 mảng.
VD: so sánh mảng A1:C1 với H2:V2, chỉ cần có 1 giá trị trong mảng A1:C1 trùng với 1 giá trị trong bảng H2:V2 là được.
Kết quả ghi ra E1, số lần trùng ghi ra F1.

Có Bạn nào biết thì giúp mình với. Mình xin cảm ơn nhiều
 
Upvote 0
Ặc. Không có cao thủ nào ra tay giúp mình ah.
 
Upvote 0
Thanks bạn.
Đúng với mục đích của mình rồi. Mình không ngờ là nó gọn đến thế
Bạn có thể giúp thêm mình một chút, mình muốn làm cho nó hoàn thiện, tổng quát hơn.
Thay vì so sánh 1 cell(A1) với 1 mảng(F2:V2) thì mình muốn so sánh 1 mảng với 1 mảng.
VD: so sánh mảng A1:C1 với H2:V2, chỉ cần có 1 giá trị trong mảng A1:C1 trùng với 1 giá trị trong bảng H2:V2 là được.
Kết quả ghi ra E1, số lần trùng ghi ra F1.

Đây là ví dụ mình cần làm.
 

File đính kèm

Upvote 0
Đây là ví dụ mình cần làm.
Thật tình là chưa hiểu hết, làm đại, trật làm lại, hông nhầm nhò gì
Hình như [D3] phải là số 6 chứ nhỉ ???
Lại hình như [D8] & [E8] cóc có gì mới phải chứ nhỉ ???
Híc
Thân
Mình cho kết quả ở cột [X] để kiểm tra thôi, bấm đầu mèo chạy code nhé
 

File đính kèm

Upvote 0
Thật tình là chưa hiểu hết, làm đại, trật làm lại, hông nhầm nhò gì
Hình như [D3] phải là số 6 chứ nhỉ ???
Lại hình như [D8] & [E8] cóc có gì mới phải chứ nhỉ ???
Híc
Thân
Mình cho kết quả ở cột [X] để kiểm tra thôi, bấm đầu mèo chạy code nhé
Rất cảm ơn bạn. Bài của bạn rất dễ hiểu.
Đúng là mình ghi nhầm: D3 phải là 6, còn D8,E8 phải ko có gì( cái này do mình cắt bớt đoạn cuối cho đỡ dài).
 
Upvote 0
Thật tình là chưa hiểu hết, làm đại, trật làm lại, hông nhầm nhò gì
Hình như [D3] phải là số 6 chứ nhỉ ???
Lại hình như [D8] & [E8] cóc có gì mới phải chứ nhỉ ???
Híc
Thân
Mình cho kết quả ở cột [X] để kiểm tra thôi, bấm đầu mèo chạy code nhé

Bạn cho mình hỏi một chút.
Với code của bạn bây giờ mình muốn thay đổi mảng A1:C1 thành A1:B1 thôi thì cần thay đổi đoạn nào trong code. Bạn có thể giải thích hay bôi màu vào đoạn cần sửa giúp mình được không.
Public Sub Tim()
Dim Vung, VungDo, I, J, K, kK, Kq, Gom, Tong
Set Vung = Range([A1], [A10000].End(xlUp))
VungDo = Range([F1], [F10000].End(xlUp)).Resize(, 17)
ReDim Kq(1 To Vung.Rows.Count, 1 To 2)
For I = 1 To Vung.Rows.Count
Gom = Vung(I) & " " & Vung(I).Offset(, 1) & " " & Vung(I).Offset(, 2)
kK = kK + 1
For J = I + 1 To UBound(VungDo, 1)
For K = 1 To UBound(VungDo, 2)
If InStr(Gom, VungDo(J, K)) Then Tong = Tong + 1
Next K
If Tong > 0 Then
Kq(kK, 1) = J - I: Kq(kK, 2) = Tong
Tong = 0: Exit For
End If
Next J
Next I
[X1:E1000].ClearContents
[Y1].Resize(kK, 2) = Kq
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bạn cho mình hỏi một chút.
Với code của bạn bây giờ mình muốn thay đổi mảng A1:C1 thành A1:B1 thôi thì cần thay đổi đoạn nào trong code. Bạn có thể giải thích hay bôi màu vào đoạn cần sửa giúp mình được không.
Public Sub Tim()
Dim Vung, VungDo, I, J, K, kK, Kq, Gom, Tong
Set Vung = Range([A1], [A10000].End(xlUp))
VungDo = Range([F1], [F10000].End(xlUp)).Resize(, 17)
ReDim Kq(1 To Vung.Rows.Count, 1 To 2)
For I = 1 To Vung.Rows.Count
Gom = Vung(I) & " " & Vung(I).Offset(, 1) & " " & Vung(I).Offset(, 2)
kK = kK + 1
For J = I + 1 To UBound(VungDo, 1)
For K = 1 To UBound(VungDo, 2)
If InStr(Gom, VungDo(J, K)) Then Tong = Tong + 1
Next K
If Tong > 0 Then
Kq(kK, 1) = J - I: Kq(kK, 2) = Tong
Tong = 0: Exit For
End If
Next J
Next I
[X1:E1000].ClearContents
[Y1].Resize(kK, 2) = Kq
End Sub
Chỗ này:
Gom = Vung(I) & " " & Vung(I).Offset(, 1) & " " & Vung(I).Offset(, 2)
Thành thế này
Gom = Vung(I) & " " & Vung(I).Offset(, 1)
Thân
 
Upvote 0
Thanks bạn nhé. Mình đã hiểu được code của bạn rồi, nếu trong quá trình tìm hiểu có vấn đề gì phát sinh bạn lại giúp mình nhé.
 
Upvote 0
Chỗ này:

Thành thế này

Thân
Bạn ơi mình muốn thêm một chút trong bài này bạn giúp mình với.
Vẫn như bài cũ nhưng bây giờ NẾU X = 1 THÌ TIẾP TỤC SO SÁNH TIẾP VÀ CHO KẾT QUẢ RA Z và AA.
mình có gửi kèm VD luôn.
Bạn nào có nhã ý thì giúp mình luôn nhé.--=0
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Mình vẫn đang cần các bạn giúp đỡ.
 
Upvote 0
Bạn ơi mình muốn thêm một chút trong bài này bạn giúp mình với.
Vẫn như bài cũ nhưng bây giờ NẾU X = 1 THÌ TIẾP TỤC SO SÁNH TIẾP VÀ CHO KẾT QUẢ RA Z và AA.
mình có gửi kèm VD luôn.
Bạn nào có nhã ý thì giúp mình luôn nhé.--=0
Híc, bài này không phải thêm "một chút" mà là thêm "một đống chút", nó khác xa với bài cũ một trời một vực giống như màu da của Thầy Ndu & bà xã của Thầy í
Theo giải thích trong bài & nếu mình hiểu hông trật thì:
Kết quả hàng 1: 1, 1, 1, 1 giống của bạn ( 2 đứa ta cùng trúng)
Kết quả hàng 2: So sánh [A2:C2] & [F3:V3] có:
-----2 số 88 ==> giá trị trùng=1, số lần trùng=2
-----1 số 68 ==> giá trị trùng=1, số lần trùng=1
Cộng 2 em này lại mình ra 2, 3 ( rồi thoát) kết quả của bạn 1, 3, 2, 2, Vậy là sao ? mình hiểu sai chỗ nào ???? Híc, chắc mình trật
Kết quả hàng 3: của mình 2, 2 của bạn 6, 2 Số 6 đó ở đâu ra "zị" ???? Híc, chắc mình lại trật
Làm lại kết quả & giải thích thật rõ thì hy vọng có lời giải
Thân
.........
 
Upvote 0
Híc, bài này không phải thêm "một chút" mà là thêm "một đống chút", nó khác xa với bài cũ một trời một vực giống như màu da của Thầy Ndu & bà xã của Thầy í
Theo giải thích trong bài & nếu mình hiểu hông trật thì:
Kết quả hàng 1: 1, 1, 1, 1 giống của bạn ( 2 đứa ta cùng trúng)
Kết quả hàng 2: So sánh [A2:C2] & [F3:V3] có:
-----2 số 88 ==> giá trị trùng=1, số lần trùng=2
-----1 số 68 ==> giá trị trùng=1, số lần trùng=1
Cộng 2 em này lại mình ra 2, 3 ( rồi thoát) kết quả của bạn 1, 3, 2, 2, Vậy là sao ? mình hiểu sai chỗ nào ???? Híc, chắc mình trật
Kết quả hàng 3: của mình 2, 2 của bạn 6, 2 Số 6 đó ở đâu ra "zị" ???? Híc, chắc mình lại trật
Làm lại kết quả & giải thích thật rõ thì hy vọng có lời giải
Thân
.........
Thanks.
Mình xin đưa ra nguyên lý của nó như sau:
So sánh mảng A1:C1 với F2:V2 nếu có ít nhất 1 giá trị trùng( 67) thì cho KQ( =1) ra X1, tổng số lần trùng = 1( 67) ghi ra Y1
Nếu X=1 thì lại lấy mảng A1:C1 So sánh với F3:V3 nếu có ít nhất 1 giá trị trùng( 21) thì cho KQ( =1) ra Z1, tổng số lần trùng = 1( 21) ghi
ra AA1
Kết thúc 1 quá trình.[/TD]
Tiếp tục So sánh mảng A2:C2 với F3:V3 nếu có ít nhất 1 giá trị trùng thì cho KQ( =1) ra X2, tổng số lần trùng ghi ra Y2
Như VD trên là có 3 giá trị trùng( 88,88,68) thì cho KQ( =1) ra X2, tổng số lần trùng = 3 ghi ra Y2
Vì X2 = 1 ta lại lấy mảng À1:C2 So sánh với F4:V4, không có giá trị trùng, tiếp tục so sánh với F5:V5 có 2 giá trị trùng( 68,45) thì cho KQ( =2) ra Z2, tổng số lần trùng = 2 ra AA2 kết thúc quá trình ở đây.
Tiếp tục so sánh A3:C3 với F4:V4 ……. Cứ thế tiếp tục.

Hii chắc là hơi lủng củng một tý.
Hàng 2 Z=2 vì đến F5:V5 nó mới trùng, AA=2 vì có 68 và 45.
Mình đã giải quyết xong rồi, mình vẫn giữ code của bạn rồi thêm 1 đoạn IF X=1 thì tiếp với Z và AA.
Nếu được mình vẫn mong bạn làm, để mình tham khảo và học hỏi thêm code của bạn.
Thân.
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom