Tìm 2 dòng giống nhau (1 người xem)

Liên hệ QC

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

dodung210655

Thành viên mới
Tham gia
21/1/21
Bài viết
10
Được thích
2
Xin các anh chị, các bạn giúp tôi tìm 2 dòng giống nhau trong 1 file có hơn 1000 dòng. (Có thể giúp giải quyết bằng code trong VBA cũng được) Xin đính kèm file thí dụ như sau
 

File đính kèm

Trong file mới đính kèm, dòng 2 và dòng 7 là giống nhau
Mục đích của tôi là kiểm tra xem mình có nhập dữ liệu nào 2 lần không
Bài đã được tự động gộp:

Dạ đúng, nhưng từng dữ liệu 0 và 1 nằm ở từng cột khác nhau chứ không cùng 1 cột (thí dụ như cột O)
 
Lần chỉnh sửa cuối:
Dạ cột trong file mà bạn đính kèm để dùng hàm countif đó, chứ không phải file do tôi upload
Kể cả xem file bác ấy tôi cũng không hiểu nằm ở từng cột khác nhau là sao, bạn có thể đính kèm file thật cắt bớt nội dung được không
 
Kể cả xem file bác ấy tôi cũng không hiểu nằm ở từng cột khác nhau là sao, bạn có thể đính kèm file thật cắt bớt nội dung được không
Từng dữ liệu năm trong từng cell khác nhau, thí dụ: trong dòng 2: số 0 đầu tiên năm trong cell "C5", số 0 kế nằm ô "D5", .v.v..
Trong tập dử liệu thưc tế, mỗi dòng có đến 60 cột, và có đến hơn 1000 dòng
 
Từng dữ liệu năm trong từng cell khác nhau, thí dụ: trong dòng 2: số 0 đầu tiên năm trong cell "C5", số 0 kế nằm ô "D5", .v.v..
Trong tập dử liệu thưc tế, mỗi dòng có đến 60 cột, và có đến hơn 1000 dòng
Thì thế tôi mới nói bạn đưa file thật lên đây, 1000 dòng của bạn nếu thấy nhiều thì có thể đưa 20 dòng thôi, muốn làm VBA hay công thức gì thì file cũng phải rõ ràng chứ đâu thể mô tả như này mà làm được. Rồi thời gian đâu ngồi tạo file theo mô tả của bạn để làm cho bạn. Còn file giả lập thì 1 "nhưng" 2 "nhưng" bao giờ mới xong
 
Từng dữ liệu năm trong từng cell khác nhau, thí dụ: trong dòng 2: số 0 đầu tiên năm trong cell "C5", số 0 kế nằm ô "D5", .v.v..
Trong tập dử liệu thưc tế, mỗi dòng có đến 60 cột, và có đến hơn 1000 dòng
1/ Nếu không cần bí mật, anh cứ gửi file lên đây được không?
2/ Mong muốn của anh khi tìm ra dòng trùng nhau thì tô màu các dòng đó hay như thế nào, tả đi tả lại thế này em thấy không hiệu quả anh ạ.
 
Kể cả xem file bác ấy tôi cũng không hiểu nằm ở từng cột khác nhau là sao, bạn có thể đính kèm file thật cắt bớt nội dung được không
Dạ tôi xin gửi 12 dòng đầu của file thật
Nếu có 2 dòng giống nhau thì tô màu 2 dòng đó
 

File đính kèm

Cám ơn bạn nhiều.
Xin bạn chỉ dẩn tiếp cách thức để có được số liệu của cột "BL" và "BM" trong file "dê dê" mà bạn vừa upload.
Tôi cũng đã lớn tuổi, về hưu rồi, nhưng quá mê excel và VBA nên muốn học hỏi thêm. Nếu đã làm gì các bạn không được vui, xin vui lòng bỏ qua, thông cảm, tha thứ và tiếp tục giúp đỡ tôi thêm. Một lần nữa xin cám ơn các bạn thật nhiều.
 
