Thử thế này xem saoCác bạn cho mình hỏi: Thí dụ mình có 1 hàm tự tạo
Function a(b as double,c as double,d as double)
if b<0 then
a=c*100/5 nhưng phải nhỏ hơn 3.1*d nếu không thì thoát hàm
..................
Chân thành cảm ơn trước.
Public Function aaa(b As Double, c As Double, d As Double)
Dim J As Double
J = (c * 100 / 5) - 3.1 * d
If b < 0 And J < 0 Then
aaa = c * 100 / 5
Else
aaa = "": Exit Function
End If
End Function
Public Function aaa(b As Double, c As Double, d As Double)
Dim J As Double
J = (c * 20) - 3.1 * d
If b < 0 Then
If J < 0 Then
aaa = c * 20
endif
Else
aaa = Empty
End If
End Function
Làm gọn Function của bạn một xíu:Đoạn code chính của mình là như thế này:
Function bb(E As Double, m As Double, lda1 As Double, beta As Double, f As Double, apha As Double, us As Double)
If apha <= 0.5 And lda1 < 2 And m >= 1 Then
bb = (1.3 + 0.15 * lda1 ^ 2) * Sqr(E / f)
Else
If apha <= 0.5 And lda1 >= 2 And m >= 1 Then
bb = (1.2 + 0.35 * lda1) * Sqr(E / f)
Else
If apha >= 1 Then
bb = 4.35 * Sqr((2 * apha - 1) * E / (us * (2 - apha + Sqr(apha ^ 2 + 4 * beta ^ 2))))
End If
End If
End If
End Function
Phần chữ đậm màu đen thì được rồi nhưng phần dưới mình muốn nếu trường hợp :
apha <= 0.5 And lda1 >= 2 And m >= 1
thì :bb = (1.2 + 0.35 * lda1) * Sqr(E / f) nhưng phải nhỏ hơn 3.1*sqr(E/f)
và nếu tiếp theo :
If apha >= 1 Then
bb = 4.35 * Sqr((2 * apha - 1) * E / (us * (2 - apha + Sqr(apha ^ 2 + 4 * beta ^ 2))))
nhưng phải nhỏ hơn 3.8*sqr(E/f)
Mong các bạn giúp mình.Chân thành cảm ơn trước.
Function bb(E As Double, m As Double, lda1 As Double, beta As Double, f As Double, apha As Double, us As Double)
If apha <= 0.5 And lda1 < 2 And m >= 1 Then
bb = (1.3 + 0.15 * lda1 ^ 2) * Sqr(E / f)
ElseIf apha <= 0.5 And lda1 >= 2 And m >= 1 Then
bb = WorksheetFunction.Min((1.2 + 0.35 * lda1), 3.1) * Sqr(E / f)
ElseIf apha >= 1 Then
bb = WorksheetFunction.Min(4.35 * Sqr((2 * apha - 1) * E / (us * (2 - apha + Sqr(apha ^ 2 + 4 * beta ^ 2)))), 3.8 * Sqr(E / f))
Else
bb = Empty
End If
End Function
thể hiện bởi câu lệnh sau (sử dụng hàm Min trong Excel để tìm giá trị nhỏ hơn trong 2 giá trị: (1.2 + 0.35 * lda1) * Sqr(E / f) và 3.1*sqr(E/f)):bb = (1.2 + 0.35 * lda1) * Sqr(E / f) nhưng phải nhỏ hơn 3.1*sqr(E/f)
bb = WorksheetFunction.Min((1.2 + 0.35 * lda1), 3.1) * Sqr(E / f)
Làm gọn Function của bạn một xíu:
Giải thích:PHP:Function bb(E As Double, m As Double, lda1 As Double, beta As Double, f As Double, apha As Double, us As Double) If apha <= 0.5 And lda1 < 2 And m >= 1 Then bb = (1.3 + 0.15 * lda1 ^ 2) * Sqr(E / f) ElseIf apha <= 0.5 And lda1 >= 2 And m >= 1 Then bb = WorksheetFunction.Min((1.2 + 0.35 * lda1), 3.1) * Sqr(E / f) ElseIf apha >= 1 Then bb = WorksheetFunction.Min(4.35 * Sqr((2 * apha - 1) * E / (us * (2 - apha + Sqr(apha ^ 2 + 4 * beta ^ 2)))), 3.8 * Sqr(E / f)) Else bb = Empty End If End Function
thể hiện bởi câu lệnh sau (sử dụng hàm Min trong Excel để tìm giá trị nhỏ hơn trong 2 giá trị: (1.2 + 0.35 * lda1) * Sqr(E / f) và 3.1*sqr(E/f)):
Cái này ý mình là:
ElseIf apha <= 0.5 And lda1 >= 2 And m >= 1 Then
bb =(1.2 + 0.35 * lda1)* Sqr(E / f)
Nếu giá trị này lớn hơn 3.1*Sqr(E / f) thì báo lỗi chứ không phải láy giá trị nhỏ trong 2 giá trị đó
ElseIf apha >= 1 Then
bb =4.35 * Sqr((2 * apha - 1) * E / (us * (2 - apha + Sqr(apha ^ 2 + 4 * beta ^ 2))))
Nếu giá trị này lớn hơn 3.8*Sqr(E / f) thì báo lỗi chứ không phải láy giá trị nhỏ trong 2 giá trị đó
Mong các bạn sửa giùm mình.Chân thành cảm ơn.