반응형

value 14

VBA 에서 .Value가 필요한 경우

1. 문제  아래와 같이 지출 내역이 있을 때구분이 몇 가지 있는지 추출하려면 아래와 같이 데이터 탭의 '중복된 항목 제거'를 하는 것이 간결하지만VBA에서 Dictionary를 이용해 중복된 것은 하나만 추출하는 것을 해보겠습니다.  '중복된 항목 제거'를 하려면먼저 구분을 다른 범위에 복사해서 붙여넣고 데이터 탭을 선택한 후 '데이터 도구 그룹'의 '중복된 항목 제거' 명령을 누르고, 중복된 항목 제거 기준이 '구분'으로 되어 있으므로,확인 버튼을 누르면 됩니다. 그러면 "중복 값 3개가 발견되어 제거되었다"고 합니다.   2. 성공 - Range 다음에 .Value를 붙인 경우VBA에서 중복값을 제거할 때는 여러 가지 방법이 있을 수 있지만Dictionary를 이용하는 것이 제일 편합니다. 개발도구..

EXCEL - VBA 2024.08.02

병합된 셀의 홈(A1) 셀 알아내기(2) - 홈 셀 알아내기

1편을 여기서 확인하세요. 나. '홈 셀'(1) 홈 셀의 의미홈 셀을 병합된 셀 기준으로 보면 A1셀, 다시 말해 1행 1열이 됩니다. 따라서, Range("A1")이라고 해도 되고, Cells(1,1)이라고 해도 됩니다. (2) 함수 만들기 반복된 동작은 Sub 프로시저로 처리하는데,처리한 후 값을 반환받는 함수를 만들려면 Function 프로시저를 사용해야 합니다.  ① 위 파일을 연 다음개발 도구 - Visual Basic을 누릅니다. 그리고, 맨 아래에 Function이라고 쓰고, 함수명을 입력하는데,GetHomeCell이라고 하겠습니다.그리고 셀 주소를 인수로 받아야 하므로 인수명을 rng로 하고 형식을 Range로 지정합니다.그러면 아래와 같이 됩니다.Function GetHomeCell(rn..

EXCEL - VBA 2024.05.30

본부·지점별 직급별로 평정자 구하기

1. 문제  아래와 같이 부서별, 성명별 구분(본부·지점)별, 직급별 평정 대상자 시트가 있고,   본부·지점별 , 직급별로 1,2차 평정자와 조정평정자를 입력한 시트가 있을 때   부서별로 1,2차 평정자와 조정평정자를 구하는 것을 해보겠습니다. 2. 논리  VLookup 함수의 구문은  VLOOKUP (lookup_value, table_array, col_index_num, [range_lookup])인데,  2번째 인수인 table_array(찾을 범위)를 지정하는 것이 중요합니다.   본부라면 B5셀에서 E20셀을 참고하고,  지점이고 직급이 3급 이상이면 G5셀에서 J12셀을 참고하고  지점이고 직급이 4급이하면 L5셀에서 O12셀을 참고하도록 해야 합니다. 3. 해법 가. 찾을 범위를 이름으..

Excel 2024.05.17

문자열 중 원문자 지우기(4) - Scan, Reduce

이번에는 Reduce와 Scan 함수를 이용해 원문자를 제거해 보겠습니다.   1. Reduce 함수를 이용한 수식가. Reduce 함수의 구문=REDUCE([initial_value], array, lambda(accumulator, value))initial_value는 초기값, array는 배열, accumulator는 initial_value와 array를 받는 것이고,value는 accumulator를 이용해서 값을 구하는 수식입니다. 나. 원문자가 아니라면 한 글자씩  결합A2셀을 대상으로 A22셀에서 수식을 작성하겠습니다. 먼저 초기값은 문자열을 결합할 것이므로 ""으로 해야 합니다. 비워두면 0으로 생각해서 이상한 값이 나옵니다. array는 배열인데, 글자를 한 글자씩 구분하기 위해 1부..

Excel 2024.05.14

한 셀에서 일정한 간격으로 떨어진 숫자 합계 구하기

1. 문제 아래와 같이 일정한 길이의 숫자가 한 칸 공백으로 연결되어 있을 때 합계를 구하는 것을 알아보겠습니다. Mid를 이용한 365 이전 버전과 TextSplit와 ByRow를 이용한 365 버전 2가지, 총 세 가지 방법에 대해 알아보겠습니다. 2. Mid 함수 가. Mid 함수의 구문 MID(text, start_num, num_chars)로서 문장(또는 문자열이 들어 있는 셀 주소)과 시작 위치, 가져올 문자의 개수 3개로 되어 있습니다. 나. 수식 작성 위 문제를 살펴보면 숫자는 7자리이고, 공백이 1개 있으므로 8개가 1묶음입니다. 따라서, Mid함수를 이용해 Mid(A2,1,7), 그다음은 Mid(A2,9,7)... 식으로 개별적으로 숫자를 발췌한 후 더할 수도 있으나 배열 수식을 이용해..

Excel 2024.03.07

문장에서 숫자만 추출하기(2)

3. Find함수를 이용해 첫 번째 숫자의 위치 찾기(성공) Find함수의 첫 번째 인수는 찾을 값인데, 배열로 지정할 수 있으므로 숫자를 배열에 넣어서 =find({0,1,2,3,4,5,6,7,8,9},a2)라고 하면 Microsoft 365의 경우는 아래와 같이 동적 배열로 반환됩니다. 다른 엑셀 버전은 7만 반환될 듯합니다. 위 반환값에서 7은 0의 위치, 9는 1의 위치이며, 세 번째부터는 에러가 발생하는데 해당하는 숫자가 없기 때문입니다. 에러가 나면 떠오르는 것이 Aggregate 함수입니다. 배열형인 경우 Aggregate 함수의 구문은 AGGREGATE(function_num, options, array, [k])이며, 두 번째 인수인 options에서 오류값을 무시하는 옵션을 지정할 수 ..

Excel 2023.11.06

문장에서 숫자만 추출하기(1)

1. Find 함수를 이용해 맨 오른쪽 공백의 위치 찾기(실패) 마지막 공백의 위치를 찾은 다음, 그 위치의 오른쪽 첫번째부터 숫자를 가져오면 됩니다. Find 함수는 구문이 FIND(find_text, within_text, [start_num]) 이므로 세번째 인수로 시작 위치를 숫자로 지정할 수 있습니다. 숫자의 길이에서 왼쪽으로 시작 위치를 지정하려고 하는데 10이면 두번째가 아니라 첫번째 공백 위치까지 갈 수 있으므로 5로 지정하겠습니다. 그러면 수식은 =find(" ",a2, len(a2)-5) 가 됩니다. 공백의 위치 6이 구해졌습니다. 숫자를 추출하는 것은 그 위치에 1을 더한 위치부터 가져오는데 Mid함수를 이용하면 됩니다. Mid함수의 구문은 MID(text, start_num, num..

Excel 2023.11.04

한글과 영문을 기준으로 숫자 분리하기

아래와 같이 텍스트에 '오더'와 'Order'가 있을 때 그다음에 나오는 숫자를 분리하는 다양한 해법에 대해 알아보고자 합니다. 1. 방법 1 가. '오더'를 기준으로 숫자 분리하기 간단하게 생각할 수 있는 방법은 오더 또는 Order를 찾아서 그 위치를 기준으로 값을 가져오는 것인데, 오더는 2글자이고, Order는 5글자이다 보니 조건을 달리해야 하며, Mid함수를 이용해 숫자를 분리해서 가져오는 경우 반환값이 문자이기 때문에 숫자로 변환하기 위해서는 Value 함수를 이용해야 합니다. 따라서, =VALUE(MID(B4,FIND("오더",B4)+3,10))이 됩니다. Find함수는 구문이 FIND(find_text, within_text, [start_num]) 이므로 find_text는 "오더"이며..

Excel 2023.09.01

공백의 코드 값이 여러 가지입니다.

이 글에서 텍스트로 된 수식의 값을 구하는 사용자 정의 함수를 만들었는데, 네이버 카페에서 글을 읽다 보니 텍스트 수식을 값으로 바꿔달라는 글이 있어 이 파일에 적용해 보니 안됩니다. 원래는 엑셀 통합문서(*.xlsx)인데 위 사용자 정의 함수를 복사해서 붙여 넣은 후 매크로 사용 통합문서(*.xlsm)으로 바꿨습니다. 그리고, B1셀에 =calc_text(A1)라고 입력하고 엔터키를 누르니 #VALUE! 에러가 발생합니다. 왜 그런가 하고 A1을 마우스로 선택하고 F9키를 누르니 뒤에 공백이 하나 있습니다. 1. 공백 없애기 가. 실패 1 =calc_text(SUBSTITUTE(A1," ",""))라고 SUBSTITUTE함수를 이용해서 공백 한 칸을 공백이 없는 것을 대체하는 수식을 추가해도 여전히 #..

Excel 2023.08.20

텍스트로 된 수식의 값 구하기(4 - 2) - 사용자 정의 함수

텍스트로 된 수식의 값 구하기(4 - 1) - Evaluate 함수에서 VBA의 Evaluate 함수를 이용해 수식의 값을 구할 수 있다는 것을 알았는데, https://lsw3210.tistory.com/entry/%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%A1%9C-%EB%90%9C-%EC%88%98%EC%8B%9D%EC%9D%98-%EA%B0%92-%EA%B5%AC%ED%95%98%EA%B8%B04-1-Evaluate-%ED%95%A8%EC%88%98 직접 실행창에서 매번 실행할 수는 없으므로 사용자 정의 함수를 만들어 사용해야 합니다. 1. VB 에디터 실행 개발도구 - Visual Basic을 눌러 VB Editor를 연 다음 엑셀 파일명을 클릭한 다음 사용자 정의 폼 삽입 옆의 콤..

EXCEL - VBA 2023.07.20
반응형