1

次のようなデータのスタックがあります。

Tidal Time  Tidal Height
00:00:00    4.40
01:00:00    
02:00:00    
03:00:00    
04:00:00    
05:00:00    
06:00:00    2.00
07:00:00    
08:00:00    
09:00:00    
10:00:00    
11:00:00    4.50
12:00:00    
13:00:00    
14:00:00    
15:00:00    
16:00:00    
17:00:00    
18:00:00    2.10
19:00:00    
20:00:00    
21:00:00    
22:00:00    
23:00:00    4.40

次に、このコードを使用して、値を下から傾向付けます。

Sub TrendValues()

Set LastCell = Sheets("Vessels").Cells(ActiveSheet.Rows.Count, 2).End(xlUp)

Do While LastCell.Row > 2

    If LastCell.Offset(-1, 0) = "" Then
        Set NonEmptyCellAboveLastCell = LastCell.End(xlUp)
    Else
        Set NonEmptyCellAboveLastCell = LastCell.Offset(-1, 0)
    End If

    If NonEmptyCellAboveLastCell.Row > 1 Then
        Set RangeToFill = Sheets("Vessels").Range(NonEmptyCellAboveLastCell, LastCell)
        RangeToFill.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, Trend:=True

        If NonEmptyCellAboveLastCell.Offset(-1, 0) = "" Then
            Set LastCell = NonEmptyCellAboveLastCell.End(xlUp)
        Else
            Set LastCell = NonEmptyCellAboveLastCell.Offset(-1, 0)
        End If

    Else
        Set LastCell = Sheets("Vessels").Range("B1")
    End If
Loop

End Sub

これにより、次のようにテーブルが埋められます。

Tidal Time  Tidal Height
00:00:00    4.40
01:00:00    
02:00:00    
03:00:00    
04:00:00    
05:00:00    
06:00:00    2.00
07:00:00    2.50
08:00:00    3.00
09:00:00    3.50
10:00:00    4.00
11:00:00    4.50
12:00:00    
13:00:00    
14:00:00    
15:00:00    
16:00:00    
17:00:00    
18:00:00    2.10
19:00:00    2.56
20:00:00    3.02
21:00:00    3.48
22:00:00    3.94
23:00:00    4.40

したがって、これは一般的に部分的にしか機能せず、その理由はよくわかりません。
表からわかるように、それはギャップを引き起こすだけで、私にとってはまったくトレンドではありません. 上部または下部の列 B に値がない場合、コードは機能します。しかし、場合によっては、開始値と終了値を自動的に入力する必要があり、ここでコードが壊れます。
公平を期すために、列 B の開始フィールドと終了フィールドが入力されているかどうかに関係なく、テーブル全体を正しく入力するには、このコードを 2 回実行する必要があります。コードの機能全体が欠落しているため、問題を修正するために編集する方法がわかりません。
明白で明白な問題領域を見つけて、これを修正するためにコードに追加または削除を提案できる人はいますか?
コードの機能を段階的に説明することも役に立ちます。
前もって感謝します!

4

2 に答える 2