Code so sánh 2 dãy số trung nhau năm 2024

Các dạng hàng thống kê trên Excel đều là những hàm cơ bản trên Excel, như hàm COUNTIF chẳng hạn. Hàm COUNTIF dùng để đếm ô thõa mãn điều kiện nào đó trong phạm vi vùng điều kiện chỉ ra. Với hàm COUNTIF, người dùng có thể so sánh dữ liệu giữa 2 cột để tìm ra những dữ liệu khác nhau. Bài viết dưới đây sẽ hướng dẫn bạn cách so sánh dữ liệu giữa 2 cột bằng hàm COUNTIF.

  • Cách kết hợp hàm Sumif và hàm Vlookup trên Excel
  • Cách tự động hiện tên khi nhập mã trong Excel
  • Cách sử dụng hàm Vlookup trong Excel

Hướng dẫn dùng hàm COUNTIF Excel

Chẳng hạn chúng ta có danh sách nhập hàng treenn Excel như dưới đây.

Code so sánh 2 dãy số trung nhau năm 2024

Bước 1:

Đầu tiên bạn bôi đen các dữ liệu ở cột 1 (Tổng kết 1), bỏ phần tiêu đề rồi đặt trỏ chuột tại ô Name Box ở bên trên để viết bất kỳ tên nào không dấu, viết liền như hình rồi nhấn Enter.

Code so sánh 2 dãy số trung nhau năm 2024

Bước 2:

Tiếp tục thực hiện như trên với cột 2 (Tổng kết 2) còn lại.

Code so sánh 2 dãy số trung nhau năm 2024

Bước 3:

Tại cột ở giữa 2 cột dữ liệu, click chuột tại ô trông ở phía trên rồi nhập công thức =COUNTIF(danhsach2,A5) và nhấn Enter. Chúng ta sẽ bắt đầu so sánh dữ liệu của cột danhsach1 với cột danhsach2, bắt đầu từ ô A5 của danhsach1.

Lưu ý tùy vào từng bản Excel mà chúng ta sử dụng dấu ; hoặc dấu , trong công thức. Nếu báo lỗi khi nhập hãy đổi lại dấu.

Code so sánh 2 dãy số trung nhau năm 2024

Bước 4:

Kết quả sẽ ra 1 như hình dưới đây. Nghĩa là sẽ có 1 dữ liệu Vải thô trùng với bên cột 2.

Code so sánh 2 dãy số trung nhau năm 2024

Kéo xuống bên dưới chúng ta sẽ được kết quả hoàn chỉnh, với việc so sánh dữ liệu ở cột 1 với cột 2. Số 1 sẽ là giá trị trùng nhau, chẳng hạn có Vải bò tại cột 1 và cột 2. Số 0 là giá trị không trùng nhau, chỉ có Vải ren ở cột 1 mà không có ở cột 2.

Code so sánh 2 dãy số trung nhau năm 2024

Bước 5:

Tiếp đến click chuột vào phần Name box rồi nhấn vào biểu tượng tam giác và chọn danhsach1.

Code so sánh 2 dãy số trung nhau năm 2024

Nhấn vào mục Conditional Formatting rồi chọn tiếp New Rule.… trong danh sách xổ xuống.

Code so sánh 2 dãy số trung nhau năm 2024

Bước 6:

Hiển thị hộp thoại mới New Format Rule, bạn click vào Use a formula to determine which cells to format.

Code so sánh 2 dãy số trung nhau năm 2024

Tại khung bên dưới chúng ta nhập công thức =COUNTIF(danhsach2,A5)=0. Nghĩa là bạn sẽ tìm các ô có giá trị bằng 0 trong danh sách 1. Tiếp tục nhấn vào nút Format.

Code so sánh 2 dãy số trung nhau năm 2024

Tại hộp thoại Format Cells bạn kích chọn tab Fill rồi chọn màu sắc để nhận diện, nhấn OK.

Code so sánh 2 dãy số trung nhau năm 2024

Trong phần Preview chúng ta sẽ nhìn thấy chữ được tô màu mà bạn đã chọn, nhấn OK.

Code so sánh 2 dãy số trung nhau năm 2024

