我正在尝试将原始Excel文件转换为自定义格式。我在下面添加了一张图片,因此更容易解释。我也将这些要求作为步骤来解决。
1)我需要摆脱包括“Importo”或“Prezzo”在内的所有列 2)我需要从剩余的列(Quantitá)中提取日期。首先,我在顶部插入一个空行然后我应用右(单元格,7)。
到目前为止,这么好。 然后我想自动填充剩余的列,但我得到1004错误。在我从J:O尝试的示例代码中,但是真正的id需要它从J到最后一列。我发布了代码(直到最后一行)。
我实际上想知道Autofilling是否是最好的做法,也许索引虽然会更好?
Sub delete_col()
Dim A As Range
Do
Set A = Rows(1).Find(What:="Importo", LookIn:=xlValues, lookat:=xlPart)
If A Is Nothing Then Exit Do
A.EntireColumn.Delete
Loop
Do
Set A = Rows(1).Find(What:="Prezzo", LookIn:=xlValues, lookat:=xlPart)
If A Is Nothing Then Exit Do
A.EntireColumn.Delete
Loop
Rows("1:1").Select
ActiveCell.EntireRow.Insert
ActiveCell.Range("J1").Select
ActiveCell.FormulaR1C1 = "=RIGHT(R\[1\]C,7)"
Selection.AutoFill Destination:=ActiveCell.Range("J1:O1"), Type:=xlFillDefault
End Sub
答案 0 :(得分:2)
我认为在ActiveCell.FormulaR1C1 = "=RIGHT(R\[1\]C,7)"
行中,\
是一种拼写错误,应删除。
关于1004错误,在执行自动填充时最简单的解决方法是这样的:
Sub TestMe()
Range("A1:O1") = Range("J1")
End Sub
因此,Range("A1:O1")
中的每个值都将使用Range("J1")
中的值进行设置。
但是,您的代码使用了大量Select
,Activate
和ActiveCell
。尽量避免这些,因为它们在VBA中不被视为良好实践,并可能导致不同的错误。 How to avoid using Select in Excel VBA