반응형

substitute 14

문자열 중 원문자 지우기(1) - Unicode, Substitute

1. 문제문자열 중에서 원문자만 지우려고 합니다.  자세히 살펴보면 원문자가 문자열의 맨 뒷부분에만 있고, 원문자가 하나뿐만 아니라 3개까지 있습니다. 2. 원문자의 코드 값 알아내기B3셀에서 ①만 복사한 후 W1셀에 붙여 넣고코드 값을 알아내기 위해 X1셀에 =code(w1)이라고 입력하면 43239가 구해지고,Y1셀에 =unicode(w1)이라고 입력하면 9312가 구해집니다. Code 함수는 윈도우에서는 ANSI 코드값을 반환하고, Unicode에 대한 설명을 나무위키에서 찾아보면 "유니코드(Unicode)는 전 세계의 모든 문자를 다루도록 설계된 표준 문자 전산 처리 방식이다. 유니코드 컨소시엄(Unicode Consortium)에서 제정, 관리한다."라고 되어 있습니다. 따라서, Code 값 또..

Excel 2024.05.09

문장을 .과 ?를 기준으로 분리하기

1. 문제 아래와 같이 대화처럼 남자, 여자가 있는 경우도 있고(A2, A3셀), 마침표나 물음표가 있으면 줄을 바꾸려고 하며, (잠시 후)와 같이 괄호 안에 있는 문제는 제거하려고 하는 문제입니다. 이것이 원하는 결과입니다. 2. 해법 1 : TextSplit 함수 TextSplit 함수를 이용하면 간단한 줄 알았더니 TextSplit 함수를 사용하면 구분자인 마침표와 물음표가 없어지는 문제가 있고, 마지막의 마침표가 하나의 배열로 생성되기 때문에 분할하는 Text를 길이보다 하나 작은 것을 기준으로 해야 합니다. 가. A2셀 분리 (1) TextSplit의 대상인 Text를 길이보다 하나 짧은 길이로 지정하고, A2의 경우 "여자: "가 있으므로 4부터 시작 = MID(A2,4,LEN(A2)-4) (..

Excel 2024.05.06

배열로 Or 조건 처리

1. 문제 왼쪽에 담당자별 지역별 현황이 있는데, 이것을 오른쪽 표와 같이 담당자별로 지역별로 집계를 하려고 하는데, 특이한 점은 지역을 묶어서 집계한다는 것입니다. 이런 경우에 일반적으로 사용하는 것이 피벗 테이블이지만, 위와 같이 수원, 용인 경우의 합계를 구하려면 두 개의 값을 더할 수밖에 없습니다. 이와 같은 경우에 수원 또는 용인인 경우라는 조건을 넣어서 건수를 집계하고자 하는 것입니다. 2. 해법 1 : TextSplit 함수 이용 가. Sum + CountIfs 이용 TextSplit 함수는 Microsoft 365에서만 사용 가능한 함수이기 때문에 이보다 낮은 버전이라면 사용할 수 없는 제한은 있지만 이와 같은 경우에 매우 쉽게 처리할 수 있습니다. 다시 말해 수원, 용인을 TextSpli..

Excel 2024.05.04

특정 문자 기준 몇 번째까지 문자열 가져오기

1. 문제아래와 같이 빨간 글자 전까지만 글자를 가져오는 것을 수식으로 만들어보겠습니다. 2. 해법기준은 뒤에서 두 번째 콜론까지 가져오는 것입니다. 가. Substitute 함수 사용(1) 몇 번째부터 몇 번째 + 1번째 사이의 문자열 추출하기몇 번째부터 몇 번째 + 1번째까지의 문자열을 추출하는 것은 50개의 공백을 삽입한 다음 50*번째부터 50개의 문자를 추출한 다음 좌, 우 공백을 제거합니다.위 데이터를 기준으로 세 번째 콜론과 네 번째 콜론 사이의 문자를 추출하는 것은=TRIM(MID(SUBSTITUTE(D4,":",REPT(" ",50)),50*3,50))로 구합니다. (2) 처음부터 몇 번째까지의 문자열 추출하기이것은 특정 문자를 네 번째 위치에 삽입한 다음 그 문자를 찾아서 -1까지를 가..

Excel 2024.04.26

특정 기호 사이의 문자 찾기(2)

나. substitute 함수를 이용하는 경우 1편은 아래 URL을 참고 바랍니다. https://lsw3210.tistory.com/463 substitute 함수는 특정 문자를 다른 문자로 대체하는 함수인데, 문자를 대체하면서 공백을 많이 주면 문자를 구분하기 쉬우므로 많이 사용합니다. 예를 들어 =substitute(b2,"-",rept(" ",50))이라고 입력하면 -이 공백 50개로 바뀝니다. 여기서 rept는 특정 문자(열)를 반복한다(repeat)는 의미, 다시 말해 공백 50개를 반복하므로 50개의 공백이 삽입되는 것입니다. 위 화면을 보면 FEDS 다음에 공백 50개가 있고, 100 다음에 공백 50개, JJ101 다음에 공백 50개가 있습니다. 따라서, 첫 번째 하이픈 이전의 문자는 위..

Excel 2024.04.08

문자열내 문자의 개수 세기

1. 일반적인 경우 문자열 내 문자의 개수를 셀 때는 전체 길이에서 해당 문자를 공백으로 대체한 다음의 길이를 빼면 해당 문자의 개수가 됩니다. 아래와 같은 경우 0의 개수를 세려면 =len(c2)-len(substitute(c2,0,"")) 라고 하면 됩니다. 0의 개수를 세면 6이 맞습니다. 2. 특수한 경우 이번 문제는 0이 있는 강좌수의 개수를 세는데, 0/0처럼 0이 두 번 들어간 강좌 수는 제외해야 합니다. 아래와 같은 경우 두 번째 줄의 26240의 0은 세면 안되므로, 0과 /0을 구분해서 계산해야 합니다. 두 번째 줄과 네 번째 줄은 /0이 한 번 있으므로 1이고, 세 번째 줄은 //0/0이 2번 있고, /0이 2번 있으므로 2이고, 다섯 번째 줄은 /0만 3번 있으므로 3이 답입니다. ..

Excel 2024.04.01

텍스트내 금액 삭제하기

1. 문제 아래와 같이 텍스트에 금액이 포함되어 있을 때 금액을 지우려고 하는 것입니다. 규칙은 금액은 쉼표가 1개 또는 2개가 있고, 일반 숫자는 쉼표가 없이 숫자만 있습니다. 2. 해결 방안 Find 함수는 와일드카드 적용이 안되는데, Search 함수는 와일드카드 적용이 돼서 Search 함수를 이용해서, 컴마가 하나만 있는지 2개가 있는지에 따라 처리를 달리하는 것입니다. 파일 첨부금액부분지우기(답글).xlsx 단계별로 이해할 수 있도록 수식을 작성했습니다. B1셀 : =SEARCH("?,???",A1) 첫 번째 컴마 앞의 숫자 위치를 찾습니다. C1셀 : =SEARCH("?,???,",A1) 컴마가 2개 있는 경우 첫 번째 컴마 앞의 숫자 위치를 찾습니다. 위 2개는 위치가 중요한 것이 아니고 ..

Excel 2024.03.25

근무표 유형 변경하기(365 이전 버전용)

1. 문제 아래와 같이 직원별, 일자별 근무 현황이 있는데, 근무 유형별, 일자별로 누가 근무했는지와 시간외근무를 오른쪽 '시간외근무 유형'에 따라 괄호 안에 시간수를 입력해서 표시하려고 합니다. 원 데이터는 다른 시트에 있는건데 이해와 설명의 편의를 위해 한 개 시트에 모았습니다. 2. 해결 방안 365 버전용 함수를 이용하는 방법과 이전 버전용 함수를 이용하는 두 가지 방법에 대해 알아보겠습니다. 가. 365 이전 버전 (1) d1, d2, n1, n2 유형에 따라 일자별 근무자 및 괄호안에 숫자 표시 일자와 유형 2가지 조건을 만족해야 하므로 두가지 조건을 * 연산자로 연결하면 =($B$3:$H$8=K$2)*($B$2:$H$2=$J3)이 되는데, #분산!라고 표시되고, 6*7의 크기로 테두리가 쳐집..

Excel 2024.03.08

마지막 반복 문자 이후의 문자열 추출하기 (1)

1. 문제 아래와 같은 폴더명에서 파일명만을 분리해내려고 합니다. 구분자는 ₩입니다. 2. 해결방안 (1) 해결 방안 1 : Find 함수 반복 사용 Find 함수의 구문은 FIND(find_text, within_text, [start_num])로서 찾을 문자열, 범위, [시작 위치]인데, 시작 위치를 다시 Find함수를 이용해서 지정할 수 있습니다. A2셀의 경우 ₩가 다섯 번 반복되므로 ₩ 찾는 것을 다섯 번만 해야 29란 숫자가 나오지, 여섯 번 하면 #VALUE! 에러가 발생합니다. 따라서, ₩의 개수만큼 find 함수를 사용해야 하는데 그렇게 수식을 작성할 수 있는 방법이 없습니다. IfError 함수를 사용하려고 해도 이 긴 수식을 개수에 맞게 넣어야 하는데 그건 가독성이 떨어지고 일이 더 ..

Excel 2024.01.15

자료 형태가 다른 것 VLookup으로 검색하기

좌우 데이터가 좀 달라야 하는데 동일하게 만들었습니다. 다른 점은 형식이 왼쪽은 주계좌 및 서브계좌에 -이 있고, 오른쪽의 날짜가 날짜 형식이 아니라 문자로 되어 있어 변환이 필요한 상황입니다. 데이터 건수가 17951로 매우 큽니다. 1. 서브계좌 구하기 이와 같은 경우에 사용하는 함수가 VLookup입니다. 주계좌의 형식이 다르기 때문에 형식을 통일해야 하는데, 오른쪽 검색 범위는 바꿀 수 없으니 왼쪽 것을 Substitute 함수를 이용해 바꾸면 =substitute(a4,"-","")이 됩니다. 다시 말해 하이픈(-)을 공백으로 바꾸는 것입니다. 이제 Vlookup 함수와 결합하면 =vlookup(substitute(a4,"-",""),$a$4:$i$17951,2,0)이 됩니다. 그런데, 이상하게..

EXCEL - VBA 2023.11.20
반응형