source

Excel의 배치 문자열 연결

nicesource 2023. 4. 29. 09:27
반응형

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

텍스트 파일 복사하여 붙여넣기 열기

"셀을 빠르게 선택하려면 CTRL을 누르고 연결 기능에 포함할 셀을 클릭합니다.예: 셀 유형 선택 = 연결(formula bar) CTRL 버튼을 누른 상태에서 포함할 셀을 클릭합니다.수식 표시줄에서 CTRL 버튼 Type )을 해제하고 Enter 키를 누릅니다."

이 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",",",......)

이것은 순수하게 엑셀이 아니지만, 워드로 이것을 할 수 있는 쉬운 방법이 있습니다.

  1. 연결할 셀을 선택하고 복사/붙여 Word에 붙여넣습니다.테이블을 만듭니다.
  2. 전체 테이블을 선택합니다.
  3. 표를 텍스트로 변환합니다.문단 표시(또는 텍스트에 표시되지 않는 다른 항목)를 구분 기호로 사용합니다.
  4. 모든 텍스트를 선택합니다.
  5. 바꾸기를 사용하여 문단 표시를 제거합니다. ("찾기" 상자에 ^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

뻔뻔스럽게도 이 사이트에서 복사했습니다.

  1. 결과가 필요한 셀을 선택합니다.
  2. 수식 표시줄로 이동하여 다음을 입력"=A1:A5"
  3. 전체 수식을 선택하고 F9를 누릅니다(식을 값으로 변환).
  4. 양쪽 끝에서 꼬불꼬불한 브래킷을 제거합니다.
  5. = CONCATENATE(텍스트 시작 부분에 둥근 괄호로 끝냄)를 추가합니다.
  6. Enter 키를 누릅니다.

여기서 특히 놀라운 점은 수식을 편집할 때 F9 키를 누르면 수식이 해당 수식의 결과로 대체된다는 것입니다.해당 범위가 해당 범위인 경우 해당 범위의 내용 목록으로 대체됩니다.

구분자를 하나의 연결에 추가하기만 하면 됩니다.

=concatenate(A1, ",")

그런 다음 연결을 모두 복사하여 값으로 붙여넣습니다.그런 다음 해당 값을 복사하여 전치로 붙여넣습니다.그런 다음 전치 값을 복사하여 워드 편집기에 붙여넣습니다.구분 기호와 값 앞의 공백을 찾고 구분 기호만 바꾸기를 수행합니다.이렇게 하면 구분 기호가 있는 모든 값의 연결된 문자열이 제공됩니다.이것은 다른 옵션보다 훨씬 쉽습니다.

언급URL : https://stackoverflow.com/questions/15144816/batch-string-concatenation-in-excel

반응형