Đỗ Xuân Huy
Đỗ Xuân Huy
Thảo luận 11 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 116 lượt xem

Ở phần code biện luận tránh nhập dữ liệu trùng mình có thử đoạn code

Ở phần code biện luận tránh nhập dữ liệu trùng, mình có thử đoạn code này nhưng bị báo lỗi "Runtime error 13 - type mismatch". Vậy sửa làm sao ạ? Cám ơn

Dim j As Long
For j = 1 To dongcuoi_wbKQ
If WorksheetFunction.CountIf(wb_KQ.Sheets(2).Range("A1:BM" & j), Range("A" & j & ":BM" & j).Value) = 2 Then
MsgBox "Du lieu da bi trung"
End If
Next j
Thảo luận 11 câu trả lời
Lượt xem 116 lượt xem
Vỗ tay vỗ tay
Tuấn Ba [Chuyên gia] 04:05 - May 28, 2020
Chào bạn bạn thử xem nhé.
Option Explicit
Sub testtrung()
Dim dc As Long, i As Long, kieu As Integer
dc = Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp).Row
kieu = Application.WorksheetFunction.CountIf(Sheet1.Range("A1:A" & dc), Range("B1").Value)
If (kieu >= 1) Then
MsgBox "trung"
End If
End Sub
Vỗ tay vỗ tay
Đỗ Xuân Huy 04:05 - May 28, 2020
Nếu để Range B1 thì chỉ có thể xét theo 1 tiêu chí thôi( tên hoặc ngày tháng gì đó...). Nhưng ở đây để kiểm tra 1 dòng có bị trùng hay ko thì chắc phải để 2 tiêu chí trở lên chứ nhỉ? Vậy thay vì Range("B1").value thì có thể thay bằng Range("A" & j & ":BM" & j) ko? (j chạy từ 1 đến dc)
Vỗ tay vỗ tay
Tuấn Ba [Chuyên gia] 05:05 - May 28, 2020
chào bạn bạn có thể dùng coutifs nhé, cấu trúc bạn so sánh sử dụng cách đó.
Vỗ tay vỗ tay
Đỗ Xuân Huy 05:05 - May 28, 2020
Cám ơn anh rất nhiều
Vỗ tay vỗ tay
Dương Mạnh Quân [Chuyên gia] 05:05 - May 28, 2020
Bạn có thể dùng qua WorksheetFunction.CountifS để kiểm tra theo nhiều điều kiện.
Nếu xét nhiều cột (mà ngại viết COUNTIFS) thì bạn phải gán biến vòng lặp theo số cột mới đúng. ở trên bạn đang gán theo số dòng là chưa chính xác.
Biến số cột thì phải viết Range theo dạng Range(Cells(x1, y1), Cells(x2, y2)) trong đó x1, x2 là biến về số dòng, y1,y2 là biến về số cột.
Và dữ liệu trùng được hiểu là >0 đã là trùng rồi (chứ không phải =2 như ở trên)
hoặc >=1 như cách của thầy Tuấn Ba.
Vỗ tay vỗ tay
Đỗ Hoàng Phúc 11:08 - Aug 19, 2020

cho mình xin code rõ chỗ này với

Vỗ tay vỗ tay
Dương Mạnh Quân [Chuyên gia] 16:08 - Aug 19, 2020

Bạn vui lòng gửi kèm file để được hỗ trợ code đầy đủ, vì để viết code đúng cần xét trong 1 hoàn cảnh cụ thể. Do chưa có file nên mình chỉ hướng dẫn mang tính lý thuyết thôi.

Vỗ tay vỗ tay
Đỗ Hoàng Phúc 17:08 - Aug 20, 2020

https://drive.google.com/file/d/1Zx09...

vất vả hơn đã tưởng

Vỗ tay vỗ tay
Tuấn Ba [Chuyên gia] 17:08 - Aug 20, 2020

Chào bạn với phần test trùng của bạn có thể cùng cách này 

Sub testtrung()

Dim dc As Long, i As Long, kieu As Integer

dc = Sheet6.Range("A" & Sheet6.Rows.Count).End(xlUp).Row

kieu = Application.WorksheetFunction.CountIf(Sheet6.Range("A6:A" & dc), 1)

If (kieu >= 1) Then

MsgBox "trung"

End If

End Sub

với 1 bạn có thể thay bằng 1 ô

Vỗ tay vỗ tay
Đỗ Hoàng Phúc 20:08 - Aug 20, 2020

Như bạn trên có thắc mắc là dùng hàm Countifs mới đúng chứ, để xét có trùng dòng thì phải so sánh 2, 3 cột. Mình chưa hiểu công thức Countif như bạn chỉ là đang muốn xác định gì. Số 1 có thể thay băng 1 ô cố định ??

Vỗ tay vỗ tay
Tuấn Ba [Chuyên gia] 22:08 - Aug 20, 2020

chào bạn bạn đã thử hàm countif ngoài excel chưa?

Vỗ tay vỗ tay
Câu hỏi liên quan
@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội