2013-08-09 2 views
1

Я здесь ухватился за соломинку, поэтому любая помощь будет большой (т. Е. Я понятия не имею, что я делаю с VBA).Goal Seek Macro with Goal как формула

Я пытаюсь решить проблему циклических ссылок в Excel, создавая цель искать макрос - в основном

  1. S3 = M + S2,
  2. S3 = L * G.

Я хочу цели искать S3 равным L * G путем изменения М.

Итак, я поставил

  • L * G в клетке H32,
  • S3 в H18,
  • M in G18,
  • S2F18

и это то, что я собрал до сих пор.

Sub GoalSeek() 
Dim x As Integer 
x = Range("H32").Value  
Range("H18").GoalSeek Goal:=x, ChangingCell:=Range("G18")  
End Sub 

Я получаю ошибку «Ссылки недействительны», идеи? Спасибо!

ответ

4

GOALSEEK выдаст ошибку «Invalid Reference», если ячейка GOALSEEK содержит значение, а не формула или если ChangingCell содержит формулу вместо значения или ничего.

Ячейка GoalSeek должна содержать формулу, прямо или косвенно ссылающуюся на ChangeCell; если эта формула каким-либо образом не ссылается на ChangeCell, GoalSeek либо не может сходиться к ответу, либо может дать бессмысленный ответ.

Я проверил ваш код с другой формулой GoalSeek, чем ваш (я не совсем понял, относятся ли некоторые из терминов к ячейкам или значениям).

Для теста я установил:

the GoalSeek cell H18 = (G18^3)+(3*G18^2)+6 
    the Goal cell  H32 = 11 
    the ChangingCell G18 = 0 

Код был:

Sub GSeek() 
    With Worksheets("Sheet1") 
     .Range("H18").GoalSeek _ 
     Goal:=.Range("H32").Value, _ 
     ChangingCell:=.Range("G18") 
    End With 
End Sub 

А код произвел (правильный) ответ 1.1038, значение G18, при котором формула H18 дает значение 11, цель, которую я искал.

+0

Спасибо! Я могу следить за первой частью этого, но я думаю, что причина, по которой мой код не работает, может заключаться в том, что моя ячейка цели содержит формулу, а не значение? – Natalie

+0

Как и ARIch, я думаю, проблема в том, что ячейка H18 не содержит формулу. Я добавил код, который использовал для моего ответа. Этот код тоже работает: Sub GSeek2() Dim х As Integer х = Range ("H32") Значение Range ("H18") GOALSEEK Цель:.. = Х, ChangingCell: = Range ("G18") End Sub – chuff

+0

Чтобы продолжить, единственные времена, когда я мог получить GoalSeek, чтобы вызвать недопустимую ошибку ссылки, заключались в том, что ячейка цели * * не содержала формулу или когда ChangingCell * * содержала формулу. – chuff

0

Я думаю, что ваша проблема в том, что Range("H18") не содержит формулы. Кроме того, вы можете сделать свой код более эффективным, исключив x. Вместо этого, изменить свой код

Range("H18").GoalSeek Goal:=Range("H32").Value, ChangingCell:=Range("G18") 
+0

Извините, мой первоначальный пост был путаным - H18 (ячейка поиска цели) содержит «= F18 + G18», а ячейка цели (H32) содержит другую формулу. Можно ли использовать ссылку на ячейку непосредственно в качестве цели, если она содержит формулу, а не значение? – Natalie

Смежные вопросы