[ 여러 영역의 문자열 합치기 (STRJOIN) ] 에 대해 알아봅니다. ---> 예제 - 1 STRJOIN (문자(영역)1, 문자(영역)2,...) 기본연결문자 = , 예제 - 2 STRJOIN (문자(영역)1, 문자(영역)2, ..., 연결문자) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
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)) = "Range" Then
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)) = "Range" Then
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
잘 안될 경우 메일 주시거나 리플 남겨주세요
'엑셀보조파일,기능,함수' 카테고리의 다른 글
배열수식의 응용-1 (0) | 2008.09.24 |
---|---|
연속적으로 이어지는 셀 주소 만드는 사용자 함수 (ShrStrings) (0) | 2008.09.18 |
숫자를 영어로 나타내는 사용자 함수 (NUM2DOLLAR) (0) | 2008.09.09 |
엑셀 2007 에 있는 SUMIFS 를 2003 에서 ... SUMIFS2003 (1) | 2008.09.05 |
엑셀 2007 에 있는 COUNTIFS 를 2003 에서 ... COUNTIFS2003 (0) | 2008.09.05 |
엑셀 2007 에 있는 IFERROR 를 2003 에서 ... IFERROR2003 (1) | 2008.09.04 |
배열수식, SUMPRODUCT 의 속도를 올리자 (0) | 2008.09.03 |