반응형

Row 14

연령별 채권잔액 구하기(3) - Reduce 함수

1. 문제1편에서는 월별 매출액, 수금액 시트에서 월별 채권잔액을 구하고, 2편에서는 월별 잔액을 집계표 형식으로 구했는데, 2편과 같은 값을 Reduce함수를 이용해 구해보겠습니다. 2. Reduce 함수와 Scan 함수Reduce함수는 최종 결괏값만을 돌려주는데 비해서, Scan 함수는 계산 단계별 값을 반환해 주는 것이 다른 점이고 구문은 같습니다. 가. Reduce 함수Reduce 함수의 구문은=REDUCE([initial_value], array, lambda(accumulator, value, body))로서 종전에는 구문이 lambda까지만 표시됐었는데 lambda의 인수까지 표시하는 것으로 바뀌었습니다.그런데 더 헷갈리네요. 아래는 Reduce 함수의 예제로서 Reduce함수의 초기값이 비..

Excel 2024.09.10

연령별 채권잔액 구하기(2) - SumIf + Offset

1. 문제아래와 같이 이월액과 월별 매출액, 수금액, 미수금이 있을 때 아래와 같이 월별(연령별) 채권잔액을 구하려고 합니다. 2. 해법가. 논리7월의 채권잔액은 7월까지의 매출액(이월액 포함)에서 미수금의 합계를 차감한 다음 6월까지의 채권잔액을 차감하면 되는데, 6월까지의 채권잔액은 6월까지의 매출액(이월액 포함)에서 미수금의 합계를 차감한 금액으로 7월의 채권잔액을 구할 때나 6월까지의 채권잔액을 구할 때나 미수금의 합계는 같습니다. 나. 수식 만들기 (1) 7월 채권잔액 구하기 ㉮ 7월까지 매출액 계 구하기 '거래처수불현황'시트에서 7월까지의 매출액(이월액 포함) 합계를 구하는데, '매출액'이라는 글자는 4행에 있고, 금액은 그 아래 있습니다. 따라서, 7월까지의 매출액 합계는 SumIf 함수를 ..

Excel 2024.09.09

법정동을 선택하여 PNU 완성하기(1) - Index + Aggregate

1. 문제 ① 읍면동명과 지번을 A2셀과 B2셀에 입력하면 ② 읍면동명을 포함한 법정동명을 검색한 후③ 유효성 검사 목록에 넣고④ 법정동명을 선택하면 해당 법정동 코드가 구해지고,⑤ 지번을 이용해 특지구분과 본번과 부번을 각각 4자리로 만들어⑥ 이들을 모두 결합해서 19자리 PNU 코드를 완성하려고 합니다. 법정동코드 시트는 법정동코드, 법정동명, 폐지여부 3개 열로 구성되어 있습니다. 2. 해법  가. A2셀에 입력된 읍면동명을 포함하는 법정동명 구하기포함이니까 Find 함수와 IsNumber가 필요하고,포함하는 법정동명을 여러 개 순서대로 구해줘야 하니 Small 또는 Aggregate 함수가 필요하고,순번에 맞는 법정동명을 구해야 하니 Index 함수,그리고, 에러 발생 시 공백으로 만들기 위해 I..

Excel 2024.08.20

왜 범위 지정 오류?

1. 문제 G2셀의 구분에 해당하는 값을 B열에서 찾아서 해당하는 A열에서 C열의 값을 i열부터 K열에 표시하려고 하는 것입니다. 가. Sheet1에서 '같은시트에복사' 매크로 실행 위 파일을 연 후 개발 도구 - 매크로를 누르고, 매크로 이름 목록에서 '같은시트에복사' 매크로를 클릭하고, 오른쪽 위 실행 버튼을 누르면 G2셀에 선택된 값과 동일한 구분에 해당하는 데이터만 i열부터 K열에 잘 복사됩니다. 나. Sheet1에서 '다른시트에복사' 매크로 실행 이번에는 Sheet1 시트가 선택된 상태에서 개발 도구 - 매크로를 누른 다음 '다른시트에복사' 매크로를 실행하고 Sheet2를 클릭해 보면 G2셀에 해당하는 값들이 잘 표시됩니다. 다. Sheet2에서 '다른시트에복사' 매크로 실행 그런데, Sheet..

EXCEL - VBA 2024.08.06

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

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

EXCEL - VBA 2024.05.23

한글이 아닌 엑셀로 하는 메일 머지(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

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

1. 문제고지서 서식은 한 장이고, 인쇄할 내용을 아래 명단 시트에서 순서대로 찾아서 인쇄하고자 할 때 먼저 생각나는 것이 워드나 한글의 메일 머지 기능입니다. 그러나, 여기서는 엑셀의 매크로로 구현하고자 하는 것입니다. 인쇄할 내용을 채우는 방법이 두 가지가 있습니다. 이름만 입력하면 나머지 내용은 수식으로 가져오는 방법, 이름뿐만 아니라 나머지 내용까지 매크로로 처리하는 방법인데, 한 가지씩 알아보겠습니다. 2. 해법 1 : 이름만 입력하고 나머지는 수식으로 가져오는 방법 가. 연번별로 이름에 순번 부여하기(1) 로직 연번을 기준으로 인쇄하는데, 연번에 동일인이 있다면 같은 고지서에 인쇄하고, 다른 사람이라면 별도의 고지서에 인쇄해야 합니다. 이를 위해서는 고지서 발행 기준인 순번과 동일인여부 순번 ..

EXCEL - VBA 2024.03.27

거래처명에서 일치하는 고객명 찾기(1) - Find 함수

1. 문제 아래와 같이 당월 시트의 B열에는 거래처명이 있고, 고객 시트에 고객명이 있는데, 거래처명 중 일치하는 고객명을 추출하는데, 김영희와 영희는 모두 만족하지만 긴 고객명을 출력해야 합니다. 2. 해결 방안 여러 가지 방법이 있을 수 있습니다. Find 함수를 이용할 수도 있고, 365 버전이라면 Scan 함수를 이용할 수도 있습니다. 각각 해결 방법을 알아보겠습니다. 가. Find 함수 (1) Find 함수의 구문 FIND(find_text, within_text, [start_num])로서 find_text는 찾을 문자열, within_text는 찾는 문자가 들어 있는 문자열 또는 범위, start_num은 찾기 시작할 위치인데, 대괄호 안에 있으므로 옵션입니다. (2) 일치하는 고객명의 위치..

Excel 2024.03.04

떨어진 값을 곱한 후 합계 구하기

1. 문제 D열의 값과 O열의 월에 해당하는 값, 다시 말해 2024/01은 E열, 2024/02는 F열의 값을 곱한 다음 그 합을 구해서 P열에 입력하는 것입니다. P5열에 예시로 든 수식은 =(D5*E5)+(D6*E6)+(D7*E7)+(D8*E8)+(D9*E9)로 전형적인 SumProduct 함수의 사용 예입니다. 2. SumProduct 함수 SumProduct 함수의 구문은 =SUMPRODUCT(array1, [array2], [array3],...)으로 곱할 값들의 범위 또는 배열을 1개 이상 입력하는 것입니다. 위와 같은 경우 array1은 D5:D9가 되고, array2는 E5:E9가 됩니다. P4셀에 =SUMPRODUCT(D5:D9,E5:E9)라고 입력하면 =(D5*E5)+(D6*E6)+(..

Excel 2024.02.08

좌표를 이용해 엑셀에 도면 표시하기(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
반응형