[ 여러 영역의 문자열 합치기 (STRJOIN) ] 에 대해 알아봅니다.
   --->
   예제 - 1 STRJOIN (문자(영역)1, 문자(영역)2,...)
   기본연결문자 = ,
   예제 - 2 STRJOIN (문자(영역)1, 문자(영역)2, ..., 연결문자)
 
10 
11 
12 
13 
14 
15 
16 
17 
A B C D E
길동 2008년12월31일 /
삼순 0.12
태한 a
연습 b
길동,2008년12월31일,/,삼순,0.12,태한,a,연습,b
       기본 값 "," 으로 연결됩니다.
길동,2008년12월31일,/,삼순,태한,연습
       기본 값 "," 으로 연결됩니다.
길동,2008년12월31일,삼순,0.12,연습,/
       기본 값 "," 으로 연결됩니다.
길동/2008년12월31일/삼순/0.12/연습
       사용자 지정문자 "/" 로 연결됩니다.
길동 2008년12월31일 삼순 0.12 연습
       사용자 지정문자 " " 로 연결됩니다.
길동 , 2008년12월31일 , 삼순 , 0.12 , 연습
       사용자 지정문자 " , " 로 연결됩니다.


StrMix
시트 에 사용한 수식
입니다. by MicroSoft Excel v 2003
   $ 가 있는 수식은 절대(혼합)참조로 셀 주소를 고정합니다. 참조하세요!!
No 셀주소 왼쪽의 셀에 수식을 넣으면 오른쪽 결과가 나옵니다.
(복사)를 누르면 셀의 수식이 클립보드(메모리)로 복사되는데,
익스플로러의 종류에 따라 (복사)가 작동이 안 될 수 있습니다.
결과 수식을
1 A6 =STRJOIN(A1:E4) 길동,2008년12월31일,/,삼순,0.12,태한,a,연습,b
2 A8 =STRJOIN(1:1,A2:A4) 길동,2008년12월31일,/,삼순,태한,연습
3 A10 =STRJOIN(A1:C2,A4,E1) 길동,2008년12월31일,삼순,0.12,연습,/
4 A12 =STRJOIN(A1:C2,A4,TEXT(E1,"#")) 길동/2008년12월31일/삼순/0.12/연습
5 A14 =STRJOIN(A1:C2,A4," ") 길동 2008년12월31일 삼순 0.12 연습
6 A16 =STRJOIN(A1:C2,A4," , ") 길동 , 2008년12월31일 , 삼순 , 0.12 , 연습

   보시는 내용은 위의 표에 값이, 아래의 표에는 해당 셀의 수식이 있습니다.   
   첨부파일이 없습니다, 원하는 부분을 시트(셀)에 붙여 넣으세요.
     도움이 되시기를 바랍니다.

Option Explicit

Function STRJOIN(ParamArray VariantR())
Dim i As Double, j As Double
Dim AddStr     As String
Dim MaxB       As Double
Dim AnsS()     As String
Dim ChkStrN    As Double
     MaxB = UBound(VariantR)

If TypeName(VariantR(MaxB)) = "RangeThen
     AddStr = Chr(65000) & "," & Chr(65000)
Else
     AddStr = Chr(65000) & VariantR(MaxB) & Chr(65000)
     MaxB = MaxB - 1
End If

ReDim AnsS(MaxB) As String
     ChkStrN = Len(AddStr)
Dim r As Range
For i = 0 To MaxB
     If TypeName(VariantR(i)) = "RangeThen
     If VariantR(i).Count > 1 Then
          Set r = VariantR(i)
          AnsS(i) = MVV(r, AddStr)
          Else
          AnsS(i) = VariantR(i)
          End If
     Else
          AnsS(i) = VariantR(i)
     End If
Next
     STRJOIN = Join(AnsS, AddStr)
If InStr(STRJOIN, AddStr) = 1 Then
STRJOIN = Mid(STRJOIN, ChkStrN + 1)
ElseIf Right(STRJOIN, ChkStrN) = AddStr Then
STRJOIN = Left(STRJOIN, Len(STRJOIN) - ChkStrN)
End If
     STRJOIN = Replace(STRJOIN, Chr(65000), "")
End Function

Function MVV(tmpV As Range, tmpStr As String)
Dim ii As Double
Dim jj As Double
Dim kk As Double
Dim LB1 As Double, LB2 As Double
Dim AnsY
LB1 = tmpV.Rows.Count
LB2 = tmpV.Columns.Count
ReDim AnsY(1 To 1)
     For ii = 1 To LB1
     For jj = 1 To LB2
          If CStr(tmpV(ii, jj)) <> "" Then
               kk = kk + 1
               ReDim Preserve AnsY(1 To kk)
               AnsY(kk) = tmpV(ii, jj).Text
          End If
     Next
     Next
MVV = Join(AnsY, tmpStr)
End Function

잘 안될 경우 메일 주시거나 리플 남겨주세요
Posted by 오즈맨스머프