2009-10-12 2 views
0

я упростить это, например, радиИспользуя формулу из другого столбца в Excel

У меня есть формула в колонке B, которая является Ах + 2,

например в B1, это A1 + 2 в B2, это A2 + 2

Я хочу сделать формулу в столбце Y, которая всегда отражает любую формулу в столбце B, но заменяет A в формуле на X.

eg в Y1, это X1 + 2 в Y2, это X2 + 2

Независимо от того, что происходит с формулой в столбце B, я хочу, чтобы формула в Y отражала эти изменения.

Фактически, если бы я мог сделать что-то похожее на = B1.formula.replace («A», «X»), то это сделало бы работу.

Можно ли это сделать в строке формул вверху или это нужно сделать с помощью макроса?

Благодаря

ответ

1

Вот решение

Sub Button1_Click() Dim сек As String

з = Диапазон ("b2"). Формула

Dim разреш As String Рез = Replace (с, "А", "х")

MsgBox Рез

End Sub

+0

Спасибо, я начал спускаться по этому маршруту, но затем заметил ответ выше, который подходит мне лучше, так как это произойдет каждый раз, когда я открываю электронную таблицу – Graeme

+0

также попробуйте это событие -> Worksheet_Calculate() –

+0

Еще лучше спасибо! Знаете ли вы ответ на мой вопрос выше? Я могу реплицировать формулу автоматически из одного столбца в другой, но на самом деле затем заменить один из столбцов refs в формуле на другой, как это сделать? Должен ли я просто делать цикл for по строкам, заменяющим его, или есть способ, которым я могу это сделать на Range? Спасибо – Graeme

1

Выберите B, скопируйте столбец, выберите Y и "вставить специальный" выбор формулы только должны сделать работу

После Вашего комментария:

Private Sub Workbook_Open() 
    Range("Y:Y").FormulaR1C1 = Range("B:B").FormulaR1C1 
End Sub 

будет выполнять работу (макрос вставить в эту книгу)

После вашего второго комментария:

Sub Workbook_Open() 
    On Error GoTo errLbl 
    xlCalc = Application.Calculation 
    Application.Calculation = xlCalculationManual ' stop calculation ' 
    Application.ScreenUpdating = False ' disable screen update ' 

    For Each c In Range("B:B") 
     Range("Y" & c.Row).Formula = Replace(c.Formula, "A", "D") 
     If c.Formula = vbNullString Then Exit For ' stop if "B" has no formula ' 
    Next 

errLbl:  
    Application.ScreenUpdating = True ' enable screen update ' 
    Application.Calculation = xlCalc ' enable calculation back to where it was ' 
End Sub 
+0

Спасибо, это хорошее решение, но означало бы, что после копирования будет возвращена исходная формула, поэтому, если это изменится, формула столбца Y не будет отражать изменения. Можно ли динамически ссылаться на формулу в столбце B? – Graeme

+0

Да, метод копирования - это один снимок, который я редактировал, чтобы добавить динамический путь. – 2009-10-12 10:07:40

+0

Это хорошая идея сделать это на открытой книге - как бы я заменил формулу? Когда я сделал код выше, формула была переведена в другой столбец, и поэтому я хотел бы изменить столбец Q как столбца X. Может ли замена использоваться при обращении к диапазонам? – Graeme

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