Xin giúp đỡ về tìm tập hợp các giá trị duy nhất. (1 người xem)

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

huuhien80

Thành viên chính thức
Tham gia
30/12/08
Bài viết
54
Được thích
8
Em có một bảng dữ liệu đính kèm.

Em muôn tìm tập hợp ít nhất các giá trị mà trong chuỗi giá trị đó dòng nào trong bảng cũng phải chứa ít nhất 1 giá trị trong tập hợp đó.

Em đã dùng cách gán số liệu cho từng giá trị và ... tạo vòng lặp nhưng nhiều vòng lặp quá khiến chạy rất lâu mà vẫn không khả thi.

Em đưa dữ liệu gốc lên đây. Mong các Thầy giúp đỡ...
 

File đính kèm

Em chuyển sang dạng dữ liệu số. Mong Các Thầy giúp đỡ.

Cảm ơn các Thầy nhiều.
 

File đính kèm

Upvote 0
Em có một bảng dữ liệu đính kèm.

Em muôn tìm tập hợp ít nhất các giá trị mà trong chuỗi giá trị đó dòng nào trong bảng cũng phải chứa ít nhất 1 giá trị trong tập hợp đó.

Em đã dùng cách gán số liệu cho từng giá trị và ... tạo vòng lặp nhưng nhiều vòng lặp quá khiến chạy rất lâu mà vẫn không khả thi.

Em đưa dữ liệu gốc lên đây. Mong các Thầy giúp đỡ...

