检查空cel,然后计算列中的值并将其粘贴到另一个工作表

时间:2017-07-05 12:42:53

标签: excel vba excel-vba

我有两个sht,sht1作为BW和sht2作为结果。

我想计算列T中的1和Sht1的U的数量,根据AX列中的星期,并在结果表中打印计数值,查看同一周。

我接受了论坛专家的建议,并在此之前完成了。

我想要一个if条件,如果列AA为空,那么我不应该计算T列和U列中的1,它应该被跳过。

我在j = 2之后在现有代码中引入了这行代码;并收到错误

  

错误标签未定义`,

 If ws.Range("AA" & i) = "" Then 
GoTo nextrow 

有人可以帮忙,我应该如何执行这个条件? 这是我的代码;

Sub results()

Dim i As Integer, j As Integer, cntT As Integer, cntu As Integer, ws As Worksheet
Set ws = Sheets("Result")
Sheets("BW").Select
For i = 2 To WorksheetFunction.CountA(ws.Columns(1))
cntT = 0
cntu = 0
If ws.Range("A" & i) = Val(Format(Now, "ww")) Then Exit For
Next i

For j = 2 To WorksheetFunction.CountA(Columns(50))

If ws.Range("A" & i) = Range("AX" & j) And Range("T" & j) = 1 Then cntT = cntT + 1
If ws.Range("A" & i) = Range("AX" & j) And Range("U" & j) = 1 Then cntu = cntu + 1

Next j
If cntT <> 0 Then ws.Range("B" & i) = cntT
If cntu <> 0 Then ws.Range("C" & i) = cntu
If cntT + cntu <> 0 Then
ws.Range("D" & i) = cntT + cntu
ws.Range("E" & i) = cntT / (cntT + cntu)
ws.Range("F" & i) = cntu / (cntT + cntu)
End If
ws.Range("E" & i & ":F" & i).NumberFormat = "0%"
End Sub

1 个答案:

答案 0 :(得分:0)

GoTo nextrow正在寻找标题为nextrow的行标签。这就是GoTo命令的构建和运行方式。对于您要完成的任务,请尝试以下方法:

If ws.Range("AA" & i) <> "" Then 
    If ws.Range("A" & i) = Range("AX" & j) And Range("T" & j) = 1 Then cntT = cntT + 1
    If ws.Range("A" & i) = Range("AX" & j) And Range("U" & j) = 1 Then cntu = cntu + 1
End If

这样说,如果列 NOT 为空,则为do stuff,否则请转到next j

如果您希望将来使用GoTo命令,可以使用行号(例如GoTo 0,它可以将您带回到代码的开头),或者您可以通过放置{{1来创建行标签在空行上。然后,当您致电nextrow:时,它将转到该行,然后从那里继续。