반응형

배열 16

파워 쿼리와 VLookup 비교(1)

1. 문제 아래와 같은 매출자료를 바탕으로 여러 가지 검색 및 집계를 해보겠습니다. 2.Vlookup 함수의 장점 및 한계 가. 장, 단점 VLookup 함수는 찾을 값을 빨리 찾아주는 기능이 있는데, 찾고 자 하는 값이 찾을 범위의 첫 번째 열에 있어야 하고, 반환받을 값은 인덱스가 +여야지 -면, 다시 말해 찾을 범위의 첫 번째 열의 왼쪽에 있으면 안 됩니다. 그리고, 중복된 값이 있어도 첫 번째 값만 반환해 주는 한계가 있습니다. 나. VLookup 함수를 이용한 예시 (1) A지점에 해당하는 매출일자 및 매출액 찾기 (가) 매출일자 찾기 E2셀에 A지점이라고 입력하고, F2셀과 G2셀에 A지점에 해당하는 매출일자와 매출액을 구해보겠습니다. 먼저 매출일자를 구하는 수식은 아래와 같습니다. =VLOO..

여러가지 중 한 가지 조건 일치 검색시 or 대신 배열 사용

1. 문제 아래와 같이 이름과 값이 자료가 있을 때, 이름에 해당하는 값의 합계를 구하려고 합니다. 2. 해법 1 위와 같은 표에서 이름이 홍길동이거나 장발산에 해당하는 값의 합계를 구하려면 =SUMPRODUCT(($A$3:$A$7=D3)+($A$3:$A$7=D4),$B$3:$B$7) 라고 입력해서 합계를 구합니다. 위 수식을 보면 ($A$3:$A$7=D3)+($A$3:$A$7=D4)라고 ($A$3:$A$7=D3)과 ($A$3:$A$7=D4)가 +로 연결되어 있는데, 이것은 두 가지 조건 중 하나만 일치해도 된다는 Or 조건입니다. 다시 말해 위 수식은 이름이 홍길동이거나, 이무인 경우가 됩니다. 그리고, 값의 범위 $B$3:$B$7에서 조건에 맞는 값을 찾아 합계를 구하는 것입니다. 이때 쉼표(,)를 ..

Excel 2024.04.16

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

1. 문제 두 개의 표가 있는데 날짜의 개수가 다릅니다. 이 경우 날짜별로 짝을 맞춰서 오른쪽과 같이 표현하려고 합니다. 다시 말해, 왼쪽에는 1/11이 8개 있고, 오른쪽에는 1/11이 5개이므로 오른쪽 표에서 3개는 공란이 되어야 합니다. 2. 해결 방법 엑셀 함수로 하기에는 너무 어려울 듯합니다. 날짜별로 개수를 세서 한쪽이 부족할 때는 공란으로 채워야 하는데, 날짜도 무작위이고, 개수도 달라질 수 있으므로 VBA로 작성하는 것이 답일 듯합니다. 가. 날짜를 Dictionary에 저장 날짜를 배열에 담을 건지 여부를 판단해야 하는데, 고윳값을 저장하는 것은 Dictionary에 담는 것이 좋습니다. 나. 날짜 데이터 정렬 위 예제에서는 날짜를 정렬할 필요는 없지만, 어떤 경우가 생길지 모르니 날짜를..

EXCEL - VBA 2024.01.23

VBA에서 SumProduct 사용하기

1. SumProduct 함수 SumProduct 함수는 Product, 다시 말해 곱한 값을 더해서 반환해 주는 함수입니다. 가. Product와 Sum함수를 이용하는 경우 아래와 같이 숫자1과 숫자2를 곱한 다음 합계를 낸다고 할 때 Product와 Sum 함수만 알고 있다면 먼저 줄별로 Product, 예를 들어 =product(a2:b2)를 한 후 C7셀에서 Sum을 하면 됩니다. 나. SumProduct 함수를 사용하는 경우 (1) 구문 =SUMPRODUCT(array1, [array2], [array3], ...) 배열로 되어 있는데 범위라고 생각하면 간단합니다. (2) 사용 예 배열을 세로로 해서 A열을 배열1, B열을 배열2로 지정하면 됩니다. 따라서, 위와 같이 곱한 것의 합을 구하려면 ..

