본문 바로가기

WeekdayLife

[엑셀VBA] 텍스트 앞뒤 바꾸기(뒤집기)

 

 

 

텍스트 앞뒤 바꾸기(뒤집기)

얼마전에 순서대로 있는 셀들을 거꾸로 배치하는 방법을 올린적이 있다.

 

VBA와 함수를 사용하는 방법을 모두 올렸었다.

이 꼼수 아닌 꼼수는 그 이후로 회사에서 정말 많이 써먹었었다.

너무 뿌듯한 순간이 아닐 수 없다.

 

물론, 회사에서 아무도 알아주는 사람은 없다.

내가 발로하든 VBA를 쓰든, 결과가 맞으면 되니깐.

 

각설하고, 위의 내용을 고민하던 중에,

한 셀에 있는 텍스트를 뒤집는 것도 비슷하지 않을까라는 생각이 들었다.

예를 들어 아래처럼 '가나다라마바사'가 있으면 거꾸로 '사바마라다나가'가 되도록 말이다.

 

안되는게 이상한거겠지만, 나같은 초보에게는 쉬운 VBA는 없다.

그래도 한번 해보자.

 

 

 

보기 좋게 표를 그렸다, 그리고, C4셀에 앞뒤를 바꾸고 싶은 텍스트를 기입했다.

아래 뒤집기로 표시한 C5셀에 C4셀 내용을 뒤집어서 넣을 예정이다.

 

 

 

내 머릿속으로 어렴풋이 그렸던 내용은 아래와 같다.

1. 전체 글자의 수를 센다.

2. 각 글자별로 총 글자수 대비 순번을 매긴다.

3. 배열에 순번의 역순으로 글자를 입력한다.

4. 배열을 한개의 셀에 합쳐서 표시한다.

- 글자수를 세는데는 LEN 함수를 쓸 것이다.

- 순번을 매기는데, 배열에 입력하는데는 FOR 순환문을 쓸 것이다.

- 배열에 입력된 내용을 텍스트로 나타내는데는 JOIN 함수를 쓸 것이다.

그냥, 머릿속으로 생각만 해봤다.

제대로 될지는 코드를 쳐보면 알수 있을 것이다.

아래처럼 코드를 입력했다.

 

 

 

사실 실제로 되는지 안되는지는 별로 중요하지 않았다.

안될줄 알았으니까..

 

[코드샘플]

Sub Change_FromTo()

Dim cMyTxt As Integer
Dim N As Integer
Dim X As Integer
Dim aTXT() As String

'원글
myTxt = Range("c4")
'원글의 글자수
cMyTxt = Len(myTxt)

'카운터
X = 1

'순환문
For N = cMyTxt To 1 Step -1
    ReDim Preserve aTXT(cMyTxt)
    aTXT(X) = Mid(myTxt, N1)
    X = X + 1

    Range("c5") = Join(aTXT"")

Next N

End Sub

 

 

그런데, 놀랍게도 아래처럼 잘 됐다.

전혀 써먹을 일이 없겠지만, 그래도 다행이다.

 

 

 

혹시나 해서 공백을 넣어봤다.

공백도 문자로 인식을 해서 적용이 된다.

 

 

 

잘하시는 분들이 보면 콧웃음을 치겠지만, 작은일에 뿌듯함을 느낀다면 이또한 기쁜 일이다.