예
A1:I
A2:am
A3:a
A4:boy
모두 하나의 셀로 병합하고 싶습니다 "Iamaboy"
이 예제는 4 개의 셀이 1 개의 셀로 병합되는 것을 보여줍니다. 그러나 많은 셀 (100 개 이상)이 있습니다. A1 & A2 & A3 & A4
무엇을 할 수 있는지를 사용하여 하나씩 입력 할 수 없습니까?
예
A1:I
A2:am
A3:a
A4:boy
모두 하나의 셀로 병합하고 싶습니다 "Iamaboy"
이 예제는 4 개의 셀이 1 개의 셀로 병합되는 것을 보여줍니다. 그러나 많은 셀 (100 개 이상)이 있습니다. A1 & A2 & A3 & A4
무엇을 할 수 있는지를 사용하여 하나씩 입력 할 수 없습니까?
답변:
내 ConcatenateRange VBA 함수를 소개합니다 (이름 지정 조언에 대해 Jean에게 감사드립니다!). 셀 범위 (모든 차원, 모든 방향 등)를 가져 와서 단일 문자열로 병합합니다. 선택적 세 번째 매개 변수로 구분 기호 (예 : 공백 또는 쉼표로 분리됨)를 추가 할 수 있습니다.
이 경우 다음과 같이 작성하여 사용합니다.
=ConcatenateRange(A1:A4)
Function ConcatenateRange(ByVal cell_range As range, _
Optional ByVal separator As String) As String
Dim newString As String
Dim cell As Variant
For Each cell in cell_range
If Len(cell) <> 0 Then
newString = newString & (separator & cell)
End if
Next
If Len(newString) <> 0 Then
newString = Right$(newString, (Len(newString) - Len(separator)))
End If
ConcatenateRange = newString
End Function
ConcatenateRange
! 어리석은 Excel CONCATENATE
함수는 범위를 입력으로 받아들이지 않고 개별 셀 목록 만 별도의 인수로 받아들입니다 ...
Else newString = newString & (separator & Space(1))
결과 문자열에서 고정 너비를 유지해야하므로로 수정되었습니다 .
VBA없이이 작업을 수행하려면 다음을 시도 할 수 있습니다.
이제 셀 B999에 찾고있는 연결된 텍스트 문자열이 포함됩니다.
간단한 경우에는 함수를 만들거나 코드를 여러 셀에 복사 할 필요가없는 다음 방법을 사용할 수 있습니다.
모든 셀에서 다음 코드 작성
=Transpose(A1:A9)
여기서 A1 : A9는 병합하려는 셀입니다.
F9
그 후 셀에 다음 문자열이 포함됩니다.
={A1,A2,A3,A4,A5,A6,A7,A8,A9}
출처 : http://www.get-digital-help.com/2011/02/09/concatenate-a-cell-range-without-vba-in-excel/
업데이트 : 한 부분이 모호 할 수 있습니다. 셀을 떠나지 않으면 셀이 편집기 모드에있게됩니다. 또는 셀 편집기 패널에있는 동안 F9 키를 누를 수 있습니다 (일반적으로 스프레드 시트 위에 있음).
VBA의 기존 Join
기능을 사용하십시오 . VBA 함수는 Excel에서 노출되지 않으므로 Join
해당 기능을 노출하는 사용자 정의 함수로 래핑 합니다. 가장 간단한 형식은 다음과 같습니다.
Function JoinXL(arr As Variant, Optional delimiter As String = " ")
'arr must be a one-dimensional array.
JoinXL = Join(arr, delimiter)
End Function
사용 예 :
=JoinXL(TRANSPOSE(A1:A4)," ")
배열 수식으로 입력 (사용 Ctrl- Shift- Enter).
이제 JoinXL
1 차원 배열 만 입력으로받습니다. Excel에서 범위는 2 차원 배열을 반환합니다. 위의 예에서는 TRANSPOSE
4 × 1 2 차원 배열을 4 요소 1 차원 배열로 변환합니다 (이는 TRANSPOSE
단일 열 2 차원 배열이 제공 될 때 문서화 된 동작입니다 ).
수평 범위의 경우 double을 수행해야합니다 TRANSPOSE
.
=JoinXL(TRANSPOSE(TRANSPOSE(A1:D1)))
내부 TRANSPOSE
는 1x4 2 차원 배열을 4x1 2 차원 배열로 TRANSPOSE
변환 한 다음 외부 는 예상되는 4 요소 1 차원 배열로 변환합니다.
이 사용법은 TRANSPOSE
Excel에서 2D 배열을 1D 배열로 변환하는 잘 알려진 방법이지만 끔찍해 보입니다. 더 우아한 해결책은 JoinXL
VBA 함수 에서 이것을 숨기는 것 입니다.
Excel 2016 (및 다음 버전)을 사용 하는 사람들을 위해 이제 CONCATENATE 함수를 대체 할 CONCAT 함수가 직접 제공됩니다 .
따라서 Excel 2016에서 올바른 방법은 다음과 같습니다.
=CONCAT(A1:A4)
다음을 생성합니다.
저는 남자입니다
이전 버전의 Excel 사용자의 경우 다른 답변이 관련이 있습니다.
CONCAT
기능
Mac 용 Excel 2011의 경우 다릅니다. 저는 3 단계 과정으로했습니다.
=B1
입니다. N 행의 다음 행에 대한 공식은 =Concatenate(",",A2)
입니다. 결과는 다음과 같습니다.QA , 세 쿨리 , 테스트 , Applitools , 시각적 테스트 , 테스트 자동화 ,셀렌
=B1
입니다. N에 대한 다른 모든 행의 경우 공식은 =Concatenate(C1,B2)
입니다. 그리고 당신은 :QA, Sekuli QA, Sekuli, 테스트 QA, Sekuli, 테스트, Applitools QA, Sekuli, 테스트, Applitools, 시각적 테스트 QA, Sekuli, 테스트, Applitools, 시각적 테스트, 테스트 자동화 QA, Sekuli, 테스트, Applitools, 시각적 테스트, 테스트 자동화, 셀레늄
목록의 마지막 셀이 원하는 것입니다. Windows 또는 Mac의 Excel과 호환됩니다.
=CONCATENATE(B1;",";A2)
. 그런 다음 모든 행에 대해 셀의 오른쪽 아래로 점을 끌어 야하며 마지막 값이 결과가됩니다.
SQL 문의 절 CONCATENATE
을 빠르게 채우기 위해이 메서드를 사용하여 열 값을 가져 와서 그 사이에 열로 따옴표를 묶습니다 WHERE IN ()
.
나는 언제나 입력 =CONCATENATE("'",B2,"'",",")
끌어 내려, 생성하는 것을 선택 후와 =CONCATENATE("'",B3,"'",",")
, =CONCATENATE("'",B4,"'",",")
일반 텍스트 편집기에 붙여 따라서 행 분리를 제거, 필요한 경우 다시 붙여 복사, 등 그 전체 열을 강조 표시합니다. 작동하지만 다시 한 번 일회성 거래와 마찬가지로 항상 이것을 필요로하는 사람에게는 좋은 해결책이 아닙니다.
나는 이것이 정말 오래된 질문이라는 것을 알고 있지만, 나는 똑같은 일을하려고했고, "TEXTJOIN"이라는 엑셀에서 새로운 공식을 발견했습니다.
질문의 경우 다음 공식이 문제를 해결합니다.
=TEXTJOIN("",TRUE,(a1:a4))
"TEXTJOIN"의 서명은 TEXTJOIN (delimiter, ignore_empty, text1, [text2], [text3], ...)으로 설명됩니다.