将公式插入单元格并向下延伸到最后一行

时间:2017-01-20 01:43:19

标签: excel-vba excel-formula vba excel

任何人都在这里帮助我,我收到了运行时错误' 1004'。应用程序定义或对象定义的错误。

我收到错误:lastrow = Sheets(" CATAN")。Cells(Rows.Count," F")。End(x1Up).Row

Dim lastrow As Long
lastrow = Sheets("CATAN").Cells(Rows.Count, "F").End(x1Up).Row
Sheets("CATAN").Range("E:E").Locked = False
Sheets("CATAN").Range("E1").Select

ActiveCell.Formula = "=F1&""&G1"
Sheets(Catan).Range("E1").AutoFill Destination:=Range("E1:E" & lastrow), Type:=xlFillDefault

Sheets("CATAN").Range("E:E").Locked = True

第1行的数据是

  A       |          B           |          C             |         D  |     E       |          F             |       G 100     |  492935.7   |     6898792     |     56.707    |               |        %PO         |  AB9265 101     |  492937.7    |     6898796     |     56.862    |   |          NS          |

所以我无法解决我的错误。

3 个答案:

答案 0 :(得分:3)

如评论中所述:

L中的小写1代替xlUp

您无需解锁并重新锁定单元格,只需确保单页不受保护。

您可以使用R1C1表示法一次性设置公式。

Dim lastrow As Long
lastrow = Sheets("CATAN").Cells(Rows.Count, "F").End(xlUp).Row
Sheets("CATAN").Range("E1:E" & lastrow).FormulaR1C1 = "=RC[1] & RC[2]"

答案 1 :(得分:3)

您可以使用1行代码执行此操作:

Sheets("CATAN").Range("E1:E" & Sheets("CATAN").Range("F" & Rows.Count).end(xlup).row).formula = "=F1 & "" "" & G1"

它足够聪明,知道你想根据行增加。

我以为你想在F1和G1的结果之间留一个空格

答案 2 :(得分:1)

请参阅the answer by Scott Craner以获得更好的方法来实现您的代码,但我会留下以下内容,以便您了解自己的错误,以便您(以及其他人)将来可以避免这些错误。< / p>

你有一个拼写错误 - x1Up而不是xlUp

您的代码中还有其他几个错误,修复如下:

Dim lastrow As Long
'Fix typo and specify which sheet "Rows" refers to
lastrow = Sheets("CATAN").Cells(Sheets("CATAN").Rows.Count, "F").End(xlUp).Row
Sheets("CATAN").Range("E:E").Locked = False
Sheets("CATAN").Range("E1").Select

'=F1&"&G1 is not a valid Excel formula 
ActiveCell.Formula = "=F1&G1"

'Variable Catan not defined - I assume you mean the string "CATAN"
Sheets("CATAN").Range("E1").AutoFill Destination:=Range("E1:E" & lastrow), Type:=xlFillDefault

Sheets("CATAN").Range("E:E").Locked = True