Xac định trùng lặp (1 người xem)

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

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

qv7tb

Sâu phải đào
Tham gia
11/1/12
Bài viết
153
Được thích
6
Nghề nghiệp
kỹ sư điện
bài toán của xác định trùng lặp cặp số (ví dụ cặp số 01,10 hoặc 12,21 là 1 cặp số).
B1: Xác định các cặp số và sự trùng lặp (ví dụ: 12,21,12,12,21 là 5 lần lặp của cặp số 12,21) và tô màu sự có mặt của cặp số 12,21.
B2: Đưa ra cặp số có số lần lặp lớn nhất (gọi cặp max). sắp xếp số lần cặp max thứ tự từ trên xuống dưới.
trong file em có minh họa rồi. Các bác và a/e đọc và nghiên cứu cho em cái code VBA.
Chân thành cảm ơn a/e forum GPE!
 

File đính kèm

Bạn xem trong file kèm theo

{ctrl}+{shift}+r


-\\/. -\\/. -\\/.
 

File đính kèm

Upvote 0
em chỉ cần số lần lặp lớn hơn 4,5 lần thôi bác cho em nhiều quá. hjhj. Rất cảm ơn bác nha.
 
Upvote 0
Sau 1 hồi ngẫm nghỉ, đúng là giải thuật còn thiêu thiếu cái gì đó. . . . .

& mình fát hiện ra rằng, giải thuật chưa khảo sát các số không có cặp,
đó là 00; 11; 22; . . . . .

Để khảo sát cả các chữ số này, chúng ta cần dùng amcro sau để thay cho macro trong file:

Mã:
Option Explicit
Dim Rng As Range, sRng As Range, mRg As Range
Dim MyAdd As String, sNum As String, Tmp As Byte

[B]Sub GPE()[/B]
 Dim jJ As Long, Ww As Long:                        Dim Cap As String
 
 Set Rng = [b1].CurrentRegion
 Rng.Interior.ColorIndex = 0
 [k2].CurrentRegion.Offset(1).Clear
 For jJ = 0 To 9
    For Ww = 9 To jJ Step -1     '*' + 1
        Cap = CStr(jJ) & CStr(Ww) & "," & CStr(Ww) & CStr(jJ)
        
        [M999].End(xlUp).Offset(1).Value = Cap
        
        Lap CStr(jJ) & CStr(Ww)
        If Ww > jJ Then _
            Lap CStr(Ww) & CStr(jJ)
        If Tmp > 4 Then
            With [K999].End(xlUp).Offset(1)
                .Value = Cap
                .Offset(, 1).Value = Tmp
                .Resize(, 2).Interior.ColorIndex = 34 + (jJ + Ww Mod 10)
            End With
            mRg.Interior.ColorIndex = 34 + (jJ + Ww Mod 10)
        End If
        Set mRg = Nothing:                          Tmp = 0
    Next Ww
 Next jJ
 Columns("K:L").Sort Key1:=Range("L2"), Order1:=xlDescending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
 Set Rng = Nothing:                                 Randomize
 [l1].Interior.ColorIndex = 34 + Rnd() * 9 \ 1
 Set sRng = Nothing
[B]End Sub[/B]

[thongbao]Riêng macro thứ hai chưa cần thay[/thongbao]
 
Lần chỉnh sửa cuối:
Upvote 0
bác coi qua, chạy file này xem em chạy rồi, không thấy tô màu và báo max theo cột như ví dụ minh họa. thanks bác
 

File đính kèm

Upvote 0
Bác SA_DQ ơi vấn đề j vâỵ? em không hiểu.
 
Upvote 0
bác coi qua, chạy file này xem em chạy rồi, không thấy tô màu và báo max theo cột như ví dụ minh họa. thanks bác
Đúng là chép số liệu vùng cần khảo sát từ trang tính của bạn sang trang tính của mình & chạy macro thì không có kết quả;

Nhưng mình xóa đi vài số trùng, như co0n số 10 & nhập lại từ bàn fím của mình thì lại ra kết quả.

??? (chuyện này kể cũng lạ) Bạn thử xem ra sao
 
Upvote 0
Em cũng làm theo lời bác cũng nhận lệnh vậy chỉ cho danh sách max không cho ra max cụ thể. Lạ thật. Bác bảng tính đó có bị giới hạn không. có phải chỉnh sửa gì không. Bác cố gắng tìm giúp lỗi và khắc phục dùm em.
Thanks bác!
 
Upvote 0
Kể cũng kì lạ & chỉ gặp như vầy hiếm lần

Mình gởi lên file mình đang thử nghiệm;
Trong file, số liệu là mình chép từ trang tính của bạn;
Sau khi chép thì macro cũng không cho kết quả nào.

Sau đó mình nhập lại từ bàn fím 1 số số thì việc thống kế các số đó có ngay hiệu ứng.

Điều này mình nghe nói loáng thoáng là do fần mềm khác tạo ra & chàng window nhà ta không nhận biết được các số tượng hình đó.

Mình gởi file người thật việc thực cho bạn tự chiêm nghiệm:

Bạn thử nhập thay các số 80 hay 50 trên vùng số liệu (từ bàn fím của bạn nha) & cho chạy macro xem sao.

. . . . . . & chờ thông tin từ bạn!
 

File đính kèm

