Mình có 1 bảng tính cần dùng hàm if với nhiều điều kiện.Mình có gửi file đính kèm mong các các bạn viết giúp mình hàm này bằng VBA.Chân thành cảm ơn trước.
Option Explicit
Function KQuaCua3So(Aa As Double, Bb As Double, Cc As Double)
If Cc < 0 Then
KQuaCua3So = "Err": Exit Function
End If
If Cc > 5 Then
KQuaCua3So = Switch(Aa <= 0.25, 1.2, Aa <= 0.5, 1.25, Aa > 0.5, 1.3)
Else
If 5 < Bb And Bb < 20 Then
KQuaCua3So = Switch(Aa <= 0.25, 1.2, Aa <= 0.5, 1.25, Aa > 0.5, 1.4 - 0.2 * Cc)
ElseIf Bb >= 0.1 And Bb <= 5 Then
KQuaCua3So = Switch(Aa <= 0.25, (1.45 - 0.05 * Bb) - 0.01 * (5 - Bb) * Cc, _
Aa <= 0.5, (1.75 - 0.1 * Bb) - 0.02 * (5 - Bb) * Cc, _
Aa > 0.5, (1.9 - 0.1 * Bb) - 0.02 * (6 - Bb) * Cc)
End If
End If
End Function
Option Explicit
Function ForCase(Xx As Double, Yy As Double, Zz As Double)
If Zz < 0 Then
ForCase = "Error": Exit Function
End If
Select Case Zz
Case Is <= 5
Select Case Yy
Case Is < 0.1, Is > 20
ForCase = "Err"
Case Is <= 5
Select Case Xx
Case Is <= 0.25
ForCase = (1.45 - 0.05 * Yy) - 0.01 * (5 - Yy) * Zz
Case Is <= 0.5
ForCase = (1.75 - 0.1 * Yy) - 0.02 * (5 - Yy) * Zz
Case Is > 0.5
ForCase = (1.9 - 0.1 * Yy) - 0.02 * (6 - Yy) * Zz
End Select
Case Is < 20
Select Case Xx
Case Is <= 0.25
ForCase = 1.2
Case Is <= 0.5
ForCase = 1.25
Case Is > 0.5
ForCase = 1.4 - 0.2 * Zz
End Select
End Select
Case Is > 5
Select Case Xx
Case Is <= 0.25
ForCase = 1.2
Case Is <= 0.5
ForCase = 1.25
Case Is > 0.5
ForCase = 1.3
End Select
End Select
End Function
Option Explicit
Function KQuaCua3So(Aa As Double, Bb As Double, Cc As Double)
If Cc < 0 Then
KQuaCua3So = "Err": Exit Function
End If
If Cc > 5 Then
KQuaCua3So = Switch(Aa <= 0.25, 1.2, Aa <= 0.5, 1.25, Aa > 0.5, 1.3)
Else
If 5 < Bb And Bb < 20 Then
KQuaCua3So = Switch(Aa <= 0.25, 1.2, Aa <= 0.5, 1.25, Aa > 0.5, 1.4 - 0.2 * Cc)
ElseIf Bb >= 0.1 And Bb <= 5 Then
KQuaCua3So = Switch(Aa <= 0.25, (1.45 - 0.05 * Bb) - 0.01 * (5 - Bb) * Cc, _
Aa <= 0.5, (1.75 - 0.1 * Bb) - 0.02 * (5 - Bb) * Cc, _
Aa > 0.5, (1.9 - 0.1 * Bb) - 0.02 * (6 - Bb) * Cc)
End If
End If
End Function
1./ Nếu nhờ công cụ ngôn ngữ của Google thì ta được những kết quả sau:
PHP:
(*) Công tắc; (*) Cây roi
(*) Công tắc điện; (*) Quay mau lẹ
(*) Bật mở điện; (*) Lọn tóc giả
(*) Que gổ mềm; (*) Đánh bằng roi
Trong đó theo mình nghĩa sát nhất trong ngữ cảnh này là công tắc, cái chuyển mạch
2./ Nếu trong cửa sổ VBE, ta nhập ' SWITCH(); (Nhớ có dấu nháy dùm cái nha); Sau đó bôi chuột lên chữ switch() & nhấn {F1}, VBE sẽ đưa ta đến các dòng như sau:
Switch Function
Evaluates a list of expressions and returns a Variant value or an expression associated with the first expression in the list that is True. Syntax Switch(expr-1,value-1[,expr-2,value-2… [,expr-n,value-n]])
The Switch function syntax has these parts:
Part Description expr Required. Variant expression you want to evaluate. value Required. Value or expression to be returned if the corresponding expression is True.
Remarks
The Switch function argument list consists of pairs of expressions and values. The expressions are evaluated from left to right, and the value associated with the first expression to evaluate to True is returned. If the parts aren't properly paired, a run-time error occurs. For example, if expr-1 is True, Switch returns value-1. If expr-1 is False, but expr-2 is True, Switch returns value-2, and so on. Switch returns a Null value if:
None of the expressions is True.
The first True expression has a corresponding value that is Null.
Switch evaluates all of the expressions, even though it returns only one of them. For this reason, you should watch for undesirable side effects. For example, if the evaluation of any expression results in a division by zero error, an error occurs.
Về tiếnh Anh thì cũng đang i tờ, nếu bạn thấy khó khăn fần dịch thuật thì sang BOX ngôn ngữ của diễn đàn nhờ các bạn rành rẽ giúp cho!
3./
Còn mình thì hiểu nó như sau:
Là hàm của VBA, tính năng mà nó đem lại tương đương hàm cách viết câu lệnh
PHP:
If . . . .
ElseIf . . . . .
. . . . .
Else
. . . . . .
End If
Hay giống cú fáp Select Case như trên.
Mình chưa thật sự đi đến tận cùng của hàm này, nhưng đã thử với trên trăm tham số hàm vẫn chạy tốt.
Ta hiểu là Nếu Jj là số chẵn thì biến GPE sẽ bằng jJ +1
Còn Jj là số lẽ thì biến GPE sẽ là số âm của số mà giá trị tuyệt đối của nó bằng jj & trừ thêm 1