반응형

iF 62

일정한 간격으로 된 값 합계 구하기 - 사용자 정의 함수

1. 배열 수식의 단점 배열 수식을 이용할 경우 편리한 것 같기도 하지만 아래와 같이 여러 가지 함수를 결합해서 사용해야 하고, =SUM((MOD(COLUMN($D$3:$O$3),2)=0)*$D$3:$O$3) 합계를 구하는 셀의 위치가 달라지면 나머지 값을 바꿔줘야 하는 불편함이 있습니다. 그래서 VBA로 사용자 정의 함수를 만드는 것을 해보겠습니다. 2. 사용자 정의(지정) 함수 만들기 가. Function과 Sub 프로시저 사용자 정의 함수는 Sub 프러시저와 같이 모듈에 만드는데 약간 다른 점이 있습니다. Function Procedure(사용자 정의 함수) Sub Procedure Function 함수명(인수1 as 형식, ...) as 형식 처리 프로세스 함수명 = 값 End Function S..

EXCEL - VBA 2023.03.20

날짜 변환 - DateValue 함수, 선택하여 붙여넣기 VBA(2)

1편은 날짜를 변환할 열에 데이터가 연속적으로 있다고 가정하고 만든 것인데, 날짜가 중간에 비어 있다면 End(xlDown)했을 때 데이터가 있는 마지막 행으로 이동하는 것이라 데이터가 없는 중간에 멈추게 됩니다. 아래와 같이 A6셀에 데이터가 없을 경우 날짜변환 매크로를 실행하면 A6셀 전까지만 날짜변환이 처리됩니다. 1. 원인 분석 1 첫 번째 If문에 중단점을 설정한 후 실행하고 A열을 선택한 후 확인 버튼을 누르 If문에서 실행이 멈추게 되는데 F8을 눌러 한 단계씩 실행하면 직접 실행 창에 물음표 다음에 col_num(1, 1).End(xlDown).Row을 붙여 넣고 엔터키를 누르면 2가 표시되고, 물음표 다음에 Cells(Rows.Count, col_num.Column).End(xlUp).R..

EXCEL - VBA 2023.02.17

CurrentRegion 속성을 이용한 합계 등 계산(2)

1편에서는 표로 만들었는데, 입력하지 않은 주변 셀까지 수식이 자동으로 입력되어 범위로 변경하였습니다. 이전 편에서는 과목별 합계 등을 구해봤는데, 이번에는 성명을 기준으로 한 합계 등을 구해보겠습니다. 다른 점은 과목별 합계를 구할 때는 Sum 등이 아래에 있어서 4개를 뺄 수 있었는데, 성명별 합계를 구할 때는 처음에는 없다가 VBA를 실행하면 추가되기 때문에 두 가지 요소를 고려해서 매크로를 작성해야 한다는 것입니다. 또한 합계 등을 구할 때 행 별로 합계를 구해야 하고, 행을 내려가면서 합계 수식을 반복하는데 Sum이전의 end_row_of_calc(계산할 마지막 행) 까지만 실행해야 합니다. 1. 코드 작성 가. 계산할 마지막 열 구하기 Sum 등이 있을 경우와 없을 경우 end_col_of_c..

EXCEL - VBA 2023.02.06

Lambda 함수의 매개변수를 옵션으로 지정 및 설명 입력 방법