Kết quả những các giá trị trong cột 1 không có ở cột 2 sẽ được đánh dấu như hình.

Code so sánh 2 dãy số trung nhau năm 2024

Bước 7:

Với danh sách thứ 2 người dùng cũng click chuột vào ô Name box chọn danhsach 2. Sau đó cũng nhấn vào Conditional Formatting và chọn New Rule…

Code so sánh 2 dãy số trung nhau năm 2024

Tiếp đến chúng ta nhập công thức =COUNTIF(danhsach1,C5)=0 để tìm giá trị bằng 0 ở cột thứ 2 rồi chọn màu và nhấn OK.

Code so sánh 2 dãy số trung nhau năm 2024

Kết quả sẽ được bảng như hình dưới đây. Những dữ liệu không giống nhau ở cả 2 bảng sẽ đều được tô màu nhận biết để dễ dàng trong việc thống kê, kiểm kê số liệu.

Code so sánh 2 dãy số trung nhau năm 2024

Như vậy với hàm COUNTIF trên Excel chúng ta sẽ biết được số lượng các dữ liệu giống nhau khi so sánh giữa 2 cột. Những dữ liệu không trùng khợp sẽ được đánh dấu trong tài liệu.

Nếu bây giờ xử lý code cho bạn thì tôi biết nhiều người làm được nhưng đó chỉ là giải pháp mì ăn liền thôi, để phát triển ứng dụng thêm nữa thì sau này chết chắc đó.

  • 3

    Các bác ơi, cho em hỏi với ạ, bây giờ e có 2 sheet: - Sheet1 là dữ liệu phát sinh, trong này tên khách hàng sẽ bị trùng nhau do từng lần phát sinh mua hàng - Sheet4 là danh sách tên khách hàng Mong muốn: Bây giờ em muốn xử lý sheet1 để thành 1 mảng không trùng tên khách hàng và so sánh với sheet4. Sau khi so sánh với sheet4 tên khách hàng nào sheet1 và sheet4 trùng nhau thì cho phép in còn không có thì bỏ qua. Các bác giúp em với ạ, em cảm ơn! Lưu ý: Trong file em gửi ở dưới đây em đang viết code ở module1 và tên sub là "In_hang_loat" ạ.

Tôi lấy được danh sách những khách hàng trùng trong list khách hàng

Các bác ơi, cho em hỏi với ạ, bây giờ e có 2 sheet: - Sheet1 là dữ liệu phát sinh, trong này tên khách hàng sẽ bị trùng nhau do từng lần phát sinh mua hàng - Sheet4 là danh sách tên khách hàng Mong muốn: Bây giờ em muốn xử lý sheet1 để thành 1 mảng không trùng tên khách hàng và so sánh với sheet4. Sau khi so sánh với sheet4 tên khách hàng nào sheet1 và sheet4 trùng nhau thì cho phép in còn không có thì bỏ qua. Các bác giúp em với ạ, em cảm ơn! Lưu ý: Trong file em gửi ở dưới đây em đang viết code ở module1 và tên sub là "In_hang_loat" ạ.

Theo ý hiểu tôi đã lấy ra những khách hàng trùng trong list DM_KH và đưa nó vào ô C1 trong Sheets("CHI_TIET_131") còn phần in bạn làm đi nhé

C:

Sub locKhachhang()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
  Dim Dic As Object: Set Dic = CreateObject("Scripting.dictionary")
  Dim ArrData(), ArrKH(), ArrKHPrint()
  Dim i As Long, sKey
    With ThisWorkbook.Sheets("Data")
        ArrData = .Range("E2:E" & .Range("E" & Rows.Count).End(3).Row).Value
          For i = 1 To UBound(ArrData())
              If ArrData(i, 1) <> "" Then
                  sKey = ArrData(i, 1)
                    If Not Dic.exists(sKey) Then
                         Dic.Add sKey, ""
                    End If
              End If
          Next
    End With
    With ThisWorkbook.Sheets("DM_KH")
      ArrKH = .Range("B3:B" & .Range("B" & Rows.Count).End(3).Row).Value
      ReDim ArrKHPrint(1 To UBound(ArrKH, 1), 1 To 1)
        For k = 1 To UBound(ArrKH())
            If Dic.exists(ArrKH(k, 1)) Then
                m = m + 1
               ArrKHPrint(m, 1) = ArrKH(k, 1)
            End If
        Next
    End With
    With Sheet2
        For o = LBound(ArrKHPrint, 1) To UBound(ArrKHPrint, 1)
          .[C1].Value = ArrKHPrint(o, 1)    ' -------------->>>>>>>>>>>>>>>> Lay du lieu khach hang TRUng` trong List DM_KH
        Next
    End With
  Application.Calculation = xlCalculationAutomatic
  Application.ScreenUpdating = True
  'viec tiep theo in thi` ban tu lam di nhe
