[땡큐엑셀vba & 엑셀매크로] 중간글자 마스킹처리 사용자정의 함수
엑셀vba예제2020. 7. 18. 00:00
'http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=102020101&docId=286378177
'호랑이 -> 호*이
'(호랑이) -> (호*이)
'(호랑)이 -> (호*)이
'이런식으로 변환하기
'
'Source by 땡큐엑셀vba & 엑셀매크로
'
'길이가 1인경우 그대로 출력
'길이가 2인경우 뒷글자만 * 처리
'길이가 3이상이고 괄호가 있는경우 - 괄호내에 중간글자 *처리
'길이가 3이상이고 괄호가 없는경우 - 중간글자 *처리
'Module
'마스킹처리
Function mask(r1 As String)
'문장의 길이를 구한후
길이 = Len(r1)
'길이가 1이면 그대로출력
'길이가 2이면 뒷글자만 *처리
If 길이 = 1 Then
mask = r1
Exit Function
ElseIf 길이 = 2 Then
mask = Left(r1, 1) & "*"
Exit Function
End If
'길이가 3이상인 경우
'괄호의 위치를 구한다.
위치1 = InStr(r1, "(")
위치2 = InStr(r1, ")")
'괄호가 없거나 하나인 경우 마지막글자만 *처리
If 위치1 = 0 Or 위치2 = 0 Then
mask = Left(r1, 1) & String(Len(r1) - 2, "*") & Right(r1, 1)
Else
'괄호가 있는경우
'괄호안의 문장을 뽑안낸후
내용 = Mid(r1, 위치1 + 1, 위치2 - 위치1 - 1)
내용길이 = Len(내용)
'괄호안의 내용길이가 1인경우 그대로 출력
If 내용길이 = 1 Then
mask = 내용
'괄호안의 내용길이가 2인경우 마지막글자만 *처리
ElseIf 내용길이 = 2 Then
mask = Left(내용, 1) & "*"
'괄호안의 앞뒤글자만 남겨놓고 *처리
Else
mask = Left(내용, 1) & String(Len(내용) - 2, "*") & Right(내용, 1)
End If
mask = Left(r1, 위치1) & mask & Right(r1, Len(r1) - 위치2 + 1)
End If
End Function
'엑셀vba예제' 카테고리의 다른 글
[땡큐엑셀vba & 엑셀매크로] 해당 날짜의 셀위치로 도형이동 (1) | 2020.07.20 |
---|---|
[땡큐엑셀vba & 엑셀매크로] 불량번호 삭제하기 (0) | 2020.07.19 |
[땡큐엑셀vba & 엑셀매크로] 오늘 날짜인 셀로 이동 (0) | 2020.07.17 |
[땡큐엑셀vba & 엑셀매크로] 다중조건의 합 (0) | 2020.07.16 |
[땡큐엑셀vba & 엑셀매크로] 한글을 제외하고 모든 문자를 삭제하는 매크로가 알고 싶습니다. (0) | 2020.07.15 |