Lambda함수에서 매개변수는 옵션이므로 대괄호 사이에 매개변수를 입력하고, isOmitted함수와 같이 사용해서 입력하지 않은 경우와 입력한 경우 처리 방법을 정의하면 됩니다. 1. Lambda 함수의 매개 변수를 옵션으로 지정하는 방법 가 사용 예 1 A와 B의 값을 더하는데, B를 입력하지 않으면 7을 더하고, 입력하면 A+B를 반환하도록 하려면 =Lambda(a, [b], if(isOmitted(b), a+7, a+ b) 라고, a는 필수 입력 요소이고, b는 대괄호 사이에 있기 때문에 선택적 입력 값이 됩니다. 그리고, If함수를 이용해서 isOmitted, 다시 말해 b입력이 생략됐다면, 입력이 안 됐다면 그다음 a+7을 반환하고, b가 입력되면 a+b를 반환하는 것입니다. 따라서, =Lamb..

Excel 2023.01.20

Lambda 함수 매개변수 2개 이상인 경우(2)

아래와 같이 문자열에서 제외 문자를 제거한 문자열을 구해보겠습니다. 1. 논리 제외문자를 하나씩 돌아가면서 문자열에 해당하는 제외 문자가 있다면 공백으로 바꾸면 됩니다. 어디서 가져온 것인데, 머리가 좋네요. 왼쪽부터 한 글자씩 비교하고, 문자열의 길이보다 하나 작은 길이만큼 오른쪽에서 계속 가져오면 마지막까지 비교하게 됩니다. 2. 수식 =LAMBDA(textString,excludeChars, IF(excludeChars="", textString, RemoveChars( SUBSTITUTE(textString, LEFT(excludeChars, 1),""), RIGHT(excludeChars, LEN(excludeChars)-1) ) ) ) 수식 > 이름 관리자에서 새로 만들기 버튼을 누른 후 이름..

Excel 2023.01.19

Lambda 함수 매개변수 2개 이상인 경우(1)

=LAMBDA([parameter1, parameter2, ...,] 계산식) Lambda함수의 구문이 Parameter를 여러 개 전달하고, 이를 이용해 계산식에 적용한 후 결괏값을 반환하므로 2개 이상의 매개변수를 전달할 수 있습니다. Lambda함수는 Microsoft 365용 Excel, Microsoft 365용 Excel(Mac용), 웹용 Excel에서만 이용가능합니다. 따라서 이전 버전이란 함수 목록에 표시되지 않고, Lambda함수로 된 수식은 #NAME! 에러가 발생합니다. 1. 직각삼각형의 빗변의 길이 구하기 가. 수식을 이용한 경우 피타고라스의 정리에 따라 밑변과 높이의 제곱을 더한 후 제곱근을 구하면 됩니다. 제곱근을 구하는 함수는 SqRt(Square Root)이고, 제곱을 구하는..

Excel 2023.01.18

구구단 만들기(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

구구단 만들기(3) (엑셀 VBA 프로그래밍 기초)

프로그램을 짜는 것은 논리(로직)만 만들어지면, 그다음은 그것을 해당 언어의 문법에 맞게 구성해 나가면 됩니다. ​ 구구단 어릴 적 많이 외웠던 것인데, 프로그램으로 만들어보면 기초 쌓는데 도움이 될 듯하여 골랐습니다. 만들 모양은 아래와 같습니다. 매크로 기록하기에서는 2단, 3단 등 단수 제목을 복잡해서 뺐는데, 프로그램을 짤 때는 그렇게 어렵지 않아 넣었습니다. [프로그램 로직] ​ ① A1에 '구 구 단'이라고 입력하고, A1에서 W1까지 범위를 '병합하고 가운데 정렬'한 후, 글자크기를 16, 굵게로 설정합니다. ​ ② A3에 '2 단'이라 입력하고, A3에서 E3까지 병합하고 가운데 정렬한 후, 글자를 굵게 합니다. ​ ③ 2단은 A4부터 E12까지 입력하는데, A열은 모두 2이고, B열은 *..

EXCEL - VBA 2022.12.12

데이터 유효성 검사와 컨트롤 서식(콤보 상자)

1. 콤보 상자 만들기 데이터 유효성 검사의 목록 기능을 개발 도구 - 컨트롤 그룹에서 삽입 명령을 누른 후 콤보 상자를 선택해서 만들 수도 있습니다. 콤보 상자를 누르면 상태 표시줄에 '드롭다운 컨트롤을 만들려면 문서에서 마우스를 누르고 끕니다'라고 표시되므로 마우스를 끌어서 적당한 크기로 만듭니다. 콤보 상자 안에 커서를 넣고 마우스 오른쪽 버튼을 누르면 맨 아래에 '컨트롤 서식' 메뉴가 보입니다. 간혹 가다 마우스 오른쪽 버튼을 눌러도 아래와 같이 복사, 이동 메뉴가 나오는 경우가 있는데 이 때는 취소 메뉴를 누른 후 다시 마우스 오른쪽 버튼을 눌러보기 바랍니다. 컨트롤 서식을 누르면 아래와 같이 입력 범위, 셀 연결, 목록 표시 줄 수를 입력하고, 3차원 음영을 선택할 수 있는 창이 표시됩니다. ..

Excel 2022.11.30

VBA 조건문(1) - If

프로그램을 제어하는 구문은 조건문과 반복문이 있으며, 조건문은 If문과 Select Case문이 있고, 반복문은 For문과 While문이 있습니다. 먼저 If문에 대해 알아보겠습니다. 1. 구문 위 구문에서 [ ] (대괄호) 안에 있는 문장은 옵션이므로 생략 가능합니다. 따라서, 가장 간단한 조건문은 If 조건 Then End If 가 됩니다. 아래와 같이 코드를 작성하려면 먼저 개발도구 - Visual Basic 명령을 누른 후 위 쪽 표준도구 모음에서 삽입 아이콘을 누른 후 모듈을 추가해야 합니다. Microsoft 도움말 사이트 If 조건문의 구문 설명에 Then이 대괄호 사이에 있어서 생략 가능하다는데, 지우면 Then 또는 GoTo가 필요하다고 하면서 에러가 나므로 꼭 있어야 합니다. 그리고 실..

EXCEL - VBA 2022.11.04
반응형