VBA_N행삽입

이지수·2023년 7월 31일
0

여러 Report Suite의 Days 혹은 Last Touch Channel 데이터를 추출하다 보면 각 Report Suite별로 추출될 행을 예측하여 한 행당 N행의 빈 행을 넣어줘야 하는 경우가 존재

Method #1. Python > 사용 불가

Report Builder 파일은 Python을 통해 읽혀지면 Report Builder의 효능이 사라지기 때문에 Python을 이용한 방법은 사용이 불가

Method #2. VBA

  1. VBA추가
    Menu > File > Option > 리본 사용자 지정 > 개발도구 체크 > 개발도구 안 Mecro 메뉴 생성 확인

  2. VBA 코드 생성

Sub InsertRowsAtValueChange() # Sub > Procedure 생성
' Insert Set Rows on Each Different Variable Showed Up
Dim Rng As Range # Dim > 변수 선언 
Dim WorkRng As Range 
On Error Resume Next # 에러가 일어나면 무시하고 Next
xTitleId = "KutoolsforExcel" 
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
For i = WorkRng.Rows.Count To 2 Step -1
    If WorkRng.Cells(i, 1).Value <> WorkRng.Cells(i - 1, 1).Value Then
        WorkRng.Cells(i, 1).EntireRow.Insert
    End If
Next
Application.ScreenUpdating = True
End Sub

참고사이트

  1. Dim (Declare In Memory)
    Dim (변수명) As (변수의 데이터 형식)
  2. On Error > 에러가 발생했을 경우 처리 방식
  3. Set > 개체를 VBA 변수로 지정할 경우 사용
    일반 데이터타입(숫자/문자/논리값)은 Set 없이 Dim을 이용하여 변수에 데이터를 할당할 수 있지만, 개체(Object) 데이터타입은 Set을 통하여 데이터를 할당해야 함
  • 일반 데이터타입의 사용 목적 : 데이터의 입력 & 출력
  • 개체 데이터타입의 사용 목적 : 데이터의 입력 & 출력을 위한 프로시져(명령문)으로 동작

1) 이미 RB이 존재하고, 수정해야 하는 경우

  • Last Touch Channel의 경우 US 만 삽입되어있는 row # 가 다르기 때문에 애매함 > US를 맨 아래로 내려보고 진행

2) 새로운 RB을 만들 때

0개의 댓글