如何使用列名替换替换函数宏中的文本(例如“AY”列)

时间:2016-03-28 06:45:55

标签: excel vba excel-vba macros

对于令人困惑的标题感到抱歉, 我是VBA和宏的新手,我找不到任何可以帮助我的替换线程。

我的工作簿按列保存每日预测,另外一列会跟踪当前日期与前一天预测之间的差异。

使用相对引用记录我当前的宏以插入新列,并将当前预测值复制到新列。

我希望创建另一个宏,然后将差异列中的公式(例如BB10- AY 10)替换为新列(BB10- AZ 10但是,在记录的宏中,这些文本字符串似乎是硬值。

VBA:

Sub Test()
     ' Test Macro '
     ' ActiveCell.Offset(-8, -4).Range("A1").Select Selection.Copy ActiveCell.Offset(0, 1).Range("A1").Select 
     Application.CutCopyMode = False 
     Selection.Copy ActiveCell.Offset(0, 7).Columns("A:A").EntireColumn.Select 
     Selection.Replace What:="AY", Replacement:="AZ", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
     ReplaceFormat:=False ActiveCell.Offset(10, -4).Range("A1").Select 
     Application.CutCopyMode = False 
 End Sub

有人能指出我正确的方向来解决这个问题吗?

-PN

1 个答案:

答案 0 :(得分:0)

遍历单元格中的字符串并使用替换函数,例如:

For Each Cell In Selection
    Cell.Value = Replace(Cell.Value, "AY", "AZ")
Next Cell

*****更新*****

将rngSrc设置为所需列中的单元格

Sub ReplaceText()
    Dim rngSrc As Range: Set rngSrc = Range("AZ1")
    Dim Adr As String: Adr = Right(rngSrc.Address, Len(rngSrc.Address) - 1)
    Dim ColLetter As String: ColLetter = Left(Adr, InStr(Adr, "$") - 1)
    For Each Cell In Selection
        Cell.Formula = Replace(Cell.Formula, "AY", ColLetter)
    Next Cell
End Sub