2016-03-28 55 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