Nhờ viết code hàm mới của oficce2016 để sài phiên bản thấp hơn

Liên hệ QC

vova2209

Thành viên tích cực
Tham gia
5/4/17
Bài viết
835
Được thích
112
Giới tính
Nam
Nghề nghiệp
Đường bộ
Em thấy phiên bản 2016 có mấy hàm rất hay, nhờ các bạn viết code cho hàm
1.IFS
2. SWITCH

3. HÀM MINIFS VÀ MAXIFS
4.

CONCAT
 
đã chỉnh lại code

đã chỉnh lại code
Mã:
Function IFS(ParamArray cond_Vals() As Variant) As Variant
  Dim i As Byte, Msg As String, Title As String
  If UBound(cond_Vals) = LBound(cond_Vals) Then
    MsgBox "Phai nhap it nhat 2 tham so" & Chr(10) & Chr(10) & "=IFS( LogicalTest1, ValueIfTrue1, " & "[LogicalTest2, ValueIfTrue2]" & Chr(10) & "   , . . .  , [ValueIfFalse])", vbOKOnly, "Cong thuc bi loi!"
    IFS = CVErr(xlErrRef)
    Exit Function
  End If
  For i = LBound(cond_Vals) To UBound(cond_Vals) Step 2
    If i = UBound(cond_Vals) Then IFS = cond_Vals(i): Exit Function
    If cond_Vals(i) Then IFS = cond_Vals(i + 1): Exit Function
  Next i
  IFS = False
End Function
Hàm chạy ổn rồi ạ! em cảm ơn nhiều
 
Upvote 0
Thưa thầy! nguyên nhân là khi đi sang máy khác cần phải chỉnh sửa, hoặc gửi cho người khác xem thì hàm vẫn có thể dùng được ạ, vì em thấy hàm mới hữu hiệu hơn nhiều ạ.. em cảm ơn thầy ạ!

Mấy loại phiên bản đặc biệt chỉ dùng trong nhóm với nhau thôi. Đó là lý do MS nhất định chỉ tạo những hàm này trong phiên bản 365, và khong cần chúng phải thích ứng với các phiên bản khác.

Hàm người dùng khi gởi cho người khác "xem" thì mình đã mặc nhiên chịu trách nhiệm (*) cho nó. Nếu có vi rút, hoặc tính không đúng thì khách hàng có thể kiện mình. Những code VBA nằm trong file gởi cho người khác thì đúng ra bạn chỉ nên hỏi cách làm rồi tự viết code lấy. Những chỗ nào bí thì nhờ anh chị em sửa giùm.

(*) bao nhiêu năm toi làm việc, cái từ "trách nhiệm" là cái được đặt cao trên hết. Nhưng có vẻ bây giờ người ta không coi nó quan trọng bằng cái từ "tiện nghi"
 
Upvote 0
đã chỉnh lại code

đã chỉnh lại code
Mã:
Function IFS(ParamArray cond_Vals() As Variant) As Variant
  Dim i As Byte, Msg As String, Title As String
  If UBound(cond_Vals) = LBound(cond_Vals) Then
    MsgBox "Phai nhap it nhat 2 tham so" & Chr(10) & Chr(10) & "=IFS( LogicalTest1, ValueIfTrue1, " & "[LogicalTest2, ValueIfTrue2]" & Chr(10) & "   , . . .  , [ValueIfFalse])", vbOKOnly, "Cong thuc bi loi!"
    IFS = CVErr(xlErrRef)
    Exit Function
  End If
  For i = LBound(cond_Vals) To UBound(cond_Vals) Step 2
    If i = UBound(cond_Vals) Then IFS = cond_Vals(i): Exit Function
    If cond_Vals(i) Then IFS = cond_Vals(i + 1): Exit Function
  Next i
  IFS = False
End Function
Bác oi bác oi
Bác hướng dẫn cháu sử dụng hàm này v[ới Bác oi.
 
Upvote 0
Bác oi
thật sự cháu không hiểu như nào cả
Bác làm ơn giúp cháu cho một file ví dụ đi Bác.
Mã:
Function IFS(ParamArray cond_Vals() As Variant) As Variant
  Dim i As Byte, Msg As String, Title As String
 
  If UBound(cond_Vals) = LBound(cond_Vals) Then
    MsgBox "Phai nhap it nhat 2 tham so" & Chr(10) & Chr(10) & "VD: =IFS(A10>20, 20, A10>10, 15, A10>5, 5, TRUE, 0)", vbOKOnly, "Cong thuc bi loi!"
    IFS = CVErr(xlErrRef)
    Exit Function
  End If
  For i = LBound(cond_Vals) To UBound(cond_Vals) Step 2
    If i = UBound(cond_Vals) Then IFS = cond_Vals(i): Exit Function
    If cond_Vals(i) Then IFS = cond_Vals(i + 1): Exit Function
  Next i
  IFS = False
End Function
Cu phap =IFS(A10>=6,"A",A10>=5,"B",A10>=4,"C",TRUE,0)
=IFS(A10>20, 20, A10>10, 15, A10>5, 5, TRUE, 0)
Bài đã được tự động gộp:

Bác oi
thật sự cháu không hiểu như nào cả
Bác làm ơn giúp cháu cho một file ví dụ đi Bác.
 

File đính kèm

  • Ham ifs.xlsb
    53.6 KB · Đọc: 4
Lần chỉnh sửa cuối:
Upvote 0
Ví dụ về hàm SWITCH() nè, tuy là thô thiển:
PHP:
Function SWITCH2003(Th As String) As Integer
Dim TDN As String
'Hàm Se Chuyên Tên Tháng Thành Sô Tháng  '
TDN = Left(Th, 1)
SWITCH2003 = Switch(TDN = "h", 2, TDN = "c", 9, TDN = "n", 5, TDN = "s", 6)
End Function

Cú pháp hàm: =SWITCH2003("chín") => 9

Mã:
Function SWITCH2003(Num As Double) As String
   SWITCH2003 = Switch(Num <= 0, "A", Num <= 5, "B", Num <= 10, "C", Num <= 15, "D", Num > 15, "E")
End Function
 
Lần chỉnh sửa cuối:
Upvote 0
Mã:
Function IFS(ParamArray cond_Vals() As Variant) As Variant
  Dim i As Byte, Msg As String, Title As String

  If UBound(cond_Vals) = LBound(cond_Vals) Then
    MsgBox "Phai nhap it nhat 2 tham so" & Chr(10) & Chr(10) & "VD: =IFS(A10>20, 20, A10>10, 15, A10>5, 5, TRUE, 0)", vbOKOnly, "Cong thuc bi loi!"
    IFS = CVErr(xlErrRef)
    Exit Function
  End If
  For i = LBound(cond_Vals) To UBound(cond_Vals) Step 2
    If i = UBound(cond_Vals) Then IFS = cond_Vals(i): Exit Function
    If cond_Vals(i) Then IFS = cond_Vals(i + 1): Exit Function
  Next i
  IFS = False
End Function
Cu phap =IFS(A10>=6,"A",A10>=5,"B",A10>=4,"C",TRUE,0)
=IFS(A10>20, 20, A10>10, 15, A10>5, 5, TRUE, 0)
Bài đã được tự động gộp:
Hi hi cảm ơn bạn
 
Upvote 0
Web KT

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

Back
Top Bottom