반응형

ubound 7

데이터(레코드)별로 양식 시트에 기록하기

1. 문제  아래와 같은 데이터를 레코드(행)별로 시트를 추가해서 아래 양식 데이터에 기록하려고 합니다. 2. 관련 메서드 및 속성 등시트를 레코드 개수에 따라 추가하거나 삭제해야 하고,행별로 반복처리해야 합니다. 가. 시트 추가구문 : Sheets.Add (Before, After, Count, Type)인수명필수/선택 데이터형식설명BeforeOptionalVariantAn object that specifies the sheet before which the new sheet is added.AfterOptionalVariantAn object that specifies the sheet after which the new sheet is added.CountOptionalVariantThe numb..

EXCEL - VBA 2024.06.05

매크로 - 범위가 아닌 배열로 처리하기

이 글에서는 범위로 처리했는데, 배열로 처리하는 것을 다뤄보겠습니다. 1. 코드 작성 및 실행먼저 개발 도구 - Visual Basic을 누르고, 삽입 - 모듈을 클릭해서 모듈을 추가합니다. 그리고, 코드 창에 아래 내용을 복사해서 붙여 넣습니다.Sub 배열로곱하기() Dim rng As Range, c As Range Dim val Dim i As Long Range("e1") = Now() Set rng = Range(Range("a1"), Range("a1").End(xlDown)) val = rng For i = 1 To UBound(val) val(i, 1) = val(i, 1) * 2 Next Range("b1:b" & UBound(val)) = val Range("e2") = Now() En..

EXCEL - VBA 2023.09.04

여러 가지 조건을 만족하는 값을 찾을 때(3) - 동적 배열을 이용한 속도 개선

동적 배열을 이용해서 사용자 정의 함수 코드를 수정했더니 훨씬 속도가 빨라졌습니다. 1. 사용자 정의 함수 구문 가. 기존 코드 Option Explicit Option Base 1 Function multi_vlookup(lookup_value, lookup_array, return_array As Range) Dim i As Double '배열은 그대로 두고, 범위일 경우 배열로 변환 Dim Range_to_Array As Variant Debug.Print (vbCrLf & "범위 배열 변환1 : " & Now()) Range_to_Array = lookup_array For i = 1 To UBound(Range_to_Array) If i >= 2 And Len(Range_to_Array(i, 1..

EXCEL - VBA 2023.07.27

두 문장의 같은 단어 비교(1) - 매크로 작성

위와 같이 A1셀과 A2셀의 문장 2개를 비교해서 같은 단어일 경우는 글자 색을 빨간색으로 표시하는 것을 해보겠습니다. 1. 논리 A1셀과 A2셀을 각각 빈칸을 기준으로 문장을 나눈 다음 배열에 넣고, 배열끼리 비교해서 배열이 같을 때, 여기서는 포함될 때를 기준으로 판단하려고 합니다. 다시 말해 '국민'은 '국민의'에 포함되므로 같은 것이 되고, '국민의'와 '국민을'은 포함관계가 아니기 때문에 다른 것이 됩니다. 어간을 기준으로 비교하면 되는데, 그것이 어려워서 조건으로 못 넣었습니다. 2. 매크로 작성 아래와 같이 Sub 프로시저와 Function 프로시저로 구성되어 있습니다. 가. Sub 프로시저 compare_sentence(문장 비교), font_red(일치하는 배열의 글자색을 빨간색으로 변함..

EXCEL - VBA 2023.05.08

Range.AutoFilter Method(7) - 필터된 영역에 붙여넣기(2-2)

다. 복사할 범위로 여러 셀 지정후 붙여 넣을 범위에 붙여 넣는 매크로 작성 CopyRange가 2차원 배열이므로 2차원 배열에 맞게 매크로를 작성하였습니다. Sub FilteredRange_Copy5() Range("a2").Select If Not ActiveSheet.FilterMode Then Selection.AutoFilter 2, "가락1*" Set CopyRange = Application.InputBox("복사할 범위를 선택하세요.", Type:=8) Set PasteRange = Application.InputBox("붙여넣을 첫번째 셀을 선택하세요.", _ Type:=8, Default:=Range("a2").Address(0, 0)) Set PasteRange = Range(Past..

EXCEL - VBA 2023.03.10

Range.AutoFilter Method(6) - 필터된 영역에 붙여넣기(2-1)

이번에는 한 열이 아니라 25행에서 30행에 있는 A부터 K까지 열을 복사해서 붙여 넣기를 해보겠습니다. 1. Rows() 함수 이용 가. 모듈 삽입 줄 전체를 복사하는 것은 Rows 함수를 이용하여 쉽게 구현할 수 있습니다. 먼저 개발도구 - Visual Basic을 클릭해서 Visua Basic Editor로 들어간 다음 '서울시 지역 ....xlsx 파일이 선택된 상태에서 삽입 - 모듈을 누르거나 사용자 정의 폼 등 삽입을 위한 콤보 상자 버튼을 누른 후 모듈을 삽입합니다. 나. 매크로 작성 Range.AutoFilter Method(6) - 필터된 영역에 붙여넣기(1)의 FilteredRange_Copy3 sub 프로시저를 참고해서 만들었는데, CopyRange로 복사할 행의 한 열만 선택하도록 ..

EXCEL - VBA 2023.03.09

Range.AutoFilter Method(5) - 필터된 영역에 붙여넣기(1)

1. 필터링된 경우에도 보이지 않는 셀까지 데이터가 붙여지는 문제점이 있음 위와 같은 데이터가 있을 경우 동명을 가락1동으로 필터링하면 아래와 같이 가락1동 관련 데이터만 표시되는데, H25셀부터 H34셀까지의 내용을 복사한 후 H2셀에 붙여 넣으면 10개를 복사했는데, H2셀부터 H9셀까지 6개만 붙여 넣어져서 4개는 사라졌습니다. 원인은 7행부터 8행까지와 10행부터 11행까지 숨겨진 행에도 붙여 넣어져서 그렇습니다. 홈 탭 > 정렬 및 필터 > 지우기를 눌러 모든 데이터를 표시하면 필터링된 경우에도 보이는 셀에만 복사되는 것이 아니라, 2행부터 11행까지 연속적으로 붙여 넣기가 됩니다. 그러나, 필터링된 데이터를 다른 곳에 붙여 넣는 것은 문제가 없습니다. 예를 들어 가락1동으로 필터링된 상태에서 ..

EXCEL - VBA 2023.03.08
반응형