Có cách nào để Excel tự chọn giá trị để tính toán theo điều kiện không?

Liên hệ QC

duchunglda

Thành viên mới
Tham gia
30/11/07
Bài viết
18
Được thích
0
Cần chỉ giúp

tôi chỉ mới bắt đầu nghiên cứu excel thôi. nay gắp phải vướng mắc sau, mong các bạn chỉ dẫn. cảm ơn rất nhều.
tôi có 1 bài toán như sau:
đầu tiên là chọn 1 giá trị A ( vd: A biến thiên từ 1-10). sau các công thức tính toán sẽ co được giá trị B.
điều kiện là A=B thi chọn gia trị A đẻ tính. nếu A <> B thì chọn lai A sao cho bắt buộc A=B.
vậy co cách nào để excel tự chọn A cho mình hay kô?
xin các bạn chỉ dẫn. cảm ơn.
 
Chỉnh sửa lần cuối bởi điều hành viên:
điều kiện là A=B thi chọn gia trị A đẻ tính. nếu A <> B thì chọn lai A sao cho bắt buộc A=B.

oh, hình như đ/k có vấn đề vì -> dù bất cứ trường hợp nào đều chọn A, xem lại bạn nhé

tốt nhất bạn upload file dữ liệu (có thể vd cũng được) và công thức qhe, cùng với các đ/k ràng buộc, y/c cùng bài toán -> mọi thành viên sẽ giúp ngay,
 
OK. nhung lam sao de upload file len bay gio?
Có nghĩa là nếu A=B thi kết quả bài toán la đúng.
nếu A<>B thì kết quả sai. càn chọn lại sao cho A=B
 
Lần chỉnh sửa cuối:
đây là bài toán nè
mình ko gưi được. ko hiểu sao nữa
file mình gửi tới 880kb, nhung chỉ cho co 97 kb a
lien he: duchunglda@yahoo.com.vn
cam on
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn thêm and vào là OK
=IF(AND(V13="LTB",O13=P13),AA13,W13)
Mến!
 
mình muốn lập 1 hàm sao cho excel tự lựa chọn giá tri A cho mình. (excel tự dò tìm).
điều kiện là A phải bằng B. nếu A khác B thì excel phải dò tìm lại giá trị A.
và cuối cùng la A phải bằng B
 

File đính kèm

Lần chỉnh sửa cuối:
duchunglda đã viết:
đây là bài toán nè
mình ko gưi được. ko hiểu sao nữa
file mình gửi tới 880kb, nhung chỉ cho co 97 kb a
lien he: duchunglda@yahoo.com.vn
cam on
oh, bạn muốn lập hàm thì ng lập phải rõ về quan hệ B & A

Tuy vậy bài toán của bạn là thử dần - thử dần giá trị A để sao cho A=B mà B phụ thuộc giá trị A->và trong excel bạn dùng Goalseek, cụ thể:

- bạn tạo thêm 1 ô C (ký hiệu là C): có giá trị là: =A-B (ví dụ tại AC9: =O9-P9 ), như vậy để thỏa mãn đ/k thì g/trị C phải =0, và dùng Goalseek để thử dần tìm giá trị A:
+ đặt con trỏ vào ô giá trị C (như ô AC9 chẳng hạn)
+ vào Tool \ Goalseek sau đó chọn: Set cell: chính là ô giá trị C (như AC9 trong ví dụ) To value là 0, By chaging cell: là ô chứa giá trị thay đổi A (là ô O9 trong vd)
+ bấm OK sẽ có kết quả


SA_DQ đã viết:
Hình như bạn chưa nêu hết những giả thiết cần để đến kết luận;
Chẳng hạn A tiến đến B; nhưng mặt khác bạn lại cho B thay đổi, nhưng không rõ nó thay đổi như thế nào cả;
Tóm lại mình hơi bị ngu nên đọc hoài vẫn không thấy cách nào tìm sự phụ thuộc A hay B vô cái chi!
__________________
thử thay đổi giá trị A sẽ thấy B thay đổi ngay mà, như vậy B phụ thuộc giá trị A
 
Lần chỉnh sửa cuối:
Mình đã làm theo bạn TigerTiger. Đúng cái này là thứ mình cần tìm. nhưng mình muốn hỏi bạn thêm để mở rộng thêm như sau:
- vì công thức của mình lập nó còn liên quan tới các đại lượng khác nữa nên khi thay đổi 1 đại lượng khác thì B thay đồi nhưng A lại ko thay đổi theo. nếu muốn A = B thi lại phải Goalseek lại. vậy có hàm nào khắc phục nhược điểm này ko?
- hàm này kô thể copy xuống ô dưới được.
Mong bạn chỉ dẫn.
mình gửi lại file để bạn hiểu rõ hơn. Ô A9, B9 là các giá trị thay đổi. khi A9, B9 thay đồi thì giá trị B thay đổi, kéo theo giá trị A lại thay đổi. nhưng Goalseek ko tự động dò tìm lại giá trị A.
thanks!
 

