VBA Function tham chiếu bằng offset

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

locbanh

Thành viên chính thức
Tham gia
5/5/13
Bài viết
70
Được thích
8
Chào các ACE GPE mình có 1 việc nhờ ACE giúp đỡ, cụ thể như sau :

Bình thường hàm của mình chạy như thế này

Function LayMaBuuChinh6huong(ByVal matinh As String) As String
matinh = matinh
Select Case matinh
Case 70
LayMaBuuChinh6huong = 792
Exit Function
Case 64, 66, 67, 79, 80
LayMaBuuChinh6huong = 791
Exit Function
Case 10
LayMaBuuChinh6huong = 192
Exit Function
Case 16, 17, 18, 20, 22
LayMaBuuChinh6huong = 191
Exit Function
Case 55
LayMaBuuChinh6huong = 592
Exit Function
Case 53, 52, 56, 57, 58
LayMaBuuChinh6huong = 591
Exit Function
End Select
LayMaBuuChinh6huong = "XEM LAI"
End Function

Nếu gặp mã 70 thì chạy công thức này thì công thức chạy như phía dưới:
Function LayMaBuuChinh6huong_moi_072018(ByVal matinh As String, mahuyen As String) As String
matinh = matinh
Select Case matinh
Case 70
Select Case mahuyen
Case "7100", "7130", "7220", "7540", "7480", "7460", "7510", "7400", "7430", "7360", "7250", "7170", "7600", "7270"
LayMaBuuChinh6huong_moi_072018 = 701000
Case "7560", "7150", "7290", "7200", "7620", "7330", "7310", "7380", "7580", "7590"
LayMaBuuChinh6huong_moi_072018 = 700920
Case "", " ", "0"
LayMaBuuChinh6huong_moi_072018 = "HCM-XemLai"
End Select
Exit Function
End Select
End Function

Đây là công thức ở ngoài mình sử dụng (ô A1 là mã tỉnh, B1 là mã huyện)
=IF(VALUE(A1)=70,LayMaBuuChinh6huong_moi_072018(A1,OFFSET(A1,,1)),LayMaBuuChinh6huong(A1))
(nếu A1 là 70 thì dùng hàm LayMaBuuChinh6huong_moi_072018 còn không phải thì dùng hàm LayMaBuuChinh6huong )

Bây giờ Mình muốn gôm 2 công thức lại thành 1 hàm LayMa6huong(ByVal matinh As String) As String
Cột mã huyện là cột phía sau của cột mã tỉnh. ví dụ A5 là mã tĩnh thì mà huyện sẽ là cột B5 ( dùng Offset(A5,,1).
Mình muốn bỏ hàm này vào Function cho người dùng dể sử dụng
=LayMaBuuChinh6huong(A1) [Chỉ cần 1 tham số thôi A1 là mã tỉnh thôi, không cần thêm tham số B1 mã huyện .]

Các ACE có thể giúp mình sử dung hàm offset trong Function để tìm ra tham số mã huyện. Cám ơn nhiều.
 
Mình muốn bỏ hàm này vào Function cho người dùng dể sử dụng
=LayMaBuuChinh6huong(A1) [Chỉ cần 1 tham số thôi A1 là mã tỉnh thôi, không cần thêm tham số B1 mã huyện .]

Các ACE có thể giúp mình sử dung hàm offset trong Function để tìm ra tham số mã huyện. Cám ơn nhiều.
Bạn dùng thử hàm này.
Mã:
Function LayMaBuuChinh6huong(ByVal MaTinh As Range) As String
Application.Volatile
    Select Case MaTinh.Value
    Case 70
        Select Case CStr(MaTinh.Offset(, 1).Value)
        Case "7100", "7130", "7220", "7540", "7480", "7460", "7510", "7400", "7430", "7360", "7250", "7170", "7600", "7270"
            LayMaBuuChinh6huong = "701000"
        Case "7560", "7150", "7290", "7200", "7620", "7330", "7310", "7380", "7580", "7590"
            LayMaBuuChinh6huong = "00920"
        Case Else
            LayMaBuuChinh6huong = "HCM-XemLai"
        End Select
    Case 64, 66, 67, 79, 80
        LayMaBuuChinh6huong = 791
    Case 10
        LayMaBuuChinh6huong = 192
    Case 16, 17, 18, 20, 22
        LayMaBuuChinh6huong = 191
    Case 55
        LayMaBuuChinh6huong = 592
    Case 53, 52, 56, 57, 58
        LayMaBuuChinh6huong = 591
    Case Else
        LayMaBuuChinh6huong = "XEM LAI"
    End Select
End Function
 
cám ơn huuthang_bd nhiều nha.
 
Web KT

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

Back
Top Bottom