【问题标题】:Using Worksheets. .Replace function for specific cell instead of entire column/row使用工作表。 .替换特定单元格而不是整个列/行的函数
【发布时间】:2016-07-21 18:02:17
【问题描述】:

以下代码适用于替换整个列中的特定值:

Worksheets("Sheet1").Columns(MyColumnLetter).Replace _
what:=val_Old, Replacement:=val_New, lookat:=xlWhole, _
SearchOrder:=xlByColumns, MatchCase:=False

但是,我只需要替换特定单元格中的值(例如,在作为 vba 循环的一部分的单元格“D9”中)而不是整个列或单元格范围。

任何人都可以建议对上面的代码进行必要的修改吗?

谢谢。

【问题讨论】:

  • 仅替换 D9 中的值使用 Worksheets("Sheet1").Range("D9").Replace _ what:=val_Old, Replacement:=val_New, lookat:=xlWhole, _ SearchOrder:=xlByColumns, MatchCase:=False 。你想循环整个 D 列?
  • 点赞 Worksheets("Sheet1").Cells(9, 4).Replace "hello", "good"Worksheets("Sheet1").Cells(9, 4).Replace "old value", "new value"

标签: vba excel replace


【解决方案1】:

替换一个单元格A2中的值:

Range("A2").Replace oldValue, newValue 

替换范围内的值:

Range("A2:A10").Replace oldValue, newValue

【讨论】:

    【解决方案2】:

    如果你想遍历整个 D 列(直到最后一行):

    Option Explicit
    
    Sub Replace_ColumnD()
    
    Dim sht1 As Excel.Worksheet
    Dim LastRow As Long
    Dim lrow As Long
    Dim val_new As String
    Dim val_old As String
    
    
    Set sht1 = ActiveWorkbook.Worksheets("Sheet1")
    LastRow = sht1.Cells(sht1.Rows.Count, "D").End(xlUp).Row
    
    For lrow = 1 To LastRow
         sht1.Cells(lrow, 4).Replace val_old, val_new
    Next
    
    End Sub
    

    【讨论】:

      【解决方案3】:

      谢谢各位。这确实很有帮助。 最后代码如下:

      For i = 2 To LastRow
      
      MyRange = MyColumnLetter & i
      
      If....condition met:
         Worksheets("Sheet1").Range(MyRange).Replace val_Old, val_New
      End If
      
      Next
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-21
        • 2014-10-02
        • 1970-01-01
        • 2021-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-28
        相关资源
        最近更新 更多