1

これが私のシナリオです:

データをExcelにエクスポートするCiscoログインおよびログアウトレポートがあります。素晴らしい!唯一の問題は、1日に複数のログイン時間を取得できることです。そのため、最初のログイン試行だけを取得し、その日の残りを破棄して次の日に移動しようとしています。

セルは、シスコによってとして事前にフォーマットされていm/d/yyyy" "h\:mm\:ss AM/PMます。私は自分自身にVBAを教えていますが、その単一のセルからm / d / yyyyだけを取得し、それを他のセルと比較したいと思います。日付が存在する場合は、それらの行を削除したいと思います。

例:

5/2/2012 2:55:12PM
5/2/2012 3:00:00PM
5/2/2012 3:01:00PM
5/3/2012 2:56:01PM

forループの2番目と3番目のエントリを削除したいと思います。

これが明確でない場合はお知らせください。ご協力いただきありがとうございます。

4

1 に答える 1

1

ただし、上記preformatted by Cisco as m/d/yyyy" "h\:mm\:ss AM/PM.のサンプルはその形式と一致しないとのことですが。あなたが与えたサンプルは

5/2/2012 2:55:12 PM
5/2/2012 3:00:00 PM
5/2/2012 3:01:00 PM
5/3/2012 2:56:01 PM

つまり、前にスペースがありますPM

以下のこのコードサンプルは、フォーマットに基づいていますm/d/yyyy h\:mm\:ss AM/PM

コード

Sub Sample()
    Dim ws As Worksheet
    Dim lRow As Long, i As Long
    Dim delRange As Range

    '~~> Set this to the sheet where you have the data
    Set ws = Sheets("Sheet1")

    With ws
        '~~> Sort the data in ascending order
        .Range("A:A").Sort key1:=.Range("A1"), order1:=xlAscending

        '~~> Get the last row
        lRow = .Range("A" & .Rows.Count).End(xlUp).Row

        '~~> loop through the cells
        For i = 2 To lRow
            '~~> Check if date matches
            If Application.Evaluate("=DATE(YEAR(A" & i & "),MONTH(A" & i & "),DAY(A" & i & "))") = _
            Application.Evaluate("=DATE(YEAR(A" & i - 1 & "),MONTH(A" & i - 1 & "),DAY(A" & i - 1 & "))") Then
                '~~> Check if the value is greater
                If .Range("A" & i).Value > .Range("A" & i - 1).Value Then
                    '~~> identify cells to delete
                    If delRange Is Nothing Then
                        Set delRange = .Range("A" & i)
                    Else
                        Set delRange = Union(delRange, .Range("A" & i))
                    End If
                End If
            End If
        Next i

        '~~> Delete cells
        If Not delRange Is Nothing Then delRange.Delete
    End With
End Sub

スクリーンショット

ここに画像の説明を入力してください

于 2012-08-05T23:43:25.563 に答える