我对编程很陌生,我有一项大学任务,需要计算一个人每周是否有超过40个小时的时间,如果是,则需要在该行中写H3:K3 (每个单元格= 1周) 但是我不知道在到达K3位置后如何更改行。 所以我只能检查5个人中的一个。 请有人帮我。 谢谢 Screenshot
VBA
Sub ssda()
x=3
i=2
j=8
Do
x=x+1
For i = 2 To 5
if Cells(x, i) > 40 Then
Cells(x, j) = "Ir parstrade"
j = j + 1
Else
Cells(x, j) = "Nav parstrades"
j = j + 1
End If
Next
Loop Until x=x+1
End Sub
如果所有5个人工作超过40小时,我都需要答复。 如果大于40,则需要从单元格(B3:D3)中获取数字,然后在行(H3:K3)中输入“ Good”,否则为“ Bad”,还需要检查下一个人。
答案 0 :(得分:0)
这未经测试,但我认为应该是正确的:
首先,您必须将每个人的j重置为8。
但是您也可以在一个单元格中使用.Offset
(每个数字右边6个单元格),这对我来说似乎更容易。
Sub ssda()
x=3
' i=2 not needed
' j=8 wrong here
Do
' x=x+1 wrong here, if you want to start in row 3, not 4,
' in the first round. Put this at the end of the loop
' j = 8 would be ok here
For i = 2 To 5
if Cells(x, i) > 40 Then
'Cells(x, j) = "Ir parstrade"
' alternative: just use offset
Cells(x, i).Offset(0, 6) = "Ir parstrade"
Else
Cells(x, i).Offset(0, 6) = "Nav parstrades"
'Cells(x, j) = "Nav parstrades"
End If
j = j + 1
Next
x = x + 1
'Loop Until x=x+1 - this can never be true
Loop Until Cells(x, 1) = ""
End Sub