Cám ơn bạn nhiều.
Xin bạn chỉ dẩn tiếp cách thức để có được số liệu của cột "BL" và "BM" trong file "dê dê" mà bạn vừa upload.
Tôi cũng đã lớn tuổi, về hưu rồi, nhưng quá mê excel và VBA nên muốn học hỏi thêm. Nếu đã làm gì các bạn không được vui, xin vui lòng bỏ qua, thông cảm, tha thứ và tiếp tục giúp đỡ tôi thêm. Một lần nữa xin cám ơn các bạn thật nhiều.
Vì đoạn này của bác mà làm em đau đầu đấy:
Dạ đúng, nhưng từng dữ liệu 0 và 1 nằm ở từng cột khác nhau chứ không cùng 1 cột (thí dụ như cột O)
Cuối cùng hiểu ra vấn đề là hình như bác đang tưởng chuỗi nhị phân đó là tự bác ấy (bác befaint) gõ ra. Nhưng thực ra không phải đâu nha, có công thức đó bác. Cứ nối từng ô lại với nhau (bằng dấu &) thì ra một chuỗi giống như dữ liệu từ 1 đến 60 của bác. Xong sau đó đếm nếu có 2 chuỗi như vậy thì tô màu vàng thôi ạ!
 
Vì đoạn này của bác mà làm em đau đầu đấy:

Cuối cùng hiểu ra vấn đề là hình như bác đang tưởng chuỗi nhị phân đó là tự bác ấy (bác befaint) gõ ra. Nhưng thực ra không phải đâu nha, có công thức đó bác. Cứ nối từng ô lại với nhau (bằng dấu &) thì ra một chuỗi giống như dữ liệu từ 1 đến 60 của bác. Xong sau đó đếm nếu có 2 chuỗi như vậy thì tô màu vàng thôi ạ!
Cám ơn các bạn thật nhiều. Bây giờ hơi tối rồi, sáng mai tôi sẽ ráng làm thử, có trục trặc gì thì niếu kéo các bạn nữa nha...
À, tôi ở San Jose, California, các bạn có thể gửi sách cho tôi được không?
 
Cám ơn bạn nhiều.
Xin bạn chỉ dẩn tiếp cách thức để có được số liệu của cột "BL" và "BM" trong file "dê dê" mà bạn vừa upload.
Tôi cũng đã lớn tuổi, về hưu rồi, nhưng quá mê excel và VBA nên muốn học hỏi thêm. Nếu đã làm gì các bạn không được vui, xin vui lòng bỏ qua, thông cảm, tha thứ và tiếp tục giúp đỡ tôi thêm. Một lần nữa xin cám ơn các bạn thật nhiều.
Lời thật mất lòng. Tôi cũng lớn tuổi như bạn.
Vấn đề không phải là bạn nói chuyện phật ý ai cả. Mà nó nằm ở chỗ bạn không quen giải thích bài toán của mình.

Giải thuật:
Thớt có 60 cột. Nếu tách ra 2 thì có 30 cột mỗi số. Như vậy nếu con toán tính bit thì vẫn còn dưới 15 chữ số.
Tôi sẽ dùng sumproduct trị tại ô nhân với 2 luỹ thừa (vị trí của ô - 1). Kết quả là một con số .
00101 sẽ là 0*2^0 + 0*2^1 + 1*2^2 + 0*2^3 + 1*2^4 = 20
Vì tách làm hai cho nên công thức phải tính hai lần. Tuy nhiên, hàm IF của Excel có khả năng shortcut cho nên nếu lần biểu thức thứ nhât khong đạt thì biểu thức thứ hai cũng không đạt.
Nếu dùng cột phụ thì cần hai cột phụ. Hoặc cộng hai số bằng cách so1 & "" & so2

Nghĩ tạm vậy thôi chứ thứ Bảy lười tính công thức quá. Chưa chắc nó đã khả thi.
 
