2017-01-03 2 views
0

열 A에있는 날짜를 나열하는 스프레드 시트가 있습니다 (예 : 12/1/2016 1:45:00 AM). 이 열의 모든 셀을 다시 포맷하여 일, 월 #, 연도를 표시합니다. 예 Thursday, December 01, 2016. Find 함수는 실제 찾기 버튼을 클릭하고 값을 검색하면 작동하지만 코드를 작성하는 데 어려움이 있습니다. "토요일"과 "일요일"을 포함하는 모든 행을 삭제하고 싶습니다. 내가 시도한 최신 코드는 다음과 같다.셀 값의 일부를 기준으로 전체 행을 삭제하십시오.

Last = Cells(Rows.Count, "D").End(xlUp).Row 
For i = Last To 1 Step -1 
    If (Cells(i, "D").Value) = "*Saturday*" Then 
Cells(i, "A").EntireRow.Delete 
    End If 
Next i 

다음 코드도 시도해 보았습니다.

Set Find = Range("A:A").Find("Saturday", LookIn:=xlValues) 
Do Until Find Is Nothing 
    Find.EntireRow.Delete 
    Set Find = Range("A:A").FindNext 
Loop 
+0

사용'Like'에 바라 매개 변수를 설정합니다' "* 토요일 *"Then'처럼 (. 세포 (I, "D") 값) –

답변

0

변경

If (Cells(i, "D").Value) = "*Saturday*" Then` 

보다는 기본 값 (날짜 인)보다 표시 값에 액세스 Text 대신 Value의 사용, 대신 Like를 사용

If (Cells(i, "D").Text) Like "*Saturday*" Then 

=은 와일드 카드가 작동하도록 허용합니다. 이는 열에 날짜에하기로


귀하의 질문은 혼란 스럽다. 코드 (그리고 귀하의 질문에)의 일부가 열 A에 제안,하지만 그들은에있는 경우 코드의 다른 부분은 열 D. 제안 열 A에서 "D" 대신 "A"을 사용하도록 위의 코드를 변경하십시오.

1

xlPart

Find("Saturday", , , xlPart) 
+1

아 경우 - 나는 잊고 있었다 'Find'는 마지막으로 사용 된 매개 변수를 "기억"합니다. 그래서 LookAt : = xlPart'를 생략하면 OP가 이전에 수동으로 'Find'를 했었지만 이전 찾기가'xlWhole'에 대한 것이라면 작동하지 않을 것입니다. 이것이 OP 코드가 왜 저에게 효과가 있었는지를 설명합니다. – YowE3K

+0

예, 이것은 재미있는 비트 중 하나입니다. :) 견고한 접근 방식은 현재 설정을 저장하고 Find 메소드를 실행하고 재설정 한 것입니다. – cyboashu

관련 문제