Msgbox hiển thị số dòng thoả mãn CF

Liên hệ QC

Đình Phán

Thành viên thường trực
Tham gia
23/11/10
Bài viết
232
Được thích
68
Giới tính
Nam
Nghề nghiệp
kt
Chào ACE GPE,

Hiện em đang có 1 file dữ liệu đầu vào để import, nhưng thay vì để Phần mềm phát hiện lỗi, em muốn file excel của mình phát hiện lỗi trước. Em có dùng CF để tìm ra những dòng lỗi, công việc bây giờ là đếm số dòng bôi đỏ trong file đính kèm để hiển thị Msgbox

Em cảm ơn!
 

File đính kèm

  • Book123.xlsm
    16.8 KB · Đọc: 13
Chào ACE GPE,

Hiện em đang có 1 file dữ liệu đầu vào để import, nhưng thay vì để Phần mềm phát hiện lỗi, em muốn file excel của mình phát hiện lỗi trước. Em có dùng CF để tìm ra những dòng lỗi, công việc bây giờ là đếm số dòng bôi đỏ trong file đính kèm để hiển thị Msgbox

Em cảm ơn!

Nếu dùng được với CF tức là bạn có điều kiện (Criteria) của CF đó, - bạn hãy dùng VBA để đếm số đối tượng (có thể là cells, dòng,...) thỏa mã đ/k đó , sau đó thông báo MsgBox là được.
 
Upvote 0
Nếu dùng được với CF tức là bạn có điều kiện (Criteria) của CF đó, - bạn hãy dùng VBA để đếm số đối tượng (có thể là cells, dòng,...) thỏa mã đ/k đó , sau đó thông báo MsgBox là được.

Bạn hướng dẫn cụ thể hơn giúp mình được không?
 
Upvote 0
Bạn hướng dẫn cụ thể hơn giúp mình được không?

Ví dụ thế này (theo điều kiện trong file của bạn)

Mã:
Sub ThongBaoSoDong()
    Dim sAr As Variant, Dic As Variant
    Dim i As Long, d As Long
    Dim tmpD As String 
    Dim bo As Boolean
    
    With Sheet1.Range("D7"):   sAr = .Resize(.Offset(60000).End(xlUp).Row - .Row + 1, 3).Value:    End With
    
    Set Dic = CreateObject("Scripting.Dictionary")
    d = 0    
    For i = 1 To UBound(sAr)
        tmpD = CStr(sAr(i, 1))
         
       
        If Dic.Exists(tmpD) Then
            bo = True
        Else    
            bo = False
            Dic.Add tmpD, ""       
           
        End If
       
        If bo Then d = d + 1
    Next i
    
    MsgBox "so dong thoa man d/k = " & d
    Set Dic = Nothing
End Sub


có thể viết thành Function để liên kết động, bạn tự viết xem sao
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu đếm điều kiện và thông báo số dòng bị lỗi thì dùng công thức có được không?
Mã:
=SUMPRODUCT(($E$7:$E$13=1)*(LEN($F$7:$F$13)<>8)+($E$7:$E$13=6)*(LEN($F$7:$F$13)<>11)+($E$7:$E$13=0)*($F$7:$F$13<>99999999))
 

File đính kèm

  • Book123.xlsm
    17.7 KB · Đọc: 3
Upvote 0
Nếu đếm điều kiện và thông báo số dòng bị lỗi thì dùng công thức có được không?
Mã:
=SUMPRODUCT(($E$7:$E$13=1)*(LEN($F$7:$F$13)<>8)+($E$7:$E$13=6)*(LEN($F$7:$F$13)<>11)+($E$7:$E$13=0)*($F$7:$F$13<>99999999))

Bà con ở đây chỉ thích dùng code chứ không thích dùng hàm.

@chủ thớt:
hiển thị lên msgbox số dòng chi vậy?
nếu đã phải duyệt dòng thì lập luôn một chuỗi hiển thị địa chỉ các dòng sai cho nó dễ xét.
 
Upvote 0
Bà con ở đây chỉ thích dùng code chứ không thích dùng hàm.

@chủ thớt:
hiển thị lên msgbox số dòng chi vậy?
nếu đã phải duyệt dòng thì lập luôn một chuỗi hiển thị địa chỉ các dòng sai cho nó dễ xét.

Chào anh VetMini,

Như bài #1 em có nói, em muốn file của mình phát hiện lỗi trước khi import vào phần mềm, Msgbox chỉ báo cho người dùng biết là còn abc dòng lỗi, sau đó sẽ lọc màu để biết các dòng bị lỗi và sửa.
Tức như thế này.
Em sử dụng VBA cho CF, sau đó đếm số lượng dòng thỏa mãn CF đó.
Nếu Số lượng >1 thì GO TO EXIT SUB
Nếu Số lượng =0 thì thực hiện tiếp các lệnh tiếp theo

Mong anh giúp đỡ.
 
Upvote 0
Nhét cái hàm của leonguyenz vào trong hàm. Hết

Mã:
Sub t()
[COLOR=#008000]' code hiển thị số dòng của nhóm dữ liệu không thoả điều kiện
[/COLOR]Const ROWFIRST = 7 [COLOR=#008000]' row đầu tiên có dữ liệu[/COLOR]
Const ROWLAST = 13 [COLOR=#008000]' row cuối cùng của dữ liệu[/COLOR]
Const COLFIRST = "E"
Dim rg As Range
Dim curSheet As String
curSheet = ActiveSheet.Name[COLOR=#008000] ' ghi lại tên của sheet hiện hành[/COLOR]
Sheets("sheet1").Activate
Set rg = ActiveSheet.Range(COLFIRST & ROWFIRST).Resize(ROWLAST - ROWFIRST + 1)
MsgBox "so loi: " & ActiveSheet.Evaluate(Replace(Replace( _
    "=SUMPRODUCT((Range1=1)*(LEN(Range2)<>8)+(Range1=6)*(LEN(Range2)<>11)+(Range1=0)*(Range2<>99999999))", _
    "Range1", rg.Address), "Range2", rg.Offset(0, 1).Address) _
    )
Sheets(curSheet).Activate [COLOR=#008000]' trả activesheet về trạng thái ban đầu[/COLOR]
Set rg = Nothing
End Sub
 
Upvote 0
Web KT
Back
Top Bottom