2014-11-28 2 views
-2

Я собираюсь сделать что-то вычтите значение времени, если ячейка имеет ту же метку пакета, предположим, что у меня есть данные, такие как:Excel VBA вычесть значение, если иметь ту же метку

| 1 | A | 01 | x |     
| 2 | B | 03 | x |     
| 3 | A | 05 | x |     
| 4 | C | 06 | x |    
| 5 | B | 09 | x | 
| 6 | A | 11 | x | 

и значение должно быть что-то вроде этого:

| 1 | A | 01 | 4 | >> Value of subtract time A1 from A3 5-1 = 4 
| 2 | B | 03 | 6 | >> Value of subtract time B2 from A5 9-3 = 6 
| 3 | A | 05 | 6 | >> Value of subtract time A3 from A6 11-5 = 6 
| 4 | C | 06 | value | 
| 5 | B | 09 | value | 
| 6 | A | 11 | value | 

Мой текущий код:

sub deltaip() 

dim x as long 
dim i as long 

for i = 2 to rows.count 
for x = 3 to rows.count 

if cells(i,2).value = cells(x,2).value then cells(i,4) = cells(x,3).value-cells(i,3).value 

next x 
next i 

End Sub 

Но застрял, мне нужно, чтобы сделать петлю X останавливать каждый раз, когда он находит такое же значение, делать вычитание и перейти к следующему x. Также я обнаружил, что в следующем цикле I X не будет сброшен с 3, но contine из последнего значения X, что случилось?

может мне помочь? Я довольно новыми для VBA в Excel, заранее спасибо

ответ

0

Совершено изменения в Do While как этот код (код на Листе):

Sub deltaip() 

Dim x As Long 
Dim i As Long 
Dim n As Long 

n = 3 
x = 3 

For i = 2 To 11 

Do Until Cells(i, 3).Value = Cells(x, 3).Value 
x = x + 1 
If x > 12 Then Exit Do 
Loop 

If Cells(x, 2).Value - Cells(i, 2).Value > 0 Then 
Cells(i, 8) = Cells(x, 2).Value - Cells(i, 2).Value 
Else 
Cells(i, 8) = "" 
End If 

n = n + 1 
x = n 



Next i 

End Sub 
Смежные вопросы