EXCEL - VBA 2023.11.30

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

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

RandArray 함수

1. 정의 최솟값과 최댓값 사이의 정수 또는 실수를 지정된 행과 열의 크기의 배열로 반환하는 것입니다. 2. 구문 =RANDARRAY([rows],[columns],[min],[max],[whole_number]) 인수가 5개 있는데, 대괄호 사이에 있으므로 모두 선택사항입니다. 인수명 설명 기본값 rows 배열의 크기를 나타내는 행 수 1 columns 배열의 크기를 나타내는 열 수 1 min 최소값. RandBetween 함수에서는 하한(bottom) 용어 사용 0 max 최대값. RandBetween 함수에서는 상한(top) 용어 사용 1 whole number (정수) 정수인지 여부 - Rand 함수는 실수(Real Number)란 용어 사용 - RandBetween 함수는 정수(integer)란..

Excel 2023.07.15

엑셀 Vstack, Hstack 함수

1. 의미 Vstack 함수는 배열을 세로로 추가해 주는 함수이며, Hstack 함수는 배열을 가로로 추가해 주는 함수입니다. Microsoft 365용 Excel, Mac용 Microsoft 365용 Excel, 웹용 Excel에서만 사용가능한 함수입니다. 웹 용 Excel에서 지원한다는 것이 대단합니다. 2. 구문 =VSTACK(array1,[array2],...) ※ 최대 열 길이에 미달하는 행이 있으면 #N/A! 오류로 채워지므로, IfError 함수를 함께 사용해야 합니다. =HSTACK(array1,[array2],...) ※ 최대 행 길이에 미달하는 열이 있으면 #N/A! 오류로 채워지므로, IfError 함수를 함께 사용해야 합니다. 3. 사용 예 가. Vstack 함수 (1) 열 길이가 ..

Excel 2023.05.22

ArraytoText 함수 - 배열을 문자열로 반환하는 함수

1. 의미 배열을 텍스트, 문자열의 결합으로 반환하는데, format 인수의 값에 따라 반환되는 형태가 너무 다릅니다. 2. 구문 ARRAYTOTEXT(array, [format]) - array : 텍스트로 변환될 배열 또는 데이터가 들어 있는 범위를 지정합니다. - format : 대괄호 사이에 있으므로 옵션입니다. ① 기본값이 0으로 텍스트는 텍스트 그대로 반환하고, 숫자인 경우는 지정된 서식이 모두 해제되어 표시됩니다. 따라서, 날짜도 날짜 형식이 아니라 숫자로 표시되고, % 표시도 없어집니다. 참, 거짓은 True 또는 False로 표시되며, 오류값은 오류값 그대로 표시됩니다. ② 1은 텍스트를 큰따옴표로 감싸고, 처음과 끝을 중괄호로 감싸는 점이 다릅니다. 그러나, 숫자, 날짜, 참,거짓, 오..

Excel 2023.05.12

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

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

EXCEL - VBA 2023.05.08

indirect 함수(2) - 누적값 계산 하기

indirect함수를 사용하면 편리한 경우로 계산하고자 하는 셀 주소가 변경되는 경우입니다. 아래 표는 구간별 명수만이 있어서 몇 개 구간에 대한 명수의 합계를 구할 경우 시작셀과 종료셀의 주소가 매번 달라지게 됩니다. 위와 같은 표로는 Match함수를 사용할 수 없으므로 아래와 같이 초과, 이하 수치 모두 기록하지 않고, 초과 수치만 지정해야 합니다. 그러면 0은 0 초과 60 이하가 되고, 60은 60 초과 70 이하가 됩니다. 1. Match함수를 이용하는 경우 가. 데이터 유효성 검사로 입력값 제한하기D10셀과 E10셀에서 입력을 받는데, 중간값 예를 들어 65 등은 입력하면 안 되므로 데이터 유효성 검사를 이용해 목록으로 값을 제한합니다. ① D10셀부터 E10셀까지 마우스로 끌어서 범위를 선택..

Excel 2023.03.28
반응형