File đính kèm

Ok lúc này bạn phải dùng VBA rui,

xem file gửi kèm

hoặc

bạn bấm phím Alt+F11 và copy các sub sau và sẽ thấy đạt ngay giờ bạn thay đổi các ô A9 hay B9, hay bất cứ ô nào là dữ liệu để tính B sẽ thấy đạt KQ ngay



PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    TimGoalSeek
End Sub


Sub TimGoalSeek()
    Dim iR As Integer

    For iR = 9 To 10
        Range("AC" & iR).GoalSeek Goal:=0, ChangingCell:=Range("O" & iR)
    Next iR
   
End Sub

lưu ý tôi mới viết sự thay đổi của các dữ liệu của 2 dòng 9 và 10 vì vậy nên có:
For iR = 9 To 10
<.............>

nếu bạn có nhiều dữ liệu (nhiều dòng) hơn thì thay đổi 2 số này (9 & 10) thành số mới cho hợp lý - Vd 9 và 15 chẳng hạn trong trường hợp có số liệu từ dòng 9 đến 15


chúc thành công
 

File đính kèm

Lần chỉnh sửa cuối:
tigertiger sửa 1 chút cho nhanh hơn:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    TimGoalSeek
End Sub



Sub TimGoalSeek()
    Dim iR As Integer
  
    For iR = 9 To 10
        Range("AC" & iR).GoalSeek Goal:=0, ChangingCell:=Range("O" & iR)
    Next iR
   
End Sub

lưu ý tôi mới viết sự thay đổi của các dữ liệu của 2 dòng 9 và 10 vì vậy nên có:
For iR = 9 To 10
<.............>

nếu bạn có nhiều dữ liệu (nhiều dòng) hơn thì thay đổi 2 số này (9 & 10) thành số mới cho hợp lý - Vd 9 và 15 chẳng hạn trong trường hợp có số liệu từ dòng 9 đến 15


__________________
mình đã làm như bạn chỉ dẫn nhưng mình nhập vào công thức tính thi vãn ko được. bạn có thể chỉ dẫn rõ cho mình thực hiện được kô? mình muốn tìm hieu về VBA thì có tài liệu nào ko?


Công thức nào cơ, bạn chỉ giá trị của các ô A9, B9 và A và B10 cơ mà => bạn thử down file mới về xem sao

nếu k bạn nói rõ -> vì theu hiểu của tigertiger đó là Các số liệu thay đổi -> B thay đổi làm cho B<>A ta phải tìm lại A sao cho B=A cơ mà - có nghĩa là bạn thay đổi các số liệu khác chứ k phải thay đổi A (vì A do máy tìm ra cơ mà) , k rõ có đúng ý bạn k???








 

File đính kèm

Lần chỉnh sửa cuối:
công thức bạn viết hoàn toàn chính xác. nhưng vì dung lượng file cần tính của mình khá lớn (khoảng 900KB) nên mình ko thể gửi kèm lên đây được. cho nên mình đã xóa bỏ những cột, hàng râu ria để file nhẹ hơn. Do đó khi mình nhập code này vào bài toán thì mình phải điều chỉnh 1 số ô cho đúng.
VD:
Private Sub Worksheet_Change(ByVal Target As Range)
TimGoalSeek
End Sub


Sub TimGoalSeek
()
Dim iR As Integer

For iR = 26 To 1000
Range
("AJ" & iR).GoalSeek Goal:=0, ChangingCell:=Range("O" & iR)
Next iR

End Sub


Ở đây mình thay thế : For iR =
9 To 10 thành For iR = 26 To 1000
và Range("AC" & iR).GoalSeek Goal:=0, ChangingCell:=Range("O" & iR) thành
Range("AJ" & iR).GoalSeek Goal:=0, ChangingCell:=Range("O" & iR)

nhưng sang bảng excel thì nó kô hiều VBA này.
Có phải mình đã làm thiếu bước gì kô?

 
file 900KB thì bạn có thể nén lại _> nhẹ lắm,

nếu k có gì là secret thì bạn cứ gửi lên,

PHP:
 Ở đây mình thay thế : For iR = 9 To 10 thành For iR = 26 To 1000
và Range("AC" & iR).GoalSeek Goal:=0, ChangingCell:=Range("O" & iR) thành 
Range("AJ" & iR).GoalSeek Goal:=0, ChangingCell:=Range("O" & iR)
bạn chỉ lưu ý khi đó AJ... phải là ô có công thức A-B (ta muốn ô này =0 để A=B) và O... là ô chưa giá trị A (đang tìm)
 
Lần chỉnh sửa cuối:
mình nhập đúng theo yêu cầu. nhưng khi chạy thi VBA báo lỗi ở hàng này: Range("AJ" & iR).GoalSeek Goal:=0, ChangingCell:=Range("O" & iR)
và lỗi Run time error 1004. chọn Debug thì công thức vẫn nhảy nhưng lại báo lỗi. và chỉ được cho 1 số hàng đầu thôi
 
Web KT

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

Back
Top Bottom