我使用以下宏将文本转换为正确的格式。我选择一个单元格并运行宏。假设列A包含3个已填充的行(例如A1,A2和A3,我想将公式PROPER应用于列B1,B2和B3,B1是我的活动单元格。当我运行宏时,需要很长时间才能自动填充选择B1到B3时,宏考虑的行数直到工作表的末尾而不是A列中的行数。请建议如何解决有关自动填充目标的问题。
Sub Macro7()
'
' Macro7 Macro
'
' Keyboard Shortcut: Ctrl+Shift+V
'
ActiveCell.FormulaR1C1 = "=PROPER(RC[-1])"
ActiveCell.Select
**Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))**
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Offset(0, -1).Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub
答案 0 :(得分:0)
假设您的数据在A1中开始,并且您希望将公式放在B列中,则可以使用以下内容(请注意删除.Select
)
Sub macro7()
Dim lastRow as integer
lastRow = Activesheet.usedrange.rows.count
Range("B1").Formular1c1 = "=Proper(RC[-1])"
Range("B1").AutoFill Destination:=Range(Cells(1,2),Cells(lastRow,2))
Range(Cells(1,2),Cells(lastRow,2)).Copy
Range(Cells(1,2),Cells(lastRow,2)).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range(Cells(1,1),cells(lastRow,1)).ClearContents
End sub
但是,如上所述,为什么你想将它作为宏?除非更多地添加,否则在单元格中使用=Proper(a1)
并在没有VBA的情况下自动填充可能更快更容易。