반응형

for 13

셀 서식의 통화 표시 알아내기 (1) - NumberFormat, NumberFormatLocal

1. 엑셀에서 알아내기 - 실패 아래와 같이 통화 표시가 있을 때 B1셀에 =left(a1,1)이라고 하면₩가 구해지는 것이 아니라 100에서 왼쪽 한 글자인 1이 구해집니다. 다른 것도 마찬가지입니다.B1셀의 채우기 핸들을 더블 클릭해서 B6셀까지 수식을 복사하면 원하는 것과 는 달리 모두 1이 구해집니다. 2. VBA로 해결 - 성공 가. 구문 속성이므로 Range.NumberFormat 또는 Range.NumberFormatLocal이라고,Range 다음에 .(점)을 찍고 써서 표시형식을 알아내는데,숫자뿐만 아니라 통화, 시간 등 모든 표시형식이 가능하며, NumberFormat과 NumberFormatLocal의 차이는 Local은 사용자의 언어형식으로 표시한다는 것입니다. 나. Sub 프로시저 ..

EXCEL - VBA 2024.07.08

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

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

소재지, 특지구분, 본번, 부번 합치기(2) - VBA

1. 문제 소재지와 특지구분, 본번, 부번이 나뉘어져 있을 경우에 이를 합치는 것을 VBA로 해결해보겠습니다.  두 가지 경우가 있는데, 첫번째는 특지구분에 산과 빈칸이 있고, 부번이 숫자와 빈칸인 경우이고, 두번째는 특지구분에 산과 일반이 있고, 부번이 0과 양수로 구성된 경우입니다. 2. 특지 구분에 일반이 없는 경우 개발도구 - Visual Basic을 눌러 VBA 편집기를 엽니다.만약 개발도구 탭이 안보인다면 파일 - 옵션 - 리본 사용자 지정에서 개발 도구 왼쪽의 체크 박스에 체크하면 됩니다. 왼쪽 위 프로젝트 창에서 '지번주소 결합 완성(2).xlsx)를 선택하고,  삽입 - 모듈을 눌러 모듈을 추가합니다.엑셀 파일 아래에 모듈과 Module1이 추가되고, 오른쪽에는 빈 코드 창이 열립니다. ..

EXCEL - VBA 2024.05.23

표 간 서식 복사하기

1. 문제 아래와 같이 표 2개가 있고, 위의 서식이 변하면 아래에 서식이 자동으로 복사되도록 하려고 합니다. 2. 해법 1(실패) 일단 생각할 수 있는 것이 Worksheet_Change 메서드입니다. Sheet1을 클릭한 다음 오른쪽 코드 창에서 Worksheet 객체를 선택한 다음 오른쪽에서 Change 메서드를 클릭합니다. 그러면 아래와 같이 Worksheet_Change 서브 프러시저가 생성됩니다. "일정한 범위 내 값이 바뀐다면"이라는 조건문은 아래와 같이 정형화되어 있습니다. Private Sub Worksheet_Change(ByVal Target As Range) Dim keyCells As Range Set keyCells = Range("c5:d8") If Not Application..

Excel 2024.05.03

한글이 아닌 엑셀로 하는 메일 머지(2)

다. 연결키를 가져오는 매크로 작성(1) 매크로 작성 명단 시트에 만들어둔 연결키 중 B열의 번호를 하나씩 고지서 시트의 L6셀에 넘겨주면 됩니다. 코드를 작성하기 위해 개발 도구 - Visual Basic을 클릭합니다. 만약 개발 도구 탭이 보이지 않는다면 파일 - 옵션 - 리본 사용자 지정에서 개발 도구 탭에 체크하고 확인 버튼을 눌러야 합니다. => https://lsw3210.tistory.com/142#google_vignette 그리고, 삽입 - 모듈을 클릭해서 Module1을 만든 다음 오른쪽 에디터 창에 아래 내용을 복사해서 붙여 넣습니다.Sub 고지서개별인쇄() Dim sht1 As Worksheet, sht2 As Worksheet Dim i As Integer, endRow As In..

