[Help] Tạo Marco kiểm tra đầu số điện thoại (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

robinhsoon

Thành viên hoạt động
Tham gia
19/1/16
Bài viết
153
Được thích
11
Xin chào các Thầy cộng đồng mạng Giaiphapexcel.!

Em có một bài toán nhưng tìm hoài mà không có cách nào giải quyết, nên em đăng bài này mong các thầy giúp đỡ..

Trong file đính kèm của em đó là Data thực tế mà hiện tại em đang làm.. gồm 02 sheet
công việc:
1.Tại Sheet (Data): Kiểm tra độ dài của các số điện thoại ở cột Hand Phone, nếu là độ dài bằng 10 hoặc 11 số (đúng) thì kiểm tra lần lượt các đầu số điện thoại đã khai báo trong thư viện Sheet (Check Phone) nếu trùng với các đầu số thì đúng và ngược lại nếu sai thì Highline vàng các số điện thoại lên..

2. Do Template của em không có định nên thây vì tìm và xử lý một cột cố định em sẽ thay vào là tìm đến cột có Tên là Handphone (hoặc có cách nào hay hơn mong các thầy cho em ý kiến ạ)

Chân thành cảm ơn các Thầy ạ.!.
 

File đính kèm

Bạn xem đúng ý bạn chưa.
 

File đính kèm

Upvote 0
Bạn quét chọn vùng I2:I2605, mở thẻ Home --> Conditional formatting --> Manage Rules.. nháy chọn vào công thức và nháy nút Edit Rule... để xem tôi đã làm gì.
 
Upvote 0
Vậy dùng thử code này xem sao.
Mã:
Sub GPE()
Dim sCell As Range
For Each sCell In Sheet1.Range("I2", Sheet1.Range("I65000").End(xlUp))
    If Application.WorksheetFunction.CountIf(Sheet2.[a3:b23], Left(sCell.FormulaR1C1, Len(sCell.FormulaR1C1) - 7)) = 0 Then sCell.Interior.Color = 65535
Next sCell
End Sub
 
Upvote 0
Vậy dùng thử code này xem sao.
Mã:
Sub GPE()
Dim sCell As Range
For Each sCell In Sheet1.Range("I2", Sheet1.Range("I65000").End(xlUp))
    If Application.WorksheetFunction.CountIf(Sheet2.[a3:b23], Left(sCell.FormulaR1C1, Len(sCell.FormulaR1C1) - 7)) = 0 Then sCell.Interior.Color = 65535
Next sCell
End Sub

Em cảm ơn Thầy ạ, Code đã chạy đúng rồi ạ... còn một câu nữa cho em hỏi ạ...
Do Teamplate (tức cột của số điện thoại thường không cố định), em muốn code của mình khi chạy sẽ tìm đến cột có tên là HandPhone và làm việc tại đó, thì mình thây đổi sao ạ...

Mong Thầy giúp đỡ..
 
Upvote 0
Em cảm ơn Thầy ạ, Code đã chạy đúng rồi ạ... còn một câu nữa cho em hỏi ạ...
Do Teamplate (tức cột của số điện thoại thường không cố định), em muốn code của mình khi chạy sẽ tìm đến cột có tên là HandPhone và làm việc tại đó, thì mình thây đổi sao ạ...

Mong Thầy giúp đỡ..
Code đã chạy đúng rồi ạ
Hình như.........có gì chưa đúng lắm
Dòng 216 em này bị tô vàng 0996874897
Dòng 570 em này ....cũng bị tô vàng 0994776159
code của mình khi chạy sẽ tìm đến cột có tên là HandPhone
Tìm cột có chứa nội dung "HandPhone" trong hàng đầu của vùng dữ liệu ở sheet "Data"
Híc
Thân
 
Upvote 0

Dòng 216 em này bị tô vàng 0996874897
Dòng 570 em này ....cũng bị tô vàng 0994776159

Tìm cột có chứa nội dung "HandPhone" trong hàng đầu của vùng dữ liệu ở sheet "Data"
Híc
Thân

Nó chỉ có 10 số thôi bác.
Em cảm ơn Thầy ạ, Code đã chạy đúng rồi ạ... còn một câu nữa cho em hỏi ạ...
Do Teamplate (tức cột của số điện thoại thường không cố định), em muốn code của mình khi chạy sẽ tìm đến cột có tên là HandPhone và làm việc tại đó, thì mình thây đổi sao ạ...

Mong Thầy giúp đỡ..
Vậy sửa lại lần nửa nhé.
Mã:
Sub GPE()
Dim sCell As Range, cSeach As Range
Set cSeach = Sheet1.Cells.Find("Handphone")
If Not cSeach Is Nothing Then
    For Each sCell In Sheet1.Range(cSeach.Offset(1).Address, Sheet1.Range(cSeach.Offset(65000).Address).End(xlUp))
        If Application.WorksheetFunction.CountIf(Sheet2.[a3:b23], Left(sCell.FormulaR1C1, Len(sCell.FormulaR1C1) - 7)) = 0 Then sCell.Interior.Color = 65535
    Next sCell
Else
    MsgBox "xin loi khong tim thay cot Handphone"
End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
@robinhsoon
Hình như code này từa tựa hay hao hao giống trong CF. Thích code thì là có ngay nhưng bài phải khó hơn nữa kìa.
 
Upvote 0


Nó chỉ có 10 số thôi bác.

Vậy sửa lại lần nửa nhé.
Mã:
Sub GPE()
Dim sCell As Range, cSeach As Range
Set cSeach = Sheet1.Cells.Find("Handphone")
If Not cSeach Is Nothing Then
    For Each sCell In Sheet1.Range(cSeach.Offset(1).Address, Sheet1.Range(cSeach.Offset(65000).Address).End(xlUp))
        If Application.WorksheetFunction.CountIf(Sheet2.[a3:b23], Left(sCell.FormulaR1C1, Len(sCell.FormulaR1C1) - 7)) = 0 Then sCell.Interior.Color = 65535
    Next sCell
Else
    MsgBox "xin loi khong tim thay cot Handphone"
End If
End Sub

Chào Thầy!

Vừa may em cũng gặp một bài toán giống như vậy nhưng là kiểm tra số điện thoại bàn, Thầy giúp em nhé.

Em có một File Data gồm các cột 1. [Mã Cửa Tiệm] 2.[Tỉnh/Thành Phố] và 3.[cột số điện thoại bàn]

1. Tại cột số điện thoại bàn em muốn kiểm tra chiều dài các số điện thoại, Nếu chiều dài là 7 hoặc 8 là đúng, còn những trường hợp khác là sai sẽ higline vàng lên
2. So sánh những số điện thoại có chiều dài 8 thì tường ứng với 03 Thành Phố (HCM,HN,HT) và kiểm tra lần lượt các đầu số đã khai báo ở [Sheet Phone] và cột A
3. So sánh những số điện thoại có chiều dài 7 thì tường ứng với Các Tỉnh còn lại và kiểm tra lần lượt các đầu số đã khai báo ở [Sheet Phone] và cột B

Hơi rắc rối một tí, nhưng mong Thầy giúp đỡ...
Cảm ơn Thầy...
 

File đính kèm

Upvote 0


Nó chỉ có 10 số thôi bác.

Vậy sửa lại lần nửa nhé.
Mã:
Sub GPE()
Dim sCell As Range, cSeach As Range
Set cSeach = Sheet1.Cells.Find("Handphone")
If Not cSeach Is Nothing Then
    For Each sCell In Sheet1.Range(cSeach.Offset(1).Address, Sheet1.Range(cSeach.Offset(65000).Address).End(xlUp))
        If Application.WorksheetFunction.CountIf(Sheet2.[a3:b23], Left(sCell.FormulaR1C1, Len(sCell.FormulaR1C1) - 7)) = 0 Then sCell.Interior.Color = 65535
    Next sCell
Else
    MsgBox "xin loi khong tim thay cot Handphone"
End If
End Sub

Em Cảm Ơn Thầy đã giúp em, em đã làm được rồi ạ...

Chúc Thầy sức khỏe và Thành Công ạ
 
Upvote 0
Chào Thầy!

Vừa may em cũng gặp một bài toán giống như vậy nhưng là kiểm tra số điện thoại bàn, Thầy giúp em nhé.

Em có một File Data gồm các cột 1. [Mã Cửa Tiệm] 2.[Tỉnh/Thành Phố] và 3.[cột số điện thoại bàn]

1. Tại cột số điện thoại bàn em muốn kiểm tra chiều dài các số điện thoại, Nếu chiều dài là 7 hoặc 8 là đúng, còn những trường hợp khác là sai sẽ higline vàng lên
2. So sánh những số điện thoại có chiều dài 8 thì tường ứng với 03 Thành Phố (HCM,HN,HT) và kiểm tra lần lượt các đầu số đã khai báo ở [Sheet Phone] và cột A
3. So sánh những số điện thoại có chiều dài 7 thì tường ứng với Các Tỉnh còn lại và kiểm tra lần lượt các đầu số đã khai báo ở [Sheet Phone] và cột B

Hơi rắc rối một tí, nhưng mong Thầy giúp đỡ...
Cảm ơn Thầy...
Bạn sử dụng đoạn code dưới đây thử xem, tôi thấy có điều gì đó bất ổn với dữ liệu của bạn.
Mã:
Sub GPE()
Dim sCell As Range
Sheet1.Range("C2", Sheet1.Range("C65000").End(xlUp)).Interior.Pattern = xlNone
For Each sCell In Sheet1.Range("C2", Sheet1.Range("C65000").End(xlUp))
    If Len(sCell.FormulaR1C1) = 7 Or Len(sCell.FormulaR1C1) = 8 Then
        If Len(sCell.FormulaR1C1) = 8 Then
            If Application.WorksheetFunction.CountIf(Sheet2.[a3:a33], Left(sCell.FormulaR1C1, Len(sCell.FormulaR1C1) - 5)) + _
            Application.WorksheetFunction.CountIf(Sheet2.[a3:a33], Left(sCell.FormulaR1C1, Len(sCell.FormulaR1C1) - 6)) = 0 Then sCell.Interior.Color = 65535
        ElseIf Len(sCell.FormulaR1C1) = 7 Then
            If Application.WorksheetFunction.CountIf(Sheet2.[b3:b33], Left(sCell.FormulaR1C1, Len(sCell.FormulaR1C1) - 5)) + _
            Application.WorksheetFunction.CountIf(Sheet2.[b3:b33], Left(sCell.FormulaR1C1, Len(sCell.FormulaR1C1) - 4)) = 0 Then sCell.Interior.Color = 65535


        End If
    Else
        sCell.Interior.Color = 65535
    End If
Next sCell
End Sub
 
Upvote 0
Em Cảm Ơn Thầy đã giúp em, em đã làm được rồi ạ...

Chúc Thầy sức khỏe và Thành Công ạ
Bạn sửa lại code thêm phần chổ màu đỏ nửa sẽ hay hơn.
Mã:
Sub GPE()
Dim sCell As Range, cSeach As Range
Set cSeach = Sheet1.Cells.Find("Handphone")
[COLOR=#ff0000][B]Sheet1.Range(cSeach.Offset(1).Address, Sheet1.Range(cSeach.Offset(65000).Address).End(xlUp)).Interior.Pattern = xlNone[/B][/COLOR]
If Not cSeach Is Nothing Then
    For Each sCell In Sheet1.Range(cSeach.Offset(1).Address, Sheet1.Range(cSeach.Offset(65000).Address).End(xlUp))
       [COLOR=#ff0000][B] if Len(sCell.FormulaR1C1) = 10 Or Len(sCell.FormulaR1C1) = 11 then[/B][/COLOR]
               If Application.WorksheetFunction.CountIf(Sheet2.[a3:b23], Left(sCell.FormulaR1C1, Len(sCell.FormulaR1C1) - 7)) = 0 Then sCell.Interior.Color = 65535
         [COLOR=#ff0000][B]Else
               sCell.Interior.Color = 65535
         End If[/B][/COLOR]
    Next sCell
Else
    MsgBox "xin loi khong tim thay cot Handphone"
End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn sử dụng đoạn code dưới đây thử xem, tôi thấy có điều gì đó bất ổn với dữ liệu của bạn.
Mã:
Sub GPE()
Dim sCell As Range
Sheet1.Range("C2", Sheet1.Range("C65000").End(xlUp)).Interior.Pattern = xlNone
For Each sCell In Sheet1.Range("C2", Sheet1.Range("C65000").End(xlUp))
    If Len(sCell.FormulaR1C1) = 7 Or Len(sCell.FormulaR1C1) = 8 Then
        If Len(sCell.FormulaR1C1) = 8 Then
            If Application.WorksheetFunction.CountIf(Sheet2.[a3:a33], Left(sCell.FormulaR1C1, Len(sCell.FormulaR1C1) - 5)) + _
            Application.WorksheetFunction.CountIf(Sheet2.[a3:a33], Left(sCell.FormulaR1C1, Len(sCell.FormulaR1C1) - 6)) = 0 Then sCell.Interior.Color = 65535
        ElseIf Len(sCell.FormulaR1C1) = 7 Then
            If Application.WorksheetFunction.CountIf(Sheet2.[b3:b33], Left(sCell.FormulaR1C1, Len(sCell.FormulaR1C1) - 5)) + _
            Application.WorksheetFunction.CountIf(Sheet2.[b3:b33], Left(sCell.FormulaR1C1, Len(sCell.FormulaR1C1) - 4)) = 0 Then sCell.Interior.Color = 65535


        End If
    Else
        sCell.Interior.Color = 65535
    End If
Next sCell
End Sub

Đoạn code rất hay ạ.. Nhưng lúc em kiểm tra lai thì trong tổng số store trên có 02 store bị sai nhưng không highline vàng lên (em có note và higline đỏ lên)... thầy kiểm tra giúp em nhé...
Em cảm ơn Thầy..! Mong thầy giúp đỡ..
 

File đính kèm

Upvote 0
Đoạn code rất hay ạ.. Nhưng lúc em kiểm tra lai thì trong tổng số store trên có 02 store bị sai nhưng không highline vàng lên (em có note và higline đỏ lên)... thầy kiểm tra giúp em nhé...
Em cảm ơn Thầy..! Mong thầy giúp đỡ..

Hổng phải thầy làm được hông?
PHP:
Sub GPE()
Dim Arr(), Cll As Range, I As Long, J As Long, Num As Long, Tem As String, DK As Boolean
Arr = Sheet2.Range("A3:B33").Value
Tem = Sheet2.Range("A2").Value
For Each Cll In Range("C2", Range("C2").End(xlDown))
    DK = False
    J = IIf(InStr(Tem, Cll.Offset(, -1).Value), 1, 2)
    Num = IIf(J = 1, 8, 7)
    If Len(Cll) <> Num Then
        Cll.Interior.ColorIndex = 3
    Else
        For I = 1 To UBound(Arr)
            If Cll.Value Like Arr(I, J) & "*" Then
                DK = True: Exit For
            End If
        Next I
        If DK = False Then Cll.Interior.ColorIndex = 3
    End If
Next
End Sub
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom