溢出错误,同时计算列中的值并粘贴到另一个表格中

我有两张纸,sht1和sht2。 我正在计算列R,S,T,U中的值(如果它包含1)并将它们粘贴到sheet2中的表中。

首先,我总是用sht2查找日历周,然后检查当前的周数,然后检查打印在我的sheet1中的cw,如果它们相等,那么它就是我提到的列中的数字1 。

我在下面的行中发生溢出错误

对于j = 5 To Sheets(“sht1”)。Cells(Rows.Count,23).End(xlUp).Row

Sub result() Dim i As Integer Dim j As Integer Dim cnt As Integer Dim cntU, cntS, CntV As Integer Dim Sht As Worksheet Dim totalrows As Long Set Sht = Sheets("sht2") Sheets("sht1").Select totalrows = Range("A5").End(xlDown).Row n = Worksheets("sht1").Range("A5:A" & totalrows).Cells.SpecialCells(xlCellTypeConstants).Count For i = 2 To WorksheetFunction.Count(Sht.Columns(1)) cntT = 0 cntU = 0 cntS = 0 CntV = 0 If Sht.Range("A" & i) = Val(Format(Now, "WW")) Then Exit For Next i For j = 5 To Sheets("sht1").Cells(Rows.Count, 23).End(xlUp).Row If Sht.Range("A" & i) = Range("W" & j) And Range("R" & j) = "1" Then cntT = cntT + 1 If Sht.Range("A" & i) = Range("W" & j) And Range("S" & j) = "1" Then cntU = cntU + 1 If Sht.Range("A" & i) = Range("W" & j) And Range("T" & j) = "1" Then cntS = cntS + 1 If Sht.Range("A" & i) = Range("W" & j) And Range("U" & j) = "1" Then CntV = CntV + 1 If cntU <> 0 Then Sht.Range("D" & i) = cntU If cntS <> 0 Then Sht.Range("E" & i) = cntS If cntT <> 0 Then Sht.Range("C" & i) = cntT If n <> 0 Then Sht.Range("B" & i) = n If CntV <> 0 Then Sht.Range("F" & i) = CntV Next j If cntT + cntU + cntS + CntV <> 0 Then Sht.Range("G" & i) = CntV / n Sht.Range("H" & i) = cntS / n Sht.Range("I" & i) = cntU / n Sht.Range("J" & i) = cntT / n End If End Sub 

anylead会有所帮助。

我不是很确定行n = Worksheets("sht1").Range("A5:A" & totalrows).Cells.SpecialCells(xlCellTypeConstants).Count在问题中指出。

除此之外,您的代码块似乎还有一些问题。 为了弄清楚这些,最好看看下面更新的代码,在本周的R, S, T, U列中分别计数1 R, S, T, Usht2的相应星期下粘贴结果,并计算它们在全馅饼。

让我知道这是你在找什么。

 Sub result() Dim i As Long, j As Long, cntR As Long, cntS As Long, cntT As Long, cntU As Long, Sht As Worksheet Set Sht = Sheets("sht2") Sheets("sht1").Select For i = 2 To WorksheetFunction.CountA(Sht.Columns(1)) If Sht.Range("A" & i) = Val(Format(Now, "ww")) Then Exit For Next i Sht.Range("C" & i & ":" & "J" & i).ClearContents For j = 5 To WorksheetFunction.CountA(Columns("W")) If Sht.Range("A" & i) = Range("W" & j) Then If Range("R" & j) = 1 Then cntR = cntR + 1 If Range("S" & j) = 1 Then cntS = cntS + 1 If Range("T" & j) = 1 Then cntT = cntT + 1 If Range("U" & j) = 1 Then cntU = cntU + 1 End If Next j If cntR <> 0 Then Sht.Range("C" & i) = cntR If cntS <> 0 Then Sht.Range("D" & i) = cntS If cntT <> 0 Then Sht.Range("E" & i) = cntT If cntU <> 0 Then Sht.Range("F" & i) = cntU If cntR + cntS + cntT + cntU <> 0 Then Sht.Range("G" & i) = cntR / (cntR + cntS + cntT + cntU) Sht.Range("H" & i) = cntS / (cntR + cntS + cntT + cntU) Sht.Range("I" & i) = cntT / (cntR + cntS + cntT + cntU) Sht.Range("J" & i) = cntU / (cntR + cntS + cntT + cntU) End If Sht.Range("G" & i & ":J" & i).NumberFormat = "0%" End Sub