본문 바로가기
Macros

일정한 수의 열마다 빈열 삽입하기

by 뚜벅이라이프 2023. 5. 15.

 

일정한 간격으로 열을 삽입하는 방법에 대해

 얘기하겠습니다. 간단해 보이지만, 열이 몇천 혹은

몇만개라면 그리 녹록치는 않습니다.

 

 

 

전화번호부를 예로 들어 얘기하겠습니다.

프린터로 출력하기 위해서(출력시에는 행반복을 사용하면 됩니다만, 여기선 잠시..^^) 혹은 다른 이유로 일정한 수의 열마다 "이름", "전화번호", "휴대폰번호" 등의 타이틀을 추가해야 하는 경우 행의 수가 많지 않으면 직접 셀을 삽입하고 타이틀을 타이핑하면 됩니다.

하지만, 행의 수가 몇백개만 되어도 작업을 하고자 생각만 해도 머리가 지끈거립니다.

 

Sub InsertRow()

Dim targetrow as long
Dim rownum as long
Dim ccount as long

rownum=range("A" & Rows.Count).End(xlUp).Row
targettow=1
ccount=1

Do 
	If ccount =16 then
    	Rows(targetrow).Insert Shift:=xlDown
        Cells(targetrow,1).value="이름"
        Cells(targetrow,2).value="전화번호"
        ccount=1
        rownum=Range("A"&Rows.count).End(xlup).Row
    Else
    	ccount=ccount+1
    End if
    
    targetrow=targetrow+1
Loop While targetrow<>rownum

End Sub

 

Range("A" & Rows.Count).End(xlup).Row

행의 갯수를 먼저 알아야 합니다.

Range("A" & Rows.Count).End(xlUp).Row 는 A열의 데이터가 포함되어 있는 행의 갯수를 셉니다. 즉, 데이터가 있는 마지막 열의 열번호를 반환합니다.

 

그 다음엔 반복문을 사용하여 셀을 삽입하면 되겠네요. 위에서 보여드린 코드에서는 셀을 삽입하고 타이틀까지 입력되게 했습니다.

 

반복문은 Do-while 문을 사용했구요. for-next 를 사용해도 가능할 것 같네요.

 

Sub InsertRow()

Dim rownum as long
Dim r1 as long
rownum=Range("C"&Rows.count).End(xlup).row

For r1=16 to rownum step 16
	Rows(r1).insert shift:=xldown
    	Cells(r1,1).value="이름"
        Cells(r1,2).value="전화번호"
next r1

End sub

 

 

코드가 훨씬 간결해 졌습니다.^^

이상입니다.

 

 

 

엑셀