End Sub

Code so sánh 2 dãy số trung nhau năm 2024

  • 4

    Sửa lại dữ liệu cho chuẩn hoá đi bạn rồi mới tính tới viết code xử lý. Mở cái DM_KH của bạn lên là thấy xong rồi. Mã KH mà bạn dùng luôn nguyên cái tên dài sọc với số lượng ký tự không đồng nhất, dấu tiếng Việt, ký tự đặc biệt (dấu gạch nối "-": trong truy vấn sẽ bị hiểu thành dấu trừ). Mã KH bạn "phải" thiết kế giống dạng mã số chứng từ đang có trong file bạn đó: BH14509. Bạn tham khảo code tạo mã của bác SA_DQ đó. - Không dấu - Không khoảng trắng - Cố định số ký tự.
Nếu bây giờ xử lý code cho bạn thì tôi biết nhiều người làm được nhưng đó chỉ là giải pháp mì ăn liền thôi, để phát triển ứng dụng thêm nữa thì sau này chết chắc đó.

Em cũng tính là sẽ tạo lại mã khách hàng mà do em lười tạo lại userform nên để thế luôn, sau khi bác nói chắc em phải tạo lại ngay :3

Code so sánh 2 dãy số trung nhau năm 2024

  • 5

    Tôi lấy được danh sách những khách hàng trùng trong list khách hàng

Theo ý hiểu tôi đã lấy ra những khách hàng trùng trong list DM_KH và đưa nó vào ô C1 trong Sheets("CHI_TIET_131") còn phần in bạn làm đi nhé

C:

Sub locKhachhang() Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Dim Dic As Object: Set Dic = CreateObject("Scripting.dictionary") Dim ArrData(), ArrKH(), ArrKHPrint() Dim i As Long, sKey With ThisWorkbook.Sheets("Data") ArrData = .Range("E2:E" & .Range("E" & Rows.Count).End(3).Row).Value For i = 1 To UBound(ArrData()) If ArrData(i, 1) <> "" Then sKey = ArrData(i, 1) If Not Dic.exists(sKey) Then Dic.Add sKey, "" End If End If Next End With With ThisWorkbook.Sheets("DM_KH") ArrKH = .Range("B3:B" & .Range("B" & Rows.Count).End(3).Row).Value ReDim ArrKHPrint(1 To UBound(ArrKH, 1), 1 To 1) For k = 1 To UBound(ArrKH()) If Dic.exists(ArrKH(k, 1)) Then m = m + 1 ArrKHPrint(m, 1) = ArrKH(k, 1) End If Next End With With Sheet2 For o = LBound(ArrKHPrint, 1) To UBound(ArrKHPrint, 1) .[C1].Value = ArrKHPrint(o, 1) ' -->>>>>>>>>>>>>>>> Lay du lieu khach hang TRUng trong List DM_KH Next End With Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True 'viec tiep theo in thi` ban tu lam di nhe End Sub `

bác cho em hỏi 1 chút ạ, vì phần dictionary em chưa có tìm hiểu, mà em thấy code bác viết vậy nên em đoán 1 sub chỉ chứa 1 dictionary đúng không ạ?

Code so sánh 2 dãy số trung nhau năm 2024

  • 6

Em cũng tính là sẽ tạo lại mã khách hàng mà do em lười tạo lại userform nên để thế luôn, sau khi bác nói chắc em phải tạo lại ngay :3