미해결 엑셀2019윈도우10
vba 코드 문의 드립니다.
업무상 매일 하는 작업인데... 너무 번거로워서 매크로(vba) 코드 문의 드립니다.
문의 vba 코드 내용:
P열 aa,bb만 남기고 삭제 + A열 앞에 열 삽입 후 A1셀에 NO 입력 + A2부터 숫자(시작 1) 순번 + 가운데 정렬(맑은 고딕 + 폰트 9) + 열 너비 자동 +필터 실행
이렇게 매일 하는 작업입니다.
VBA 코드 부탁드립니다.
문의 vba 코드 내용:
P열 aa,bb만 남기고 삭제 + A열 앞에 열 삽입 후 A1셀에 NO 입력 + A2부터 숫자(시작 1) 순번 + 가운데 정렬(맑은 고딕 + 폰트 9) + 열 너비 자동 +필터 실행
이렇게 매일 하는 작업입니다.
VBA 코드 부탁드립니다.
E
숲
또
P
아
댓글 7
매크로 기록 기능을 사용할 수 있습니다.
"매크로 기록 시작" 후에 굵은 글씨 액션들을 수행하고 저장하시면 재사용이 가능합니다
위에 샘플 파일에는 P열 하치장 aa, bb, cc 만 있는데
이부분은 매일 틀려집니다. 예) aa, bb, cc, dd, ee, ff, gg 등
나머지는 모두 삭제하고 aa, bb만 남기고 싶은데 이건 매크로로 안되네요.
다른 방법이 있을까요?
"P열 aa,bb만 남기고 삭제" 에 해당하는 내용입니다.
Dim numRows As Integer, i As Integer
numRows = Range("A1").CurrentRegion.Rows.Count - 1
Cells(2, "P").Select
For i = 0 To numRows
If Selection <> "aa" And Selection <> "bb" Then
Selection.EntireRow.Delete
numRows = numRows - 1
Else
Selection.Offset(1, 0).Select
End If
Next
For,,,Next 문에서 변수를 사용할 경우 아래 문장은 의미가 없습니다.
numRows = numRows - 1
For i = 0 To numRows 이 문장이 시작되면
numRows가 바뀌어도 i는 처음 For문이 시작될 때의 numRow까지 계속 진행을 합니다.
다행히 아래쪽으로 다른 자료가 없으면 문제가 없지만,
만약 numRows아래쪽으로 다른 자료가 있었다면 삭제될 수도 있습니다.
For...Next 문으로 행을 삭제할 때는 가급적 아래쪽에서 위로 가면서 작업하시는 것이 좋습니다.
For i = numRows to 1 Step -1