2012-08-05 4 views
1

내 시나리오는 다음과 같습니다.VBA를 사용하여 월과 일을 Excel 셀에서 어떻게 얻을 수 있습니까?

데이터를 Excel로 내보내는 Cisco 로그인 및 로그 아웃 보고서가 있습니다. 큰! 유일한 문제는 하루에 여러 번 로그인 시간을 제공하기 때문에 첫 번째 로그인 시도를 얻고 나머지 시간을 그 날에 버리고 다음으로 이동하려고합니다.

셀은 시스코에서 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 루프에서 두 번째와 세 번째 항목을 삭제합니다.

이것이 명확하지 않은 경우 알려주세요. 도움을 청합니다.

답변

1

당신은 그 것을 언급했다 preformatted by Cisco as m/d/yyyy" "h\:mm\:ss AM/PM. 위의 샘플은 그 형식과 일치하지 않습니다. 당신이 준 샘플은 PM

아래에이 코드 샘플 형식 m/d/yyyy h\:mm\:ss AM/PM

CODE

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 

을 기반으로하기 전에 공간

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 

를 있었어야 스크린 샷

enter image description here

+0

나는 본다 ... 나는 이것을 시도 할 것이다. 형식이 일치하지 않는다는 귀하의 의견과 관련하여 Excel에서 입력 된대로 형식을 복사하고 예제로 표시 할 셀 몇 개를 복사했습니다. 내가 얻은 것을 너에게 알려주지, 너를 대단히 감사한다! –

+0

걱정할 필요가 없습니다. Lemme 알아. 'PM' 앞에 공백이 없다면 코드를 약간 변경해야합니다. –

+0

@ siddharth 와우! 이것은 그것을했다! 정말 고맙습니다! 궁금 해서요, 당신이 올바른 방향으로 나를 더 잘 이해할 수 있겠습니까 = 당신이 평가 함수에서 가지고 있던 물건들? 나는 그것을 이해하고 더 잘 이해하기 위해 이것을 두 번 읽어야 할 것입니다! +1! –

관련 문제