在Excel VBA中,最后一行向上而不是向下
这是我的代码,有点不对劲,虽然它确实有效,但不是我想要的方式在Excel VBA中,最后一行向上而不是向下,excel,vba,Excel,Vba,这是我的代码,有点不对劲,虽然它确实有效,但不是我想要的方式 Option Explicit Sub ONJL() Dim lastrow As Long Dim wsPAR As Worksheet 'PAERTO Dim wsRD As Worksheet 'Raw Data Dim wsTEM As Worksheet 'Archive Set wsPAR = Sheets("PAERTO") Set wsRD = Sheets("Raw
Option Explicit
Sub ONJL()
Dim lastrow As Long
Dim wsPAR As Worksheet 'PAERTO
Dim wsRD As Worksheet 'Raw Data
Dim wsTEM As Worksheet 'Archive
Set wsPAR = Sheets("PAERTO")
Set wsRD = Sheets("Raw Data")
Set wsTEM = Sheets("Template")
With wsPAR
Application.ScreenUpdating = False
wsPAR.Range("B23:I300").Clear
lastrow = wsRD.Range("B3").Row + 23
wsTEM.Range("A23:H23").Copy wsPAR.Range("B23:I" & lastrow)
.Range("F4").Formula = "=SUMPRODUCT(--(I23:I" & lastrow & ">='Raw Data'!K2),--(I23:I" & lastrow & "<='Raw Data'!K3))"
.Range("F5").Formula = "=SUMPRODUCT(--(I23:I" & lastrow & ">='Raw Data'!K3),--(I23:I" & lastrow & "<='Raw Data'!K4))"
.Range("F6").Formula = "=SUMPRODUCT(--(I23:I" & lastrow & ">='Raw Data'!K4),--(I23:I" & lastrow & "<='Raw Data'!K5))"
lastrow = wsRD.Range("E3").Row + 23
wsTEM.Range("I23:U23").Copy wsPAR.Range("M23:Y" & lastrow)
Application.ScreenUpdating = True
End With
End Sub
选项显式
分包商()
最后一排一样长
将wsPAR标注为工作表“PAERTO”
将wsRD调整为工作表的原始数据
将wsTEM作为工作表存档
设置wsPAR=图纸(“PAERTO”)
设置wsRD=图纸(“原始数据”)
设置wsTEM=图纸(“模板”)
与wsPAR
Application.ScreenUpdating=False
wsPAR.范围(“B23:I300”)。清除
lastrow=wsRD.范围(“B3”)。第行+23
wsTEM.Range(“A23:H23”)。复制wsPAR.Range(“B23:I”和lastrow)
.Range(“F4”).Formula=“=SUMPRODUCT(--(I23:I”和lastrow&“>=”原始数据“!K2),-(I23:I”和lastrow&“=”原始数据“!K3),-(I23:I”和lastrow&“=”原始数据“!K4),-(I23:I”和lastrow&“将下面两行中的.Row替换为.Value
lastrow = wsRD.Range("B3").Row + 23
lastrow = wsRD.Range("E3").Row + 23
基本上,您要求VBA在这两种情况下都获取范围的行号3,并将其添加到23。如果您希望获取每个范围内的值并将其添加到23,则需要使用.value
属性。将下面两行中的.row替换为.value
lastrow = wsRD.Range("B3").Row + 23
lastrow = wsRD.Range("E3").Row + 23
实际上,您要求VBA做的是在这两种情况下都获取范围的行号3,并将其添加到23。如果要获取每个范围内的值并将其添加到23,则需要使用.value
属性