MS Excel - 구분 기호 포함
숫자가 적힌 긴 스프레드시트가 있어요.
4364453;2432432;2342432와 같이 구분된 하나의 문자열로 가져와야 합니다.
제가 할 수 있는 일:
=concat(A1:A2000)
구분 기호 없이 하나의 문자열로 병합됩니다. 범위를 지정할 때 구분 기호 옵션을 찾을 수 없습니다.
감사해요.
대신 TEXTJOIN()을 사용합니다.
=TEXTJOIN(";",TRUE,A1:A2000)
OFFICE 365 Excel이 없는 사용자는 TEXTJOIN 함수를 모방한 이 UDF를 사용하십시오.
이를 워크북에 첨부된 모듈에 넣고 위의 공식을 사용하여 문의합니다.
Function TEXTJOIN(delim As String, skipblank As Boolean, arr)
Dim d As Long
Dim c As Long
Dim arr2()
Dim t As Long, y As Long
t = -1
y = -1
If TypeName(arr) = "Range" Then
arr2 = arr.Value
Else
arr2 = arr
End If
On Error Resume Next
t = UBound(arr2, 2)
y = UBound(arr2, 1)
On Error GoTo 0
If t >= 0 And y >= 0 Then
For c = LBound(arr2, 1) To UBound(arr2, 1)
For d = LBound(arr2, 1) To UBound(arr2, 2)
If arr2(c, d) <> "" Or Not skipblank Then
TEXTJOIN = TEXTJOIN & arr2(c, d) & delim
End If
Next d
Next c
Else
For c = LBound(arr2) To UBound(arr2)
If arr2(c) <> "" Or Not skipblank Then
TEXTJOIN = TEXTJOIN & arr2(c) & delim
End If
Next c
End If
TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim))
End Function
저와 같이 작업용 컴퓨터에 TEXTJOIN이 없는 이전 버전의 Excel이 있는 경우 매크로를 사용할 수 있습니다.여기 한 줄 또는 한 줄에 해당하는 간단한 모형이 있습니다.결과 문자열을 배치할 위치를 클릭한 다음 매크로를 실행하십시오.
예제 데이터와 같이 하나의 행 또는 하나의 열만 처리된다는 점에 유의하십시오.A1의 연결과 같은 작업을 수행할 경우:C3 다른 논리가 필요합니다.
Sub ConcatenateRange()
Dim resultCell As Range
Set resultCell = Selection
Dim concatRange As Range
Set concatRange = Application.InputBox("Select a range", "Obtain Range Object", Type:=8)
Dim optionalSeparator As String
optionalSeparator = Chr(34) & InputBox("Any Separator?") & Chr(34)
Dim outputString As String
outputString = "=TRIM(CONCATENATE("
Dim rangeSize As Integer
rangeSize = concatRange.Columns.count + concatRange.Rows.count
For Each item In concatRange
outputString = outputString & item.Address(RowAbsolute:=False, ColumnAbsolute:=False)
rangeSize = rangeSize - 1
If (rangeSize > 1) Then
outputString = outputString & ", " & optionalSeparator & ", "
Else
outputString = outputString & "))"
End If
Next
resultCell.formula = outputString
End Sub
TRANSPOSE 기능 사용:
=TRANSPOSE(A1:A200)
공식을 선택하고 히트합니다.F2
기본 구분 기호가 있는 긴 문자열이 표시됩니다.','
필요한 딜리미터로 대체할 수 있습니다.
Scott Craner의 답변에 대해 저는 작은 개선을 더하고 싶었습니다. 아무것도 수행되지 않고 빈 값을 건너뛸 수 있는 다양한 셀을 연결할 때 말입니다.결과를 할당하는 행 대신:
TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim))
오류 없이 반품하기 위해 결과가 비어 있는지 확인했습니다.
If TEXTJOIN <> "" Then
TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim))
Else
TEXTJOIN = ""
End If
제대로 찾아봤으면 많은 수고를 덜 수 있었을 텐데...2012년부터 여기에 쓴 'MyConCat()'이 있습니다.간단하지만 매우 효과적입니다.
언급URL : https://stackoverflow.com/questions/42165179/ms-excel-concat-with-a-delimiter
'sourcetip' 카테고리의 다른 글
범위에서의 셀 스타일 정렬 (0) | 2023.04.13 |
---|---|
SQL Server에서 임시 테이블을 작성할 때 #를 사용해야 합니까? (0) | 2023.04.13 |
'선택' 상자의 자리 표시자를 만들려면 어떻게 해야 합니까? (0) | 2023.04.08 |
HTML 체크박스를 읽기 전용으로 설정할 수 있습니까? (0) | 2023.04.08 |
DISTINCT를 사용하여 카운트(*)를 선택합니다. (0) | 2023.04.08 |