2017-09-13 5 views
0

私の目的は、すべての行の時間間隔を調べる必要があります。 1秒間に1秒かかるはずですが、11時40分まで表示されますが、大きなものがあります。例えば、時間A3-A2 = B1である。私はすでにこの問題を解決しました。私のコードは以下の通りです。[VBA]列の最後に無駄な0をすべて削除する方法

正常に実行されますが、B列の最後には00:00:00という長いリストがあります。私は列Bの最後の数を列Aと一致させたい、つまり列Bを意味し、Aは同じ長さでなければならない。最後は00:00:00です。

Sub CalculateTimeGap() 

Columns("B:B").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
Range("A1").Value = "Time" 

Columns("A:A").NumberFormat = "hh:mm:ss" 
Columns("B:B").Formula = "=A2-A1" 
Range("B1").Value = "Time Difference(s)" 
Columns("B:B").NumberFormat = "hh:mm:ss" 

lRow = Cells(Rows.Count, 1).End(xlUp).Row 
End Sub 


Time  Time Difference(s) 
11:28:37 00:00:01 
11:28:38 00:00:01 
11:28:39 00:00:01 
11:28:40 00:11:35 
11:40:15 00:00:01 
11:40:16 00:00:01 
11:40:17 00:00:01 
11:40:18 00:00:01 
      00:00:00 
      00:00:00 
      00:00:00 
      00:00:00 
      00:00:00 
      00:00:00 
      00:00:00 
      00:00:00 
      00:00:00 
      00:00:00 

00:00:00を削除するためにコードを内部に追加しようとしましたが、機能しませんでした。

あなたは、列Bに式を使用することができます
Sub CalculateTimeGap() 

Columns("B:B").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
Range("A1").Value = "Time" 
dim LR as variant 
LR=application.count(range("A:A")) 
Columns("A:A").NumberFormat = "hh:mm:ss" 
Columns("B2:B"&LR).Formula = "=A2-A1" 
Range("B1").Value = "Time Difference(s)" 
Columns("B:B").NumberFormat = "hh:mm:ss" 

lRow = Cells(Rows.Count, 1).End(xlUp).Row 
End Sub 

答えて

0

私は次のようになりますあなたのコードを維持するためにここに

dim LR,i as double 
    LR=application.count(range("A:A")) 
    for i=1 to lr step 1 
    cells(i,2).value=cells(i+1,1).value-cells(i,1).value 
    next i 

と代替でループを使用する方が良いと思います

例のテーブルをA1とすると、=IF(ISBLANK(A3),"",A3-A2)をB2に、cあなたが好きなだけ遠くまで下っていってください

0

If Range("B").Value = "00:00:00" Then 
    'Range("B").Value.Delete 
End If 
関連する問題