2016-03-28 44 views
-1

对不起,令人困惑的标题 我是VBA和宏的新手,我无法找到任何替换线程帮帮我。如何用列名称替换替换函数宏中的文本(例如,列“AY”)

我的工作簿包含每日预测的列和一个单独的列跟踪当前日与前一日预测之间的差异。

我使用相对引用来记录我当前的宏,以插入一个新列并将当前日期预测复制到新列中。

我希望创建另一个宏然后将取代的差异列的公式(例如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

回答

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 
+0

对不起,我应该已经更清楚了。我希望用任何新的列来替换硬性值或文本(AZ)。因此,假设我在第二天创建一个新列,我需要在“当前日期与上一日”列中的公式中将文本“AZ”切换为“BB”。 我正试图将这个实现为一个更大的宏,以便用户只需按下一个按钮即可设置新的一天。 – Paul