Excel formula 使用Excel中另一列的公式

Excel formula 使用Excel中另一列的公式,excel-formula,excel-2003,excel,vba,Excel Formula,Excel 2003,Excel,Vba,举个例子,我会简化它 我在B列有一个公式,它是Ax+2 e、 在B1中,它是A1+2 在B2中,它是A2+2 我想在Y列中建立一个公式,它始终反映B列中的任何公式,但用X替换公式中的a e、 在Y1中,它是X1+2 在Y2中,它是X2+2 无论B列中的公式发生什么变化,我都希望Y列中的公式反映这些变化 实际上,如果我能做一些类似于=B1.formula.replace(“A”,“X”)的事情,那就可以了 这可以在顶部的公式栏中完成,还是需要通过宏来完成 谢谢选择B,复制列,选择Y并“粘贴特殊”选

举个例子,我会简化它

我在B列有一个公式,它是Ax+2

e、 在B1中,它是A1+2 在B2中,它是A2+2

我想在Y列中建立一个公式,它始终反映B列中的任何公式,但用X替换公式中的a

e、 在Y1中,它是X1+2 在Y2中,它是X2+2

无论B列中的公式发生什么变化,我都希望Y列中的公式反映这些变化

实际上,如果我能做一些类似于=B1.formula.replace(“A”,“X”)的事情,那就可以了

这可以在顶部的公式栏中完成,还是需要通过宏来完成


谢谢

选择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
这是解决办法

子按钮1\u单击() 像线一样变暗

s=范围(“b2”)。公式

作为字符串的Dim res res=替换(s,“A”,“x”)

MSGBoxRes


End Sub

谢谢,这是一个很好的解决方案,但这意味着一旦复制,就不会引用原始公式,因此如果更改,那么Y列公式将不会反映更改。是否可以动态引用B列中的公式?是的,复制方法是一次性的,我编辑以添加动态方式。在打开的工作簿上这样做是个好主意-我将如何替换公式?当我编写上述代码时,公式被转换为另一列,因此我想将列Q更改为列X。在引用范围时可以使用替换吗?我发布的代码使用R1C1坐标中的公式,即公式中的每个引用的形式为“N col/row before/after”(在您提供的示例中为“B”=“A”)+2然后被解释为“B”=上一列+2)如果你需要更复杂的内容(例如“Y”=下一列+2),你需要使用上面贴的替换啊,我明白了,是的,很抱歉,我的简单示例有点令人不快,因为列的位置相距不同。我可以解决这个问题,也许只是为了让它更容易!谢谢谢谢,我开始沿着这条路线走,但后来注意到上面的答案更适合我,因为每次我打开电子表格时都会出现这种情况。还可以尝试此活动->工作表\计算()更好谢谢!你知道我上面问题的答案吗?我能够自动地将公式从一列复制到另一列,但要将公式中的一个列引用替换为另一个列引用,我该怎么做?我是否只需要对替换它的行执行for循环,还是有一种方法可以在一个范围内执行此操作?谢谢,我认为循环可以完成这项任务