PDA

View Full Version : hàm if trong excel



hung1981
08-07-07, 10:24 AM
mình làm trong excel hay dùng hàm if để tính thử dần một bài toán để thoả mãn giá trị "Q" cho trước nào đó
vd: if(Qtt<Q;hgt+0.00001;hgt-0.00001)
với điều kiện: gán trước hgt một giá trị, gán h = hgt, Q=f(h)
khi tính mình dùng phím F9 để chạy hàm if trên nhưng nó hay bị NUM bạn nào có thể giúp mình thành lập 1 macro thay thế cách làm trên không
xin cảm ơn rất nhiều
Mình muốn tìm được
mình có file đính kèm @#!^%

hung1981
11-07-07, 11:57 AM
sao không có ai giúp mình thế

Nguyễn Duy Tuân
11-07-07, 12:51 PM
Chưa ai trả lời bạn có lẽ vì họ không rõ về mục đích và yêu cầu của bạn.

phamduylong
11-07-07, 04:24 PM
mình làm trong excel hay dùng hàm if để tính thử dần một bài toán để thoả mãn giá trị "Q" cho trước nào đó
vd: if(Qtt<Q;hgt+0.00001;hgt-0.00001)@#!^%
Bạn thử thủ công để tìm nghiệm ! Bái phục bạn thật. Tôi viết macro cho bạn thử, nó sẽ quay vòng 10.000 lần để tìm kết quả, nếu có kết quả sẽ thông báo cho bạn biết. Nếu không, bạn cho giá trị khác để thử lại.
Bạn bấm Ctrl+Shift+T để chạy macro



Sub TimNghiem()
'
' TimNghiem Macro
' Macro recorded 11/07/2007 by User
'
' Keyboard Shortcut: Ctrl+Shift+T
'
Dim h As Double, h1 As Double, hh As Double
h = Range("a16")
n = 1
Do
h1 = h + 0.00001
Range("B16") = h1
hh = Abs(Range("H16") - Range("E3"))
If hh < 0.0001 Then 'Sai so +/- 0,0001
MsgBox "Tim ra ket qua"
Exit Do
End If
h = h1
n = n + 1
If n = 10000 Then Exit Do 'Quay vong toi da 10.000 lan
Loop
End Sub

Bạn có thể chỉnh lại 2 số 0.0001 hoặc 10000 theo yêu cầu của bạn.

hung1981
13-07-07, 12:30 PM
minh đã thử bài giải của bạn rồi
cảm ơn bạn rất nhiều
nhưng bạn có thể viết thành 1 function không để tính tổng quát cho mọi trường hợp

phamduylong
20-07-07, 06:16 PM
minh đã thử bài giải của bạn rồi
cảm ơn bạn rất nhiều
nhưng bạn có thể viết thành 1 function không để tính tổng quát cho mọi trường hợp
Bạn kiểm tra lại phần yêu cầu và phần công thức tính của bạn, tôi thấy 2 phần không kớp nhau. Bạn chỉnh lại, từ đó mới viết hàm được

hung1981
28-07-07, 08:58 PM
Bạn kiểm tra lại phần yêu cầu và phần công thức tính của bạn, tôi thấy 2 phần không kớp nhau. Bạn chỉnh lại, từ đó mới viết hàm được hàm mình cần viết cũng không phức tạp lắm về nội dung nhưng khó về cách triển khai cú pháp VBA
mình có file kèm theo
mong các anh trong diễn đàn chỉ giúp

phamduylong
01-08-07, 10:05 AM
mình làm trong excel hay dùng hàm if để tính thử dần một bài toán để thoả mãn giá trị "Q" cho trước nào đó
vd: if(Qtt<Q;hgt+0.00001;hgt-0.00001)
với điều kiện: gán trước hgt một giá trị, gán h = hgt, Q=f(h)
khi tính mình dùng phím F9 để chạy hàm if trên nhưng nó hay bị NUM bạn nào có thể giúp mình thành lập 1 macro thay thế cách làm trên không
xin cảm ơn rất nhiều
Mình muốn tìm được
mình có file đính kèm @#!^%
Viết hàm theo yêu cầu của bạn không khả thi, vì hàm trả về kết quả của một số đối số theo quy trình tính toán cụ thể chứ không thể tổng quát được !.
Nhưng Excel có công cụ Goal Seek tìm giá trị của một đối số để kết quả là một giá trị cho trước. Bạn xem ví dụ từ một đề bài tập:
Các đối số x, a, b, c, d cho trước. y=ax²+bx+c.
1. Tính y biết x=2, a=3, b=1, c=4 (kết quả y=18)
2. Tính x để y=20 ? (kết quả x=2,148741)
Giải:
Câu 1. nhập x=2, a=3, ... vào các ô theo thứ tự A2, B2, C2, D2. Tại ô E2 nhập công thức =B2*A2^2+C2*A2+D2 để tính y.
Câu 2. Chọn Tools > Goal Seek > nhập vào form Goal Seek:
- Set cell: E2 (ô chứa kết quả y)
- To value: 20 (y=20)
- By change cell: A2 (ô chứa giá trị x)
Chọn OK > xuất hiện form kết quả Goal seek Status > chọn OK
ô A2 được Goal Seek sửa lại là 2,148741 để y có kết quả là 20.
Chúc bạn thành công !

hung1981
02-08-07, 12:14 PM
goal seek mình thử rồi
nhưng mình muốn tự động
cảm ơn bạn rất nhiều
để mình nghiên cứu xem tiếp thử