thử với code này xem thế nào : ( với file dữ liệu bạn up bài #1, bài #2 tôi chưa xem )
Mã:
Sub GPE()
    Dim tmparr, Arr, item, tmp, ArrCount, index%, Count%
    Dim i&, j&, str$
        tmparr = [A3:F61]
        ReDim ArrCount(1 To 6): Count = UBound(tmparr, 1) : index = 1
        For i = 1 To 6
            ArrCount(i) = UBound(tmparr, 1)
        Next
        ReDim Arr(1 To UBound(tmparr, 1), 1 To 6)
        With CreateObject("scripting.dictionary")
            For i = 1 To UBound(tmparr, 1)
                For j = 1 To 6
                    tmp = Trim(CStr(tmparr(i, j)))
                    If Len(tmp) Then
                        If Not .exists(tmp) Then
                            .Add tmp, ""
                            Arr(i, j) = tmp
                        Else
                            ArrCount(j) = ArrCount(j) - 1
                            If ArrCount(j) < Count Then
                               Count = ArrCount(j): index = j
                            End If
                        End If
                    End If
                Next
              Next
        End With
        For j = 1 To UBound(Arr, 1)
            tmp = Arr(j, index)
            If Len(tmp) Then
                str = str & tmp & "-"
            End If
        Next
        MsgBox "Ket qua La :" & vbLf & Left(str, Len(str) - 1)
        'Range("I2").Resize(, 6) = ArrCount: MsgBox index
        'Range("i3").Resize(i - 1, 6) = Arr
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn anh đã xem giúp và trả lời sớm.
Code của anh chạy rất nhanh nhưng vẫn chưa chính xác. Code của anh cho ra tổng hợp 13 ký tự nhưng em làm phép tính thử thì 1 số dòng vẫn không có ký tự trong tổng hợp đó.

Anh xem lại giúp em với. Em đã nhập kết quả trong file.
Cảm ơn anh.
 

File đính kèm

Upvote 0
Cảm ơn anh đã xem giúp và trả lời sớm.
Code của anh chạy rất nhanh nhưng vẫn chưa chính xác. Code của anh cho ra tổng hợp 13 ký tự nhưng em làm phép tính thử thì 1 số dòng vẫn không có ký tự trong tổng hợp đó.

Anh xem lại giúp em với. Em đã nhập kết quả trong file.
Cảm ơn anh.

Vậy kết quả chính xác (theo dữ liệu trong file này) sẽ là gì?
 
Upvote 0
Mình tìm ra chuỗi như vầy, không chắc là chuỗi ngắn nhất:

e1 n1 c2 z2 d2 l2 o v2 j3 e3 x k3 j1 g t3 v3 u3 d1 r1 q1
 
Upvote 0
Em chuyển sang dạng dữ liệu số. Mong Các Thầy giúp đỡ.

Cảm ơn các Thầy nhiều.

tốc độ xe đam 50cc thôi,
kết quả 11 em
Mã:
p2,b3,f,d1,p1,x,j3,j2,v3,n1,v

Mã:
Sub SN_GPE_8()
Dim sarr As Variant, kq(), i, j, k, l As Long, dic As Object
   
  sarr = [A3:F61].Value
   Set dic = CreateObject("Scripting.Dictionary")
      
      For i = 1 To UBound(sarr)
        For j = 1 To UBound(sarr, 2)
           If Not dic.exists(sarr(i, j)) Then
               For k = 1 To UBound(sarr)
                    If Application.WorksheetFunction.CountIf([a3:f3].Offset(k - 1), sarr(i, j)) > 1 Then
                        l = l + 1
                        dic.Add sarr(i, j), ""
                        ReDim Preserve kq(1 To l)
                        kq(l) = sarr(i, j)
                    End If
                Next k
            End If
        Next j
    Next i
            
 If k Then [G3] = Join(kq, ",")
 Set dic = Nothing
End Sub
 
Upvote 0
Chuỗi vậy đưa vào thử cho từng dòng vẫn chưa thỏa mãn đk .

tốc độ xe đam 50cc thôi,
kết quả 11 em
Mã:
p2,b3,f,d1,p1,x,j3,j2,v3,n1,v

Chuỗi của bạn còn 23/59 dòng thiếu giá trị....


Mình tìm ra chuỗi như vầy, không chắc là chuỗi ngắn nhất:

e1 n1 c2 z2 d2 l2 o v2 j3 e3 x k3 j1 g t3 v3 u3 d1 r1 q1

Cảm ơn HYen17. Chuỗi trên đưa vào vẫn thiếu 2 dòng chưa có giá trị trong chuỗi.

Dù sao mình cũng rất cảm ơn. Đây là 1 bài toán khó mà mình đang đi tìm lời giải....
Cho mình xin code của bạn nhé.

Vậy kết quả chính xác (theo dữ liệu trong file này) sẽ là gì?

Cảm ơn Thầy đã xem bài viết. Em chưa biết kết quả, em dùng vòng lặp thì quá lâu nên post lên nhờ Thầy và các ACE giúp đỡ. Cảm ơn Thầy
 
Lần chỉnh sửa cuối:
Upvote 0
Chuỗi của bạn còn 23/59 dòng thiếu giá trị....




Cảm ơn HYen17. Chuỗi trên đưa vào vẫn thiếu 2 dòng chưa có giá trị trong chuỗi.

Dù sao mình cũng rất cảm ơn. Đây là 1 bài toán khó mà mình đang đi tìm lời giải....
Cho mình xin code của bạn nhé.



Cảm ơn Thầy đã xem bài viết. Em chưa biết kết quả, em dùng vòng lặp thì quá lâu nên post lên nhờ Thầy và các ACE giúp đỡ. Cảm ơn Thầy

chuổi của bác Hyen chỉ còn thiếu giá trị của dòng đầu tiên
có thể dùng cái hàm này để kiểm tra
Mã:
=SUMPRODUCT(COUNTIF(A3:F3,[COLOR=#0000ff]$J$5:$AC$5[/COLOR]))
với cái range màu xanh là cá ký tự của bác HYen
kéo xuống, thấy cái nào = zero là cái đó thiếu

p/s: sau khi đăng bài tôi cũng phát hiện thiếu, nhưng dò hoài ko biết nó sai ở đâu, thấy logic lắm rùi......hichic
 
Lần chỉnh sửa cuối:
Upvote 0
Mình cũng đang xem lại code của bạn! nhiều chỗ vẫn chưa hiểu lắm! Mình yếu nhất phần Scripting.Dictionary.
Chuỗi của Hyen17 ở dòng 14 cũng = 0 mà.
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn HYen17. Chuỗi trên đưa vào vẫn thiếu 2 dòng chưa có giá trị trong chuỗi.
Đây là 1 bài toán khó mà mình đang đi tìm lời giải....
Cho mình xin code của bạn nhé.

Bạn hãy cho biết đó là 2 dòng mang số bao nhiêu?
Cách làm là vầy, trước khi viết code:

Gán cho vùng dữ liệu 1 cái tên (VDL);
Bắt đầu từ cột [H] (chính xác là [H3]) ta dùng hàm COUNTIF() để tính có bao nhiêu trị trong ô [A3] tương ứng trong VDL;
Tại cột [O] ta tính trị cực đại của 6 ô ta vừa tính;
Copy & dán Values cột [O] này
Sửa lại công thức tại cột [H] cho đến cột [M] sao cho chỉ hiện chuỗi tương ứng với trị bên cột [O]

(Lúc này có 3 trường hợp sẩy ra; Trường hợp trong hàng chỉ có 1 ô (38 TH); Trường hợp trong hàng có 2 ô cùng giá trị cực đại là 18 hàng & cuối cùng là trường hợp trùng 3 là 03 trường hợp)

Trong 38 hàng đầu cũng có rất nhiều hàng trùng nhau, ta dùng câu lệnh macro loại các dữ liệu trùng này trong chuỗi MIN;
Duyệt với 18 hàng trùng 2 ta cần tiến hành kiểm xem trong 6 giá trị trong vùng từ cột [A] đến [F] đã có trong chuỗi MIN chưa; có rồi thì thoát; bằng chưa có thì lấy dữ liệu 1 trong 2 ô đó chép thêm vô chuỗi MIN

Làm như vậy tất nhiên vẫn chưa chặt chẽ là chuỗi ngắn nhất, nhưng nó sẽ chứa dữ liệu của tất cả các hàng.

Lý ra dữ liệu bạn nên viết hoa chữ cái; chứ như bạn hiện giờ thì "l" khó nhồm bỏ xừ!
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn hãy cho biết đó là 2 dòng mang số bao nhiêu?
Cách làm là vầy, trước khi viết code:

Gán cho vùng dữ liệu 1 cái tên (VDL);
Bắt đầu từ cột [H] (chính xác là [H3]) ta dùng hàm COUNTIF() để tính có bao nhiêu trị trong ô [A3] tương ứng trong VDL;
Tại cột [O] ta tính trị cực đại của 6 ô ta vừa tính;
Copy & dán Values cột [O] này
Sửa lại công thức tại cột [H] cho đến cột [M] sao cho chỉ hiện chuỗi tương ứng với trị bên cột [O]

(Lúc này có 3 trường hợp sẩy ra; Trường hợp trong hàng chỉ có 1 ô (38 TH); Trường hợp trong hàng có 2 ô cùng giá trị cực đại là 18 hàng & cuối cùng là trường hợp trùng 3 là 03 trường hợp)

Trong 38 hàng đầu cũng có rất nhiều hàng trùng nhau, ta dùng câu lệnh macro loại các dữ liệu trùng này trong chuỗi MIN;
Duyệt với 18 hàng trùng 2 ta cần tiến hành kiểm xem trong 6 giá trị trong vùng từ cột [A] đến [F] đã có trong chuỗi MIN chưa; có rồi thì thoát; bằng chưa có thì lấy dữ liệu 1 trong 2 ô đó chép thêm vô chuỗi MIN

Làm như vậy tất nhiên vẫn chưa chặt chẽ là chuỗi ngắn nhất, nhưng nó sẽ chứa dữ liệu của tất cả các hàng.

Lý ra dữ liệu bạn nên viết hoa chữ cái; chứ như bạn hiện giờ thì "l" khó nhồm bỏ xừ!

Cảm ơn Thầy, tất cả là chữ viết thường hết. Em đang thử cách của Thầy.
 
Upvote 0
Em làm theo cách của Thầy và chỉ làm đến được bước 2, còn phần code thì em vẫn chưa hiểu lắm ....
 
Upvote 0
Thầy làm ơn chia sẻ từng bước cách thực hiện được không ạ.

Chuỗi của Thầy là 19: "u1 r1 j1 c2 d2 z2 u3 x k3 g t3 l2 o v2 q1 j3 e3 e1 n1"

Em cảm ơn Thầy
 
Upvote 0
1./ Gán tên 'DuLieu' cho vùng dữ liệu (Xem trong file)
2./ Tại [H3] ta áp công thức =COUNTIF(DuLieu,A3) => KQ là 5
Tính tiếp cho 5 ô bên fải ô CT (công thức) này;
3./ Tại [O3] ta tìm MAX() của 6 ô CT này

4./ Copy xuống các hàng dưới;
5./ Biến cột [O] thành Values ( bằng cách copy & dán Value)
6./ Tại [L3] là ô có trị lớn nhất trong 6 ô CT cùng hàng ta sửa lại CT có dạng
=IF(COUNTIF(DuLieu,E3)=O3,E3,"")
Tất nhiên sau đó ta sửa lại hết công thức cho các ô ở hàng & cột khác
Để kết quả là chuỗi tương ứng với ô bên vùng dữ liệu đạt trị cực đại trong hàng;
Sau đó toàn bộ vùng công thức này cũng tiến hành làm như bước 5./ bên trên

(*) Công thức tại [Q] bạn tự tìm hiểu lấy.

Bước cuối: Xếp theo cột có tiêu để là 'N10' (tăng dần) & 'N8' là giảm dần

Sau đó cho chạy macro;

Các dòng lệnh trong macro rất ư là dễ tiếp thu với bạn mà, fải không?!


Chúc ngon giấc!
 
Upvote 0
1./ Gán tên 'DuLieu' cho vùng dữ liệu (Xem trong file)
2./ Tại [H3] ta áp công thức =COUNTIF(DuLieu,A3) => KQ là 5
Tính tiếp cho 5 ô bên fải ô CT (công thức) này;
3./ Tại [O3] ta tìm MAX() của 6 ô CT này

4./ Copy xuống các hàng dưới;
5./ Biến cột [O] thành Values ( bằng cách copy & dán Value)
6./ Tại [L3] là ô có trị lớn nhất trong 6 ô CT cùng hàng ta sửa lại CT có dạng
=IF(COUNTIF(DuLieu,E3)=O3,E3,"")
Tất nhiên sau đó ta sửa lại hết công thức cho các ô ở hàng & cột khác
Để kết quả là chuỗi tương ứng với ô bên vùng dữ liệu đạt trị cực đại trong hàng;
Sau đó toàn bộ vùng công thức này cũng tiến hành làm như bước 5./ bên trên

(*) Công thức tại [Q] bạn tự tìm hiểu lấy.

Bước cuối: Xếp theo cột có tiêu để là 'N10' (tăng dần) & 'N8' là giảm dần

Sau đó cho chạy macro;

Các dòng lệnh trong macro rất ư là dễ tiếp thu với bạn mà, fải không?!


Chúc ngon giấc!
Thanks So Much... Mình đang xem đá bóng .... ko trả lời được ngay! thông cảm...
 
Upvote 0
Em có một bảng dữ liệu đính kèm.

Em muôn tìm tập hợp ít nhất các giá trị mà trong chuỗi giá trị đó dòng nào trong bảng cũng phải chứa ít nhất 1 giá trị trong tập hợp đó.

Em đã dùng cách gán số liệu cho từng giá trị và ... tạo vòng lặp nhưng nhiều vòng lặp quá khiến chạy rất lâu mà vẫn không khả thi.

Em đưa dữ liệu gốc lên đây. Mong các Thầy giúp đỡ...

Bạn kiểm tra kết quả này xem thế nào r1-c3-d2-j1-n-e3-o-o1-x-x2-v2-v3-s3-n1 (14 phần tử )
Tính toán của tôi thấy là số phần tử nhỏ nhất đạt yêu cầu chỉ có thể bằng 14
------------------
có lẽ là còn khá nhiều nhóm, nhưng đều là 14 p.tử
r1-u1-j1-n-e3-s1-a3-o1-x-l2-v2-c-v3-s3
r1-u1-j1-n-e3-s1-a3-o1-x-f2-l2-v2-c-v3
r1-u1-d2-l-n-u3-z2-d1-f3-n2-b2-g-v3-s3
b3-u1-l-n-u3-l3-z2-h2-f3-y1-n2-b2-g-v3
r1-u1-d2-j1-t1-e3-a3-o1-x-j-f2-v2-c-v3
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn kiểm tra kết quả này xem thế nào r1-c3-d2-j1-n-e3-o-o1-x-x2-v2-v3-s3-n1 (14 phần tử )
Tính toán của tôi thấy là số phần tử nhỏ nhất đạt yêu cầu chỉ có thể bằng 14
------------------
có lẽ là còn khá nhiều nhóm, nhưng đều là 14 p.tử
r1-u1-j1-n-e3-s1-a3-o1-x-l2-v2-c-v3-s3
r1-u1-j1-n-e3-s1-a3-o1-x-f2-l2-v2-c-v3
r1-u1-d2-l-n-u3-z2-d1-f3-n2-b2-g-v3-s3
b3-u1-l-n-u3-l3-z2-h2-f3-y1-n2-b2-g-v3
r1-u1-d2-j1-t1-e3-a3-o1-x-j-f2-v2-c-v3


Mình thực hiện theo cách của HYen17 dữ liệu là 20. Cho mình xin PP của bạn nhé...
 
Lần chỉnh sửa cuối:
Upvote 0
Em có một bảng dữ liệu đính kèm.

Em muôn tìm tập hợp ít nhất các giá trị mà trong chuỗi giá trị đó dòng nào trong bảng cũng phải chứa ít nhất 1 giá trị trong tập hợp đó.

Em đã dùng cách gán số liệu cho từng giá trị và ... tạo vòng lặp nhưng nhiều vòng lặp quá khiến chạy rất lâu mà vẫn không khả thi.

Em đưa dữ liệu gốc lên đây. Mong các Thầy giúp đỡ...
Bạn test code sau coi sao
Mã:
Sub minc()
Dim a(), n(), s, g
Set s = Selection
t = s.Value
For Each cell In s
If cell <> "" Then If Application.Match(cell, Rows(cell.Row), 0) _
<> cell.Column Then cell.Value = ""
Next
For Each Row In s.Rows
If Application.CountA(Row) > 0 Then r = r + 1
Next
Do
m = Application.Max(Application.CountIf(s, s))
i = i + 1: ReDim Preserve a(1 To i)
For Each cell In s
If cell <> "" Then If Application.CountIf(s, cell) = m Then a(i) = cell: Exit For
Next
For Each cell In s
If cell = a(i) Then cell.EntireRow.Clear
Next
q = q + m
Loop Until q = r
s.Value = t
MsgBox "Chuoi nho nhat tim duoc la : " & Join(a)
End Sub
 
Upvote 0
Tổ hợp của bạn: 18 phần tử: j1 g k3 u1 b z2 t1 c p3 f2 y2 i1 v3 m3 a3 x1 r d3
đã thỏa mãn đk dòng cũng có ít nhất 1 phần tử. nhưng vẫn nhiều hơn của bạn Gtri

Mình rất cảm ơn bạn :)
 
Upvote 0
Bài này là loại toán đại số khó ăn. Nó dựa vào con toán Heuristic để tìm đường đi tối ưu (*). Tôi không có thì giờ nghiên cứu cách giải.
Nếu bạn đã có cách giải rồi thì đưa lý thuyết lên đây. Tôi sẽ mách cho cách code. Còn không thì chỉ có chính sách vét cạn.

(*) Bạn biết luật toán Heuristic rồi mà! đường đi tối ưu chỉ có nghĩa là kết quả "gần" tối ưu thôi, chứ không hề bảo đảm tối ưu.
 
Upvote 0
Bài này là loại toán đại số khó ăn. Nó dựa vào con toán Heuristic để tìm đường đi tối ưu (*). Tôi không có thì giờ nghiên cứu cách giải.
Nếu bạn đã có cách giải rồi thì đưa lý thuyết lên đây. Tôi sẽ mách cho cách code. Còn không thì chỉ có chính sách vét cạn.

(*) Bạn biết luật toán Heuristic rồi mà! đường đi tối ưu chỉ có nghĩa là kết quả "gần" tối ưu thôi, chứ không hề bảo đảm tối ưu.


Thật sự mình chưa có lời giải! Vì dữ liệu của mình nó đòi hỏi tìm như vậy nên mình mới đưa lên nhờ giúp, Mình muốn biết cách tìm để khi xử lý dữ liệu khác hoặc bổ sung thêm dữ liệu sẽ tự giải quyết được.

Khi tổ hợp ít phần tử thì chi phí cũng giảm theo tỷ lệ thuận! Chính vì vậy mình mới mong tìm được tổ hợp càng ít phần tử càng tốt.
 
Upvote 0
Mình tìm được chuỗi 16: j1-g-k3-u1-b-z2-v3-c2-l-f3-j3-r1-a1-l3-n2-p2
Thật sự không biết thế nào là tối ưu.
đảo vị trí cột thì được chuỗi 15:
l-g-r1-j1-u1-c2-z2-v3-f3-j-j3-a1-s1-l2-b
 
Lần chỉnh sửa cuối:
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
chưa chính xác, để coi lại đã


Của bạn là tìm max giá trị và xóa tất cả các row chứa giá trị đó. xong tìm max chỗ còn lại và tiếp tục xóa cho đến hết >>> như vậy có thể xóa đi cả những cái tối ưu hơn .... (Mình thử code của bạn với dữ liệu ít thì rất chính xác với mảng 6x10)

mấy hôm nay thực sự mình đầu tư nhiều thời gian vào mà vẫn không có kết quả. Vì không có ý tưởng thì không biết phát triển thế nào.
 
Upvote 0
1. Xóa trùng trong hàng.
2. Lọc các ký tự nhiều nhất >3 trở lên được XX ký tự.
3. Dùng vòng lặp (14 vòng lặp) để tìm theo đk 14 ký tự trong XX ký tự. >>> vẫn không ra 1 KQ nào.

Đấy vẫn chưa phải cách phù hợp cho bài này...

Mong mọi người giúp em....
 
Lần chỉnh sửa cuối:
Upvote 0
1. Xóa trùng trong hàng.
2. Lọc các ký tự nhiều nhất >3 trở lên được XX ký tự.
3. Dùng vòng lặp (14 vòng lặp) để tìm theo đk 14 ký tự trong XX ký tự. >>> vẫn không ra 1 KQ nào.

Đấy vẫn chưa phải cách phù hợp cho bài này...

Mong mọi người giúp em....

topic của bạn làm tôi mất cả mấy ngày mà vẫn không thể ra được kết quả tối ưu như của bạn Gtri.
tôi chỉ tìm được tập hợp 17 giá trị
có nhiều hơn một tập hợp như bạn Gtri nói, tuy thuộc vào giá trị đầu tiên mà nó lấy, nếu nó lấy giá trị khác, kết quả phía sau sẻ khác
========
thui làm tới đây thui, ko làm nữa, mất cả mấy ngày.hichic
ah, quên, bạn chạy module thu() nha
 

File đính kèm

Upvote 0
topic của bạn làm tôi mất cả mấy ngày mà vẫn không thể ra được kết quả tối ưu như của bạn Gtri.
tôi chỉ tìm được tập hợp 17 giá trị
có nhiều hơn một tập hợp như bạn Gtri nói, tuy thuộc vào giá trị đầu tiên mà nó lấy, nếu nó lấy giá trị khác, kết quả phía sau sẻ khác
========
thui làm tới đây thui, ko làm nữa, mất cả mấy ngày.hichic
ah, quên, bạn chạy module thu() nha

Mình đã liên lạc với bạn gtri nhưng bạn ý bảo PP của bạn ý không share Miễn phí. Vì vậy mình đã nghĩ topic này bị lãng quên rồi.

Cảm ơn bạn. rất nhiều. Từ hôm đó đến giờ mình cũng vẫn đau đầu vì chưa tìm ra cách.

Phải nói thật là bạn quá nhiệt tình....
 
Upvote 0
Phương pháp này em cũng đang tìm cách giải! vì rất cần thiết cho xử lý dữ liệu của phần mềm Thống kê xổ số Kiến thiết Thủ Đô của em.

Em đã nghĩ ra phương án ..... như thế này.

1. xóa các giá trị trùng trong cùng 1 dòng
2. tạo công thức đếm từng giá trị.
3. Xem các ký tự nào nhiều nhất >>> khi ghép với nhau tạo ra ít lần đi cùng nhau (Xen kẽ nhau chứ ko đi cùng 1 dòng)
4. Sau khi tìm đc 50-60% số dòng thì bắt đầu tạo vòng lặp cho 40% số dòng còn lại (lúc đó số vòng lặp sẽ rất ít)

Bác gtri có thể chia sẻ (hoặc bán) cho em phương pháp không ạ! Em đã inbox cho bác mà không thấy hồi âm.
 
Upvote 0
Em đã nghĩ ra phương án ..... như thế này.

1. xóa các giá trị trùng trong cùng 1 dòng
2. tạo công thức đếm từng giá trị.
3. Xem các ký tự nào nhiều nhất >>> khi ghép với nhau tạo ra ít lần đi cùng nhau (Xen kẽ nhau chứ ko đi cùng 1 dòng)
4. Sau khi tìm đc 50-60% số dòng thì bắt đầu tạo vòng lặp cho 40% số dòng còn lại (lúc đó số vòng lặp sẽ rất ít)

Bác gtri có thể chia sẻ (hoặc bán) cho em phương pháp không ạ! Em đã inbox cho bác mà không thấy hồi âm.

Chả hiểu đang nói cái gì nữa
 
Upvote 0
Nếu dùng SQL thì câu lệnh rất đơn giản.

SELECT DISTINCT [TÊN CỘT DỮ LIỆU] FROM [TÊN VÙNG DỮ LIỆU]
 
Upvote 0

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

Back
Top Bottom