Excel의 배치 문자열 연결
저는 엑셀에 수백 개의 셀을 가지고 있습니다. 저는 하나의 문자열로 연결하고 싶습니다.수동으로 하나씩 차례로 입력하는 것보다 더 간단한 방법이 있습니까?CONCATENATE(A1, A2, ....)
?
CONCATENATE(A1:A255)
작동하지 않습니다.
*새 탭에 셀 A1에 A1을 입력합니다.
*A2 셀의 A2 유형
*채움 영상 시리즈를 사용하여 A열의 값을 완성합니다.
*B1 셀의 A1 유형
셀 B2에서 이 포럼 사용
=B1&", &A2
공식을 아래로 복사합니다.
값을 복사하여 붙여넣어 만든 값 문자열을 수집합니다.
A1 A1
A2 A1,A2
A3 A1,A2,A3
A4 A1,A2,A3,A4
A5 A1,A2,A3,A4,A5
A6 A1,A2,A3,A4,A5,A6
A7 A1,A2,A3,A4,A5,A6,A7
A8 A1,A2,A3,A4,A5,A6,A7,A8
A9 A1,A2,A3,A4,A5,A6,A7,A8,A9
A10 A1,A2,A3,A4,A5,A6,A7,A8,A9,A10
누르다Alt-F11
새 모듈을 삽입하고 코드를 아래에 붙여넣습니다.
Public Function concatRange(data As Range, Optional sep As String = "") As String
Dim ret As String
Dim sep2 As String
ret = ""
sep2 = ""
For Each cell In data
ret = ret & sep2 & cell.Value
sep2 = sep
Next cell
concatRange = ret
End Function
용도:
=concatRange(A8:D11;", ") 'OS with ; list separator
=concatRange(A8:D11,", ") 'OS with , list separator or in a macro code
또는
=concatRange(A8:D11)
다음 블로그 게시물을 참조하십시오. http://www.dullsharpness.com/2011/11/14/excel-vba-range-to-csv-range2csv-function/
파이프 구분 기호와 같이 사용할 수 있습니다.
=Range2Csv(A1:A255,"|")
다음을 사용하여 VBA 편집기 액세스Alt+F11
모듈에 떨어뜨립니다.
코드 발췌는 다음과 같습니다.
Option Explicit
'**********************************************
'* PURPOSE: Concatenates range contents into a
'* delimited text string
'*
'* FUNCTION SIGNATURE: Range2Csv(Range, String)
'*
'* PARAMETERS:
'* Range - the range of cells whose contents
'* will be included in the CSV result
'* String - delimiter used to separate values
'* (Optional, defaults to a comma)
'*
'* AUTHOR: www.dullsharpness.com
'*
'* NOTES: [add'l notes removed for brevity]
'*
'**********************************************
Public Function Range2Csv(inputRange As Range, Optional delimiter As String)
Dim concattedList As String 'holder for the concatted CSVs
Dim rangeCell As Range 'holder cell used in For-Each loop
Dim rangeText As String 'holder for rangeCell's text
'default to a comma delimiter if none is provided
If delimiter = "" Then delimiter = ","
concattedList = "" 'start with an empty string
'Loop through each cell in the range to append valid contents
For Each rangeCell In inputRange.Cells
rangeText = rangeCell.Value 'capture the working value
'Only operate on non-blank cells (i.e. Length > 0)
If Len(rangeText) > 0 Then
'Strip any delimiters contained w/in the value itself
rangeText = WorksheetFunction.Substitute(rangeText, delimiter, "")
If (Len(concattedList) > 0) Then
'prepend a delimiter to the new value if we
'already have some list items
concattedList = concattedList + delimiter + rangeText
Else
'else if the list is blank so far,
'just set the first value
concattedList = rangeText
End If
End If
Next rangeCell
'Set the return value
Range2Csv = concattedList
End Function
연결(a1, a2, a3, a4, a5, a6, a7, a8, a9, a11, a12, a13, a14, a15, a16, a17, a19, a19, a20, a21, a22, a23, a24, a25, a26, a28, a29, a31, a32, a33, a3435, a37, a47, a45, a43, a43, a4440, a44, a44, a44, a43, a44, a44, a43, a44,a43,a41, a44,a70, a71, a72, a73, a73, a74, a75, a76, a77, a78, a79, a80, a81, a82, a83, a84, a85, a86, a87, a88, a89, a90, a91, a92, a93, a94, a95, a96, a97, a98, a99, a100, a101, a102, a103, a101, a101, a101, a101, a101, a110, a111, a111, a111, a111, a111, a111, a111, a111, aa133, a134, a135, a137, a, a, a140, a, a, a, a, a, a, a, a, a, a, a, a, 150, a, a152, a, a, a, 154, a155, a, a, a, a, a, a, a, a, a, a, a, a, a, 160, a, a, a, b, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, aa191, a192, a193, a194, a197, a198, a196, a199, a200, a201, a202, a203, a204, a212, a206, a211, a214, a209, a221, a222210, a215, a213, a208, a207, a195, a6, 216, a218, a219, a,, a3, a,, a4, 224, a232, a232, a232, a232, a232, a231, a235, a231, a231, a231, a23a249, a250, a251, a252, a253, a254, a255)
PowerShell it!
"concatenate(a$((1..255) -join ', a'))" | clip
텍스트 파일 복사하여 붙여넣기 열기
이 VBA 기능은 필요한 경우 셀의 내용을 선택적 구분 기호와 연결합니다.표준 모듈로 복사:
Option Explicit
Function Concat(CellRange As Range, Optional Delimiter As String) As String
' this function will concatenate a range of cells and return the result as a single string
' useful when you have a large range of cells that you need to concatenate
' source: http://chandoo.org/wp/2008/05/28/how-to-add-a-range-of-cells-in-excel-concat/
Dim retVal As String, dlm As String, cell As Range
retVal = ""
If Delimiter = Null Then
dlm = ""
Else
dlm = Delimiter
End If
For Each cell In CellRange
If CStr(cell.Value) <> "" And CStr(cell.Value) <> " " Then
retVal = retVal & CStr(cell.Value) & dlm
End If
Next
If dlm <> "" Then
retVal = Left(retVal, Len(retVal) - Len(dlm))
End If
Concat = retVal
End Function
순수한 Excel 접근법(즉, VBA 없음)을 찾고 있다면 James Jenkins가 제안한 방법이 가장 좋습니다.VBA를 사용할 수 있으면 VBA 편집기를 열고 새 모듈을 추가한 후 다음 코드를 추가합니다.
Option Explicit
Public Function JoinText(cells As Variant,Optional delim_str As String) As String
If cells.Columns.count < cells.Rows.count Then
JoinText = Join(WorksheetFunction.Transpose(cells), delim_str)
Else
JoinText = Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(cells)), delim_str)
End If
End Function
VBA 편집기를 열려면 Alt-F11을 쉽게 누릅니다.모듈을 삽입하려면 '프로젝트' 창에 나열된 워크북을 마우스 오른쪽 버튼으로 클릭합니다.
이 함수는 다음과 같이 Excel에서 호출됩니다.
=JoinText(A1:C1)
구분 기호(예: 쉼표)를 추가하려면 다음을 수행합니다.
=JoinText(A1:C1,",")
전치 함수를 사용하는 목적은 2d 배열인 'cells'를 1d 배열로 바꾸는 것입니다.이에 대한 공명은 VBA 기능 조인이 1d 배열만 허용한다는 것입니다.이 중 두 개를 사용하는 이유는 JoinText가 셀 행(아직 2d 배열에 불과함)을 보고 있으면 첫 번째 전환 호출이 이 2d 행 배열을 2d 열 배열로 전환하고 두 번째 호출이 이를 1d 배열로 전환하기 때문입니다.
내가 선호하는 방법은 정규식을 허용하는 편집기에 값을 잘라내어 붙여넣은 다음 현재 선택한 항목에서 찾기 및 바꾸기로 탭(또는 공백)을 제거하는 것입니다.
또한 쉼표, 공백 또는 원하는 모든 항목을 삽입할 수 있습니다.
타이핑하는 것보다 훨씬 빠릅니다.=concatenate(A1,",","A2",",",......)
이것은 순수하게 엑셀이 아니지만, 워드로 이것을 할 수 있는 쉬운 방법이 있습니다.
- 연결할 셀을 선택하고 복사/붙여 Word에 붙여넣습니다.테이블을 만듭니다.
- 전체 테이블을 선택합니다.
- 표를 텍스트로 변환합니다.문단 표시(또는 텍스트에 표시되지 않는 다른 항목)를 구분 기호로 사용합니다.
- 모든 텍스트를 선택합니다.
- 바꾸기를 사용하여 문단 표시를 제거합니다. ("찾기" 상자에 ^p를 입력합니다.바꿀 대상 상자를 비워 둡니다.)
Excel 2016이 있는 경우 배열 공식을 사용할 수 있습니다.
를 입력하십시오.
= concat(a1:a255)
셀 안으로 들어간 다음, 를 누릅니다.
[sshift]+[shift]+[입력]
요약하려는 값이 시트의 2열 3열에서 시작되는 경우
Sub GOWN()
roww = 2
Do While cells(roww, 2) <> ""
aa = cells(roww, 3)
dd = dd & aa & ","
roww = roww + 1
Loop
cells(roww + 1, 3) = dd
End Sub
뻔뻔스럽게도 이 사이트에서 복사했습니다.
- 결과가 필요한 셀을 선택합니다.
- 수식 표시줄로 이동하여 다음을 입력"=A1:A5"
- 전체 수식을 선택하고 F9를 누릅니다(식을 값으로 변환).
- 양쪽 끝에서 꼬불꼬불한 브래킷을 제거합니다.
- = CONCATENATE(텍스트 시작 부분에 둥근 괄호로 끝냄)를 추가합니다.
- Enter 키를 누릅니다.
여기서 특히 놀라운 점은 수식을 편집할 때 F9 키를 누르면 수식이 해당 수식의 결과로 대체된다는 것입니다.해당 범위가 해당 범위인 경우 해당 범위의 내용 목록으로 대체됩니다.
구분자를 하나의 연결에 추가하기만 하면 됩니다.
=concatenate(A1, ",")
그런 다음 연결을 모두 복사하여 값으로 붙여넣습니다.그런 다음 해당 값을 복사하여 전치로 붙여넣습니다.그런 다음 전치 값을 복사하여 워드 편집기에 붙여넣습니다.구분 기호와 값 앞의 공백을 찾고 구분 기호만 바꾸기를 수행합니다.이렇게 하면 구분 기호가 있는 모든 값의 연결된 문자열이 제공됩니다.이것은 다른 옵션보다 훨씬 쉽습니다.
언급URL : https://stackoverflow.com/questions/15144816/batch-string-concatenation-in-excel
'source' 카테고리의 다른 글
HTTP 핸들러 대 HTTP 모듈 (0) | 2023.04.29 |
---|---|
-Wait 대신 Start-Process 및 WaitForExit을 사용하여 종료 코드 가져오기 (0) | 2023.04.29 |
애저 vs 앱하버 vs 아마존 EC2 (0) | 2023.04.29 |
몽고드와 몽고의 정확한 차이점은 무엇입니까? (0) | 2023.04.29 |
Excel 시트에 PostgreSQL 쿼리 (0) | 2023.04.29 |