0

特定の日付範囲に基づいてワークシートからデータを削除しようとしています。シート「Grower Reporting」には、列 L に日付を含む小さなデータ セットがあります。残りのデータは列 N、M、O にあります。同じワークシートには、日付範囲を定義する 2 つのセル、セル「A2」があります。 =開始日とセル「B2」=終了日。指定された日付範囲に該当しない日付と隣接するデータをデータセットから削除しようとしています。

ARich と varocarbas に感謝します。

これが私がやったことです(我慢してください、私はコーディングの理解が不十分です):

Sub delete_data()

Dim startDate As Date
Dim endDate As Date
Dim r_date As Date


startDate = Sheets("Grower Reporting").Range("a2").Value
endDate = Sheets("Grower Reporting").Range("b2").Value

Set r = Sheets("Grower Reporting").Range("L:L").Find(r_date, Range("L2"), _
LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlNext)

If (r_date >= startDate And r_date <= endDate) Then

  r.Offset(0, -1).Value = " "

     End If

End Sub

上記のコードは何もしていないようです。私は正しい軌道に乗っていると思いますが、何らかのガイダンスが緊急に必要です.

4

1 に答える 1

1

ループ内で(行ごとに)チェックを実行する必要があります。日付は、数値と同じ演算子を受け入れます。サンプルコード:

If Not r Is Nothing Then
    Dim curDate As Date
    firstAddress = r.Address
    Do
        curDate = Sheets("Grower Reporting").Cells(i, 9).Value 'Column I
        If (curDate >= d1 And curDate <= d2) Then
           Sheets("Grower Reporting").Cells(i, 13).Value = r.Value
           Sheets("Grower Reporting").Cells(i, 14).Value = r.Offset(0, -3).Value
           Sheets("Grower Reporting").Cells(i, 15).Value = r.Offset(0, 6).Value
           i = i + 1
           Set r = Sheets("Grower Rejection Data").Range("E:E").FindNext(r)
        End If
    Loop While Not r Is Nothing And r.Address <> firstAddress
End If

注: このコードは、すべての入力が同じ (日付) 形式であることを前提としています。Formatそうでない場合は、関数に依存するか、Cellプロパティに影響を与える必要があります。異なる「地域設定」を扱う場合 (たとえば、英国の英語のコンピューターと米国のデータ。日付形式が異なる場合)、問題が発生する可能性があります。

于 2013-10-07T19:09:55.387 に答える