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.

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.

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.

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.

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.

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.

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.

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

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.

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.

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.

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.

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.

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…

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.

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.

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

  • 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

  • 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 ạ?

  • 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

Chủ Đề