Dạ tôi xin gửi 12 dòng đầu của file thật
Nếu có 2 dòng giống nhau thì tô màu 2 dòng đó
Bạn ngâm cứu thử code VBA
Mã:
Sub ABC()
  Dim Dic As Object, iKey As String
  Dim fRow As Long, eRow As Long, fCol As Long, eCol As Long
  Dim i As Long, j As Long, ik As Long

  fRow = 4 'Dong dau
  fCol = 4 'Cot dau
  Set Dic = CreateObject("scripting.dictionary")
  With Sheets("Exam2")
    eRow = .Range("D" & Rows.Count).End(xlUp).Row 'Dong cuoi
    eCol = .Range("BK3").Column 'Cot cuoi
    For i = fRow To eRow
      iKey = Empty
      For j = fCol To eCol
        iKey = iKey & .Cells(i, j)
      Next j
      If Dic.exists(iKey) = False Then
        Dic.Add iKey, i
      Else
        .Range(.Cells(i, fCol), .Cells(i, eCol)).Interior.ColorIndex = 27
        ik = Dic.Item(iKey)
        If ik > 0 Then
          .Range(.Cells(ik, fCol), .Cells(ik, eCol)).Interior.ColorIndex = 27
          Dic.Item(iKey) = 0 'Loai dong da to mau
        End If
      End If
    Next i
  End With
End Sub
 
Lời thật mất lòng. Tôi cũng lớn tuổi như bạn.
Vấn đề không phải là bạn nói chuyện phật ý ai cả. Mà nó nằm ở chỗ bạn không quen giải thích bài toán của mình.


Giải thuật:
Thớt có 60 cột. Nếu tách ra 2 thì có 30 cột mỗi số. Như vậy nếu con toán tính bit thì vẫn còn dưới 15 chữ số.
Tôi sẽ dùng sumproduct trị tại ô nhân với 2 luỹ thừa (vị trí của ô - 1). Kết quả là một con số .
00101 sẽ là 0*2^0 + 0*2^1 + 1*2^2 + 0*2^3 + 1*2^4 = 20
Vì tách làm hai cho nên công thức phải tính hai lần. Tuy nhiên, hàm IF của Excel có khả năng shortcut cho nên nếu lần biểu thức thứ nhât khong đạt thì biểu thức thứ hai cũng không đạt.
Nếu dùng cột phụ thì cần hai cột phụ. Hoặc cộng hai số bằng cách so1 & "" & so2

Nghĩ tạm vậy thôi chứ thứ Bảy lười tính công thức quá. Chưa chắc nó đã khả thi.
Ghép 2 Sumproduct thành 1 chuổi, Đếm theo cột phụ
BL4 =SUMPRODUCT(D4:AG4*2^($D$3:$AG$3-1))&"|"&SUMPRODUCT(AH4:BK4*2^($D$3:$AG$3-1))
Không rỏ dùng 2 hàm Sumproduct kèm lũy thừa với ghép 60 giá trị bằng "&" cái nào chạy nhanh hơn
 
...Không rỏ dùng 2 hàm Sumproduct kèm lũy thừa với ghép 60 giá trị bằng "&" cái nào chạy nhanh hơn
Không phải chạy nhanh chậm. Mà là nếu 2016 trở xuống thì không có hàm TextJoin để làm, Concatenate 60 ô cũng dài quá.
 
Không phải chạy nhanh chậm. Mà là nếu 2016 trở xuống thì không có hàm TextJoin để làm, Concatenate 60 ô cũng dài quá.
Làm vài thao tác
Nhập công thức vào ô BL4: =ADDRESS(4,COLUMN(D:BK),4)
Chọn ADDRESS(4,COLUMN(D:BK),4) nhấn F9
={"D4","E4","F4","G4","H4","I4","J4","K4","L4","M4","N4","O4","P4","Q4","R4","S4","T4","U4","V4","W4","X4","Y4","Z4","AA4","AB4","AC4","AD4","AE4","AF4","AG4","AH4","AI4","AJ4","AK4","AL4","AM4","AN4","AO4","AP4","AQ4","AR4","AS4","AT4","AU4","AV4","AW4","AX4","AY4","AZ4","BA4","BB4","BC4","BD4","BE4","BF4","BG4","BH4","BI4","BJ4","BK4"}
Xóa ={" "} , Enter
Chọn ô BL4, dùng công cụ Replace "," thành &
Thêm dấu = trước chuỗi
 

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

Back
Top Bottom