EXCEL - VBA 2024.03.28

두 개의 표를 날짜에 따라 맞춰서 표시하기(2) - Dictionary

1. Dictionary의 개념Dictionary는 키와 값이 한 쌍으로 된 구조로 Json파일의 Key, Value와 비슷합니다. 그런데 Json 파일을 다룰 때는 주로 Value 관점에서 접근했는데, Dictionary는 그동안 사용한 경험으로는 고윳값을 만들기 위해 Key 위주로 사용합니다. Dictionary의 가장 큰 특징은 Key가 하나뿐이 존재하지 않는다는 것으로, 중복된 데이터를 거르는데 많이 사용하고, 속도도 매우 빠릅니다. 2. Dictionary 선언 방식에 따른 비교VBA에서 Dictionary를 사용할 때는 참조를 지정해서 이용하는 방식과 참조를 지정하지 않고 VBA의 Object 라이브러리를 이용하는 두 가지 방법이 있으며, 추천은 첫 번째 도구 - 참조 방식인데 이것의 단점은 ..

EXCEL - VBA 2024.01.25

좌표를 이용해 엑셀에 도면 표시하기(3)

(라) For ~ Next 반복문 실행 For i = 2 To 21 BottomRow = 작은값행(Sheets(3).Cells(i, 2).Value, eastRange) topRow = 작은값행(Sheets(3).Cells(i, 3).Value, eastRange) RightCol = 작은값열(Sheets(3).Cells(i, 4).Value, northRange) + 1 LeftCol = 작은값열(Sheets(3).Cells(i, 5).Value, northRange) - 1 Set shp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, Cells(topRow, LeftCol).Left, Cells(topRow, LeftCol).Top, _ Cells(topRow..

EXCEL - VBA 2023.11.16

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

이 글에서는 범위로 처리했는데, 배열로 처리하는 것을 다뤄보겠습니다. 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

매크로 - 범위로 처리하기

그동안은 매크로 작성 시 범위로 처리하는 것만 알고 있었는데, 최근에 유튜브를 보니 셀마다 처리하는 것이 아니라 배열에서 처리한 후 한꺼번에 범위에 일괄로 데이터를 입력하는 것이 훨씬 빠르다는 내용을 보고 충격을 받아 정리하고자 합니다. 먼저 범위로 처리하는 방법을 알아보겠습니다. A열에 2를 곱한 값을 B열에 넣는다고 할 때 범위로 처리하는 것은 아래와 같습니다. 1. 코드 작성 및 실행 먼저 개발 도구 - Visual Basic을 누르고, 삽입 - 모듈을 클릭해서 모듈을 추가합니다. 그리고, 코드 창에 아래 내용을 복사해서 붙여 넣습니다. Option Explicit Sub 곱하기() Dim rng As Range, c As Range Set rng = Range(Range("a1"), Range("..

EXCEL - VBA 2023.09.03

구구단 만들기(4) (엑셀 VBA 구구단 프로그램 확장)

[프로그램 구현] Option Explicit Sub 구구단() Dim i As Integer, j As Integer 'i는 구구단 앞 숫자, j는 구구단 뒷 숫자 Dim iRow As Integer, iCol As Integer, iLastCol '셀 주소 행, 열, 마지막 열 Dim iLastDan As Variant, iDisplayDan As Variant '구구단 최종 단수, 한 줄에 표시할 단수. 취소 버튼이 있기 때문에 Variant로 줘야 합니다. Application.ScreenUpdating = False '처리하는 동안 화면 갱신하지 않음 ' 문장 2개를 나란히 쓸 때는 콜론으로 연결 iRow = 3: iCol = 1 Do iLastDan = Application.InputBox("..

EXCEL - VBA 2022.12.13
반응형