Upvote 0
máy em chạy win 7. nhưng thử đi, thử lại rồi cũng không thay đổi là mấy bác SA_DQ ah!. Em vào diễn đàn mình có tìm được một bài viết cũng gần giống như vậy như code đó chỉ chạy được 1 chiều, 2 chiều bị lỗi ngay. bác SA_DQ và a/e forum GPE cao thủ tham khảo và cho em cái code hoàn hảo.
link: http://www.giaiphapexcel.com/forum/...theo-điều-kiện&p=450681&highlight=#post450681
Thanks forum GPE!
 
Upvote 0
máy em chạy win 7. nhưng thử đi, thử lại rồi cũng không thay đổi là mấy bác SA_DQ ah!. Em vào diễn đàn mình có tìm được một bài viết cũng gần giống như vậy như code đó chỉ chạy được 1 chiều, 2 chiều bị lỗi ngay. bác SA_DQ và a/e forum GPE cao thủ tham khảo và cho em cái code hoàn hảo.
link: http://www.giaiphapexcel.com/forum/...theo-điều-kiện&p=450681&highlight=#post450681
Thanks forum GPE!
Thứ 7, trong khi chờ đi "tạc lon", thử làm xem sao
Bấm Ctrl + W xuất hiện bảng, nhập vào số muốn tìm số lần lặp nhiều hơn, trong yêu cầu của bài thì bạn quánh số 5 dzô, enter rồi kiểm tra, trật ráng chịu
Các cell dữ liệu của bạn có một em char(160) ở cuối, chưa biết dữ liệu thật ra sao nên chạy hay không chỉ có..... Trời mới biết. Híc
Khi nào có dữ liệu thật chính xác thì sửa code cho........đẹp tí tẹo
Thân
 

File đính kèm

Upvote 0
Bác Concogia vào giúp em sao? bác thử với file max đó là file thức tế cần giải quyết nhưng cũng file vậy tại sao cặp 34,43 chỉ xuất hiện 1 lần 34 và 4 lần 43 dư 3 lần 34 bên cạnh file đây bác kiểm tra lại giúp em.
Thanks forum GPE!
 

File đính kèm

Upvote 0
Bác Concogia vào giúp em sao? bác thử với file max đó là file thức tế cần giải quyết nhưng cũng file vậy tại sao cặp 34,43 chỉ xuất hiện 1 lần 34 và 4 lần 43 dư 3 lần 34 bên cạnh file đây bác kiểm tra lại giúp em.
Thanks forum GPE!
1)- Vậy, với cặp 34,43 bạn muốn đếm là mấy ??? Mình làm theo ví dụ ở bài 1 của bạn thì nó đếm là 5 ( vì có 4 thằng 43 & 1 em 34 )
Ví dụ của bạn ở bài #1
B1: xác định cặp 12,21 có số lần lặp (12,21,12,12,21 được gọi là 5 lần lặp) tô màu xác định
2)- Thật ra còn có cái chưa hiểu- thí dụ số 15 xuất hiện 10 lần nhưng không có số 51 thì vẫn không đếm ???
Nếu có 1 số 51 thì đếm mấy ????
Nói chung là mấy bài dạng này khó hiểu quá, mà hổng hiểu thì làm sao mà viết cho đúng hả Trời. Híc
Thân
Hihi, nhìn lại rồi, để xem sao
Dữ liệu của bạn có một cột trống ( cột C ) làm code chạy sai vì không xác định được vùng dữ liệu
Đưa dữ liệu thật, cấu trúc dữ liệu & yêu cầu thật rõ lên lần nữa đi bạn
 
Lần chỉnh sửa cuối:
Upvote 0
Bài toán này chỉ cần đếm cặp số max thì có trường hợp sau:
Một: Có cả cặp tổng cặp đó lớn nhất (ví dụ : 15,51,15,15,15,1,5 có 6 lần xuất hiện cặp 15,51. 16,16,16,16,16,16,16,16 như vậy có 8 lần xuất hiện cặp 16,61) bác ah!
Hai: Báo max, tô màu những cặp có số lần xuất hiện lớn hơn 5 lần.(như ví dụ minh họa) tất cả file trên là file chạy thực em đã đưa lên.(dường như bị hạn chế vùng dữ liệu, nên khi chạy code trên)
Thanks các bác và a/e forum GPE nhiệt tình tham gia giúp đỡ!
 
Upvote 0
Bài toán này chỉ cần đếm cặp số max thì có trường hợp sau:
Một: Có cả cặp tổng cặp đó lớn nhất (ví dụ : 15,51,15,15,15,1,5 có 6 lần xuất hiện cặp 15,51. 16,16,16,16,16,16,16,16 như vậy có 8 lần xuất hiện cặp 16,61) bác ah!
Hai: Báo max, tô màu những cặp có số lần xuất hiện lớn hơn 5 lần.(như ví dụ minh họa) tất cả file trên là file chạy thực em đã đưa lên.(dường như bị hạn chế vùng dữ liệu, nên khi chạy code trên)
Thanks các bác và a/e forum GPE nhiệt tình tham gia giúp đỡ!

Xem file thử được chưa? yêu cầu rắc rối thật!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Rất cảm ơn bác và mọi người quan tâm giúp đỡ nhiều!
 
Upvote 0
Web KT

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

Back
Top Bottom