Đăng ký học Excel và VBA cùng GPE tháng 11 - TPHCM

Mua sách "VBA trong Excel - Cải thiện và tăng tốc" tái bản

hàm if trong excel

Thảo luận trong 'Excel và Kỹ Thuật' bắt đầu bởi hung1981, 8 Tháng bảy 2007.

  1. hung1981

    hung1981 Thành viên mới

    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 @#!^%
     

    Các file đính kèm:

  2. hung1981

    hung1981 Thành viên mới

    sao không có ai giúp mình thế
     
  3. Nguyễn Duy Tuân

    Nguyễn Duy Tuân Nghị Hách

    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.
     
  4. phamduylong

    phamduylong Thành viên danh dự

    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

    Mã:
    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.
     

    Các file đính kèm:

  5. hung1981

    hung1981 Thành viên mới

    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
     
  6. phamduylong

    phamduylong Thành viên danh dự

    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
     
  7. hung1981

    hung1981 Thành viên mới

    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
     

    Các file đính kèm:

  8. phamduylong

    phamduylong Thành viên danh dự

    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 !
     
  9. hung1981

    hung1981 Thành viên mới

    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ử
     

Chia sẻ trang này