这是我的代码,有点关闭,虽然它确实有效,但不是我想要的方式。
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
现在B3是7,E3是25.
我认为如果我输入+ 23因为数据从23开始,并且应该在lastrow等于的地方结束,所以技术上应该是I30和Y48,但事实并非如此。
有人可以给我一个想法吗?
答案 0 :(得分:3)
使用 .Value
替换下面两行中的 .Rowlastrow = wsRD.Range("B3").Row + 23
lastrow = wsRD.Range("E3").Row + 23
你基本上要求VBA做的是在两种情况下得到范围的行号3,并将其添加到23.如果你想获得每个范围内的值并添加23,你需要使用.Value
属性。