我正在尝试打开一个excel文件,并将所有单元格替换为带有“x”的数值。
也就是说,不同周的model_abc的1..9应该替换为“x”,与model_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。有一个更好的方法吗?可以加快速度,同时保持跟上未来扩展的灵活性吗?
谢谢!
答案 0 :(得分:2)
如果数值是类型化数据而不是公式的结果,则不需要循环:
Sub TheXFactor()
Dim r As Range
Set r = Range("A3:XFD200").Cells.SpecialCells(xlCellTypeConstants, xlNumbers)
r.Value = "x"
End Sub