循环不规则

时间:2017-07-28 13:54:12

标签: excel vba excel-vba

我有一张表“结果”和另一张表“状态”。

工作表“status”有一个表,其中A列为日历周。

想法是将“结果”表的列K的计数值复制到数据表。

与其他列中的其他计数值类似。

代码工作正常,没有错误。

问题是我的两个值出错了。 CntT acc.to代码实际上为我提供了“93”,我有“95” 同样cntS acc代码提供给我“49”,而实际上我有“50”。

任何人都可以帮我弄清楚我错在哪里。我已经发布了这个问题并检查了反馈。它对我有用。

Sub result()
Dim i As Integer
Dim j As Integer
Dim cnt As Integer
Dim cntU As Integer
Dim sht As Worksheet
Dim TotalRows As Long

Set sht = Sheets("Status")
Sheets("Result").Select
TotalRows = Range("E5").End(xlDown).Row
n = Worksheets("Result").Range("E5:E" & TotalRows).Cells.SpecialCells(xlCellTypeConstants).Count

For i = 2 To WorksheetFunction.Count(sht.Columns(1))
    cntT = 0
    cntU = 0
    cntS = 0
    If sht.Range("A" & i) = Val(Format(Now, "WW")) Then Exit For
Next i

For j = 4 To WorksheetFunction.CountA(Columns(17))
   If sht.Range("A" & i) = Range("Q" & j) And Range("K" & j) = "Green" Then cntT = cntT + 1
   If sht.Range("A" & i) = Range("Q" & j) And Range("J" & j) = "delayed" Then cntU = cntU + 1
   If sht.Range("A" & i) = Range("Q" & j) And Range("A" & j) = "" Then cntS = cntS + 1
   If cntT <> 0 Then sht.Range("C" & i) = cntT
   If cntU <> 0 Then sht.Range("D" & i) = cntU
   If cntS <> 0 Then sht.Range("B" & i) = cntS
   If n <> 0 Then sht.Range("E" & i) = n
Next j

If cntT + cntU <> 0 Then
    sht.Range("F" & i) = (cntS / n)
    sht.Range("G" & i) = (cntT / n)
    sht.Range("H" & i) = (cntS / n)
    sht.Range("G" & i & ":F" & i & ":H" & i).NumberFormat = "0.%"
End If

'sht.Range("G" & i & ":F" & i & ":H" & i).NumberFormat = "0.%"

End Sub

0 个答案:

没有答案