Vba 在大范围内替换Excel数值单元格值

Vba 在大范围内替换Excel数值单元格值,vba,excel,Vba,Excel,我正试图打开一个excel文件,并用“x”替换所有数值单元格 也就是说,在不同的周内,模型_abc的1..9应替换为“x”,与模型_123的11、14、17等相同。空单元格应单独保留 请注意,有隐藏的行和列,我也希望执行此替换 我写了下面这篇文章,看起来很有效,但是花了超过10分钟的时间看完整张纸。XFD200结束范围是任意选择的,以允许扩展——每周将添加一列,将来可能会添加一些行 Sub RemoveCellValues(excel_filename As String) Dim

我正试图打开一个excel文件,并用“x”替换所有数值单元格

也就是说,在不同的周内,模型_abc的1..9应替换为“x”,与模型_123的11、14、17等相同。空单元格应单独保留

请注意,有隐藏的行和列,我也希望执行此替换

我写了下面这篇文章,看起来很有效,但是花了超过10分钟的时间看完整张纸。XFD200结束范围是任意选择的,以允许扩展——每周将添加一列,将来可能会添加一些行

Sub RemoveCellValues(excel_filename As String)

    Dim xlApp As Excel.Application
    Dim excelWkBk As Excel.Workbook

    Set xlApp = Application.CreateObject("Excel.Application")
    With xlApp
        .Visible = True
        Set excelWkBk = xlApp.Workbooks.Open(excel_filename)
        With excelWkBk         

            Dim rng As Range
            Dim r   As Range

            Set rng = .Worksheets(1).Range("A3:XFD200")
            For Each r In rng
                If Not IsEmpty(r.Value) Then
                    If IsNumeric(r.Value) Then
                        Debug.Print "Cell value " & r.Value & " " & r.Row & " " & r.Column
                        r.Value = "x"
                    End If
                End If
            Next r            

            .Save
            .Close
        End With
    End With

    '' quit excel application
    xlApp.Quit

End Sub
正如您可能知道的,这是我第一次尝试VBA和Excel。有更好的方法吗?在保持灵活性以跟上未来扩张的同时,是否可以加快速度


谢谢

如果数值是类型化数据,而不是公式的结果,则不需要循环:

Sub TheXFactor()
    Dim r As Range
    Set r = Range("A3:XFD200").Cells.SpecialCells(xlCellTypeConstants, xlNumbers)
    r.Value = "x"
End Sub

谢谢你的回复。看起来带“Total”的列和行是公式。您的建议导致我出现此错误:
无法获取Range类的SpecialCells属性
。这是因为公式吗?我在复制你的代码时出错了。它现在可以工作了,而且速度非常快。谢谢