땡큐엑셀vba & 엑셀매크로

'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

 

 

마스킹처리-left_right_mid_string-땡큐엑셀vba.xlsm
0.14MB