행삽입 (2)
엑셀 VBA #37 / 행삽입_변형 [VBA]
반응형

엑셀 VBA #37 / 행삽입_변형 [VBA]

1. 원하는 개수 만큼 행 삽입

Dim i As Long, lR As Long
Dim j As Long

lR = Cells(Rows.Count, "A").End(xlUp).Row

For i = lR To 2 Step -1
    If Len(Cells(i, "B")) Then                   ' Cells(i, "B")에 값이 있다면 아래 구문 반복해
            For j = 1 To Cells(i, "B").Value   '1부터 B열의 i행의 값만큼 아래 구문을 반복해!!!
                Cells(i, "A").Offset(1).Resize(, 6).Insert Shift:=xlDown
            Next
    End If
Next

결과값



2. 그룹별 행 삽입

Dim i As Long, lR As Long
Dim j As Long

lR = Cells(Rows.Count, "A").End(xlUp).Row

For i = lR To 2 Step -1
    If i <> lR Then
        If Cells(i, "A") <> Cells(i + 1, "A") Then    '지금 행 값과 다음 행의 값이 다르면 다음 구문을 처리해!
              Cells(i, "A").Offset(1).Resize(, 6).Insert Shift:=xlDown
        End If
    End If
Next

결과값
vba#37.xlsm
0.03MB




https://www.youtube.com/watch?v=fFe0JI2r6UM&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=37

 

반응형
  Comments,     Trackbacks
엑셀 VBA #36 / 행삽입_기본 [VBA]
반응형

엑셀 VBA #36 / 행삽입_기본 [VBA]


1. 목적 : VBA에서 행삽입 기능 숙지
2. Insert
- 구문 : 개체.Insert Shift:=xldown
- 의미 : 정해진 영역에서 기존 행은 아래로 이동시키고 새로운 행 삽입

3. 사용

Dim i As Long, lR As Long

lR = Cells(Rows.Count, "A").End(xlUp).Row   ' "A"열의 데이타가 있는 마지막 셀의 행번호

For i = 2 To lR
    If i <> lR Then  '마지막 행 아래는 빈 행이 있으므로, 마지막 행은 행삽입 불요 
        Cells(i, "A").EntireRow.Insert shift:=xlDown
    End If
Next

결과값---오류발생

오류발생원인 : 하나하나의 행 삽입되면서 기존의 행번호도 같이 변경되기때문!

해결위한 1차 코드
Dim i As Long, lR As Long

lR = Cells(Rows.Count, "A").End(xlUp).Row

For i = lR To 2 Step -1  '마지막 번호부터 시작하면서 행번호를 줄여간다
    If i <> lR Then
        Cells(i, "A").EntireRow.Insert shift:=xlDown
    End If
Next

결과값...또 오류 발생!!!

오류발생......

해결위한 2차 코드
Dim i As Long, lR As Long

lR = Cells(Rows.Count, "A").End(xlUp).Row

For i = lR To 2 Step -1 
    If i <> lR Then
        Cells(i, "A").Offset(1).Insert shift:=xlDown
        '작업해야 할 행보다 1칸 아래 행을 선정하여 행 삽입하면 됨
    End If
Next

결과값



4. 심화

Dim i As Long, lR As Long

lR = Cells(Rows.Count, "A").End(xlUp).Row

For i = lR To 2 Step -1
    If i <> lR Then
        Cells(i, "A").Offset(1).Resize(, 5).Insert shift:=xlDown
        'Resize(,5) : 5열까지만 행삽입토록
    End If
Next

vba#36.xlsm
0.02MB

 

 

 

https://www.youtube.com/watch?v=Lz1no-0Z7Xk&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=36




반응형
  Comments,     Trackbacks
최근 작성 글
최근 작성 댓글
최근 작성 트랙백
프로필
공지사항
글 보관함
캘린더
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
TODAY TOTAL