Tìm 2 dòng giống nhau

Liên hệ QC
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 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
 
Web KT
Back
Top Bottom