Как указано в комментариях, вы можете воспользоваться подходом, рекомендованным Дамианом, и использовать условные выражения во всех соответствующих ячейках. Общее условное выражение будет
=IF(A1="InputA",FORMULA INPUTA,FORMULA INPUTB)
. Эта формула делает A1
ячейкой, которая решает, какой вход извлекать. Это приведет к тому, что изменение порядка 350 000 выходных формул в вашей рабочей книге станет узким местом, следующий макрос позаботится об изменении всех формул для сохранения условного выражения:
Sub changeFormulas()
Dim rng As Range, cll As Range
Set rng = shOutput.Range("A2:C10") 'Your relevant worksheet and range here
Dim aStr As String, bStr As String, formulaStr As String
aStr = "InputA"
bStr = "InputB"
For Each cll In rng
If cll.HasFormula And InStr(1, cll.Formula, aStr, 1) Then
formulaStr = Right(cll.Formula, Len(cll.Formula) - 1)
cll.Formula = "=IF(A1=" & Chr(34) & aStr & Chr(34) & "," & formulaStr & "," & Replace(formulaStr, aStr, bStr) & ")" 'Change A1 to the reference most suited for your case
End If
Next cll
End Sub
Это может занять некоторое время, посколькучтобы получить доступ ко всем соответствующим ячейкам одна за другой, но он будет запускаться только один раз.
Объяснить: Этот макрос пройдет через все ячейки в вашем диапазоне rng
, указанном вверху. Если в ячейке есть формула и формула содержит "InputA"
, она изменит эту формулу, чтобы она соответствовала обобщенному условному условию (конечно же, с помощью собственной формулы ячейки). Chr(34)
- это кавычка "
, я нахожу использование Chr(34)
более читабельным, чем несколько кавычек """
, но это всего лишь предпочтение.