Viết Marco điền tự động tên mạng cho list số điện thoại - Xin các tiền bối chỉ giáo ! (1 người xem)

  • Thread starter Thread starter grivy4
  • Ngày gửi Ngày gửi
Liên hệ QC

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

grivy4

Thành viên mới
Tham gia
22/3/09
Bài viết
15
Được thích
7
Em có 1 bài tập như sau: Cho 1 cột A chứa danh sách các số điện thoại của các nhà mạng.
Yêu cầu viết một đoạn Marco để điền tự động các tên nhà mạng ở Cột B tương ứng với số điện thoại tại cột A. Dữ liệu cho biết các đầu số của nhà mạng. (Như file đính kèm bên dưới). Em mới làm quen với VBA nên chưa biết cách làm. Nhờ các tiền bối chỉ bảo. Em xin cảm ơn !
 

File đính kèm

Em có 1 bài tập như sau: Cho 1 cột A chứa danh sách các số điện thoại của các nhà mạng.
Yêu cầu viết một đoạn Marco để điền tự động các tên nhà mạng ở Cột B tương ứng với số điện thoại tại cột A. Dữ liệu cho biết các đầu số của nhà mạng. (Như file đính kèm bên dưới). Em mới làm quen với VBA nên chưa biết cách làm. Nhờ các tiền bối chỉ bảo. Em xin cảm ơn !
Làm bằng VBA thì chẳng có vấn đề rồi... nhưng... hứng lên, làm bằng công thức thử xem!
- Trước tiên, xin bố trí lại bảng dò như sau:

untitled.JPG


- Tiếp theo, gõ công thức vào cell B2
PHP:
=LOOKUP(1,FIND($J$2:$J$23,$A2),$K$2:$K$23)
 

File đính kèm

Em cảm ơn anh NDU, công thức này rất tiện. Nhưng em đang học VBA. Anh có thể chỉ em về VBA để làm bài tập này được ko ạ? Em chỉ mắc một chỗ là trong VBA, sử dụng việc đối chiếu như thế nào đối với Value trong Cell của cột A? Để khi trả về cột B là tên mạng. Ví dụ số 8498xxxxxxx, khi so sánh đầu số 8498 của nhà mạng thì gán cho số x kia bằng ký tự gì? * chẳng hạn hay ? hoặc có cách nào khác? Mong anh chỉ bảo. Thanks !
 
Em cảm ơn anh NDU, công thức này rất tiện. Nhưng em đang học VBA. Anh có thể chỉ em về VBA để làm bài tập này được ko ạ? Em chỉ mắc một chỗ là trong VBA, sử dụng việc đối chiếu như thế nào đối với Value trong Cell của cột A? Để khi trả về cột B là tên mạng. Ví dụ số 8498xxxxxxx, khi so sánh đầu số 8498 của nhà mạng thì gán cho số x kia bằng ký tự gì? * chẳng hạn hay ? hoặc có cách nào khác? Mong anh chỉ bảo. Thanks !
Cách đơn giản là bạn cắt 5 số đầu mang so với bảng, nếu không tìm thấy thì ta cắt 4 số so tiếp
Vậy thôi
------------------
Làm luôn cho bạn bằng VBA đây:
PHP:
Function StLookup(LVal As String, LArray As Range, ColIndex As Long) As Variant
  Dim Clls As Range
  For Each Clls In LArray.Resize(, 1)
    StLookup = IIf(LVal Like Clls.Value & "*", Clls(, ColIndex), "")
    If Len(StLookup) Then Exit For
  Next Clls
End Function
Cách dùng gần giống hàm VLOOKUP của Excel
 

File đính kèm

Lần chỉnh sửa cuối:
Em có 1 bài tập như sau: Cho 1 cột A chứa danh sách các số điện thoại của các nhà mạng.
Yêu cầu viết một đoạn Marco để điền tự động các tên nhà mạng ở Cột B tương ứng với số điện thoại tại cột A. Dữ liệu cho biết các đầu số của nhà mạng. (Như file đính kèm bên dưới). Em mới làm quen với VBA nên chưa biết cách làm. Nhờ các tiền bối chỉ bảo. Em xin cảm ơn !
Góp vui một cách, sử dụng Sub
Mã:
Public Sub sim()
Dim Vung As Range, Cll As Range, Wf, Bang As Range, iDo
    Set Vung = Range([a2], [a10000].End(xlUp))
    Set Bang = [g4:g11]
    Set Wf = Application.WorksheetFunction
        For Each Cll In Vung
            iDo = Val(IIf(Wf.CountIf(Bang.Resize(, 3), Left(Cll, 4)), Left(Cll, 4), Left(Cll, 5)))
                If Wf.CountIf(Bang, iDo) Then
                    Cll.Offset(, 1) = "Vinaphone"
                ElseIf Wf.CountIf(Bang.Offset(, 1), iDo) Then
                    Cll.Offset(, 1) = "Mobiphone"
                Else
                    Cll.Offset(, 1) = "Viettel"
                End If
        Next
End Sub
 

File đính kèm

Web KT

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

Back
Top Bottom