Hàm xác định Phòng Ban trong cơ quan (1 người xem)

  • Thread starter Thread starter huy vu
  • Ngày gửi Ngày gửi

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

huy vu

Thành viên hoạt động
Tham gia
29/2/12
Bài viết
164
Được thích
1
Chào các anh /chị trong diễn đàn.
Em có tự xây dựng hàm tự tạo để xác định phòng ban trong cơ quan như sau:
Mã:
Function PhongBan(str As String) As String
    If Left(str, 1) = 1 Then PhongBan = "Phong Khach Hang"
    If Left(str, 1) = 2 Then PhongBan = "Phong Giao Dich"
    If Left(str, 1) = 3 Then PhongBan = "Phong Hanh Chinh"
    ' Va nhieu dau khac
    
    If Left(str, 1) >= 10 And Left(str, 1) < 1 Then Exit Function
    
End Function
Căn cứ vào đầu của chuỗi, ví dụ: Nếu đầu chuỗi = 1 thì là phòng Khách hàng, v.v...
Tuy nhiên, theo hàm trên, cứ if mới then em thấy không ổn, khi giả sử đầu phòng có 1 -> 10 về sau tăng lên 11 đên 20
Vậy có cách nào hay hơn, Mong các anh/chị giúp đỡ.
 

File đính kèm

Chào các anh /chị trong diễn đàn.
Em có tự xây dựng hàm tự tạo để xác định phòng ban trong cơ quan như sau:
Mã:
Function PhongBan(str As String) As String
    If Left(str, 1) = 1 Then PhongBan = "Phong Khach Hang"
    If Left(str, 1) = 2 Then PhongBan = "Phong Giao Dich"
    If Left(str, 1) = 3 Then PhongBan = "Phong Hanh Chinh"
    ' Va nhieu dau khac
    
    If Left(str, 1) >= 10 And Left(str, 1) < 1 Then Exit Function
    
End Function
Căn cứ vào đầu của chuỗi, ví dụ: Nếu đầu chuỗi = 1 thì là phòng Khách hàng, v.v...
Tuy nhiên, theo hàm trên, cứ if mới then em thấy không ổn, khi giả sử đầu phòng có 1 -> 10 về sau tăng lên 11 đên 20
Vậy có cách nào hay hơn, Mong các anh/chị giúp đỡ.

Bạn có thể dùng Select case thay thế if.

Nhưng nếu viết hàm như này thì dùng công thức và với 1 bảng dò là đc chứ viết hàm chi cho mệt.

Chỗ này nó cứ thừa thừa làm sao ấy:

 
Upvote 0
Em muốn tạo thành addin để dùng tại 1 số máy nên tạo hàm này ạ. Không mỗi máy lại thêm 1 bảng dò rồi vlookup/lookup cũng mất thời gian.
 
Upvote 0
Mã:
Function PhongBan(str As String) As String
    Dim arr()
    arr = Array("Phong Khach Hang", "Phong Giao Dich", "Phong Hanh Chinh")
    PhongBan = arr(Left(str, 1) - 1)
End Function
Nếu nhiều phòng hơn thì lấy 2 chữ số đầu làm phòng 01, 02,.. sau đó dùng left(str,2)
 
Upvote 0
Mã:
Function PhongBan(str As String) As String
    Dim arr()
    arr = Array("Phong Khach Hang", "Phong Giao Dich", "Phong Hanh Chinh")
    PhongBan = arr(Left(str, 1) - 1)
End Function
Nếu nhiều phòng hơn thì lấy 2 chữ số đầu làm phòng 01, 02,.. sau đó dùng left(str,2)
Dùng mảng có vẻ ổn hơn. Cảm ơn a Hau.
 
Upvote 0
Bạn có thể xài hàm CHOOSE(), như

FongBan="Phòng " & Choose(Cbyte(Left(Str,1)),"..","..",. . .)
 
Upvote 0
Chào các anh /chị trong diễn đàn.
Em có tự xây dựng hàm tự tạo để xác định phòng ban trong cơ quan như sau:
Mã:
Function PhongBan(str As String) As String
    If Left(str, 1) = 1 Then PhongBan = "Phong Khach Hang"
    If Left(str, 1) = 2 Then PhongBan = "Phong Giao Dich"
    If Left(str, 1) = 3 Then PhongBan = "Phong Hanh Chinh"
    ' Va nhieu dau khac
    
    If Left(str, 1) >= 10 And Left(str, 1) < 1 Then Exit Function
    
End Function
Căn cứ vào đầu của chuỗi, ví dụ: Nếu đầu chuỗi = 1 thì là phòng Khách hàng, v.v...
Tuy nhiên, theo hàm trên, cứ if mới then em thấy không ổn, khi giả sử đầu phòng có 1 -> 10 về sau tăng lên 11 đên 20
Vậy có cách nào hay hơn, Mong các anh/chị giúp đỡ.
Bạn thử theo cách của mình xem sao nhé ! thử gõ vài mã tiếp ở cột E..
 

File đính kèm

Upvote 0
...
Tuy nhiên, theo hàm trên, cứ if mới then em thấy không ổn, khi giả sử đầu phòng có 1 -> 10 về sau tăng lên 11 đên 20
Vậy có cách nào hay hơn, Mong các anh/chị giúp đỡ.

Bạn dùng code như thế này để xác định con số đứng trước chuỗi:
Mã:
dim num as integer
Do While IsNumeric(Mid(chuoi,num+1,1))
num = num + 1
Loop
num = Val(Left(chuoi,num))
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom