열을 쉼표로 구분 된 목록으로 변환


129

다음과 같이 열 A에서 지정되지 않은 수의 행을 취하는 간단한 Excel 시트를 만드는 작업이 있습니다.

1234
123461
123151
11321

사용자가 다음과 같이 다른 프로그램에 쉽게 복사하여 붙여 넣을 수 있도록 다른 셀에서 쉼표로 구분 된 목록으로 만드십시오.

1234,123461,123151,11321

가장 쉬운 방법은 무엇입니까?


8
솔루션의 일부는 편집, 붙여 넣기, 전치로 열을 행으로 변환 할 수 있습니다. 다른 프로그램이 쉼표가 아닌 탭을 허용하면 새 행을 복사 한 후에 모두 설정됩니다.
Arjan

이것의 반대는 어떻게합니까? 쉼표로 구분 된 목록을 가져 와서 열로 변환 하시겠습니까?
stevvve

1
@stevvve는 데이터 탭의 Text to Columns 기능을 사용합니다. support.microsoft.com/ko-kr/kb/214261
Trevor

메모장 ++과 같은 정규 표현식 가능 텍스트 편집기를 사용합니다. 열 값을 복사하여 편집기에 붙여넣고 정규식을 검색하여 바꾸십시오. "\ r \ n"바꾸기를 ","로 찾으십시오. CSV를 열로 변환하려면 ","를 찾아 "\ r \ n"으로
바꾸십시오.

답변:


145

데이터가 A1에서 시작한다고 가정하면 B 열에 다음을 입력합니다.

B1 :

=A1

B2 :

=B1&","&A2

그런 다음 B2 열을 전체 열에 붙여 넣을 수 있습니다. 열 B의 마지막 셀은 이제 쉼표로 구분 된 열 A의 목록이어야합니다.


8
이것은 제한된 수의 행에 유용하지만 (사용 가능한 메모리에 따라 다릅니 까?) 수천 행 이상으로 연결하면 출력 값이 불완전한 상태로 유지되므로 프로세스가 단축됩니다. 조심해.
samthebrand

강력한 Windows 10 Pro 컴퓨터에서 Excel 2013을 사용하면 30-35 줄만 실패했습니다. 마이클 조셉의 솔루션은 완벽하게 작동했습니다.
평가판

75
  • Excel에서 열 복사
  • 열린 단어
  • 텍스트로만 "붙여 넣기"
  • Word에서 (로 구분 된 텍스트로 변환해야하는) 데이터를 선택하고 - (찾기 및 바꾸기)를 ,누릅니다.CtrlH
  • "찾을 내용"상자 유형 ^p
  • "바꾸기"상자 유형 ,
  • "모두 바꾸기"를 선택하십시오

+1 Microsoft의 "공식"솔루션과 동일 : support.microsoft.com/kb/819964
Neo

매우 귀여운 솔루션 ... :-)
Saravanan

그냥 순수한 마술 :)
Sudheej

30

Office 365 Excel이있는 경우 TEXTJOIN ()을 사용할 수 있습니다.

=TEXTJOIN(",",TRUE,A:A)

여기에 이미지 설명을 입력하십시오


23

실제로 VBA에서 모든 작업을 수행하는 모듈을 만들었습니다. 내 범위 목록을 가져 와서 선택한 셀에 출력되는 쉼표로 구분 된 문자열을 만듭니다.

Function csvRange(myRange As Range)
    Dim csvRangeOutput
    Dim entry as variant
    For Each entry In myRange
        If Not IsEmpty(entry.Value) Then
            csvRangeOutput = csvRangeOutput & entry.Value & ","
        End If
    Next
    csvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 1)
End Function

그런 다음 셀에 방금 입력 =csvRange(A:A)하면 쉼표로 구분 된 목록이 표시됩니다.


1
아 .. 내 대답에 아주 가깝지만 구현이 마음에 듭니다.
mpeterson

10

다른 방법은 Excel 열을이 브라우저 내 도구에 붙여 넣는 것입니다.

convert.town/column에서 쉼표로 구분 된 목록

텍스트 열을 쉼표로 구분 된 목록으로 변환합니다.

어쨌든 사용자가 다른 프로그램에 복사하여 붙여 넣을 때 쉽게 사용할 수 있습니다.


7

이런 식으로 할 수 있습니다. 거대한 스프레드 시트에 대해 이야기하지 않으면 '확인'을 수행합니다 ...

  • Alt-F11, 매크로를 작성하여 목록 작성 (아래 코드 참조)
  • 바로 가기 또는 툴바 버튼에 할당
  • 사용자는 숫자 열을 열 A에 붙여넣고 단추를 누르면 목록이 셀 B1로 이동합니다.

VBA 매크로 코드는 다음과 같습니다.

Sub generatecsv() 

Dim i As Integer
Dim s As String

i = 1

Do Until Cells(i, 1).Value = ""
    If (s = "") Then
        s = Cells(i, 1).Value
    Else
        s = s & "," & Cells(i, 1).Value
    End If
    i = i + 1 
Loop

Cells(1, 2).Value = s

End Sub

셀 B1의 형식을 '텍스트'로 설정하지 않으면 엉망인 숫자가 나타납니다. VBA 에서도이 작업을 수행 할 수 있다고 확신하지만 현재는 잘 모르겠으며 작업을 다시해야합니다. ;)


7

vi 또는 vim을 사용하여 각 줄의 끝에 쉼표를 넣으십시오.

%s/$/,/

이 명령을 설명하려면

  • % 모든 행에 조치 (즉, 찾기 및 바꾸기)를 수행함을 의미합니다.
  • s 대체를 나타냅니다
  • /분리 인자 (예 s/find/replace/options)
  • $ 줄의 끝을 나타냅니다
  • , 이 경우 대체 텍스트입니다

동의했다. 근처에도 안.
muncherelli

상황 때문에 의견에 동의하지 않습니다. 여기에 게시하는 수퍼 유저 계정을 가진 사람이 종종 vim을 사용하는 유형입니다.
uniquegeek

나는 ViM을 사용하고 기본 아이디어가 유용하다고 생각합니다. 아이디어와 간단한 텍스트 편집기를 사용하여 문제를 해결했습니다.
니 기니

2

How-To Geek의 가이드를 사용하여 행을 열로 바꾸고 간단히 뒤집을 수 있습니다. 그런 다음 데이터를 CSV (쉼표로 구분 된 형식)로 내 보내면 일반 텍스트가 쉼표로 구분 된 목록이됩니다! 원하는 경우 메모장에서 복사하여 Excel에 다시 넣을 수 있습니다. 또한 쉼표 뒤에 공백이 필요한 경우 검색 및 바꾸기 기능을 수행하여 ","를 ","로 바꿉니다. 희망이 도움이됩니다!


CSV로 내보내기는이 사용자가 할 수있는 것 이상의 것입니다. Excel 내에서 가리키고 클릭해야합니다.
muncherelli

2

muncherelli, 나는 당신의 대답을 좋아했고, 그것을 조정했습니다 :). 사소한 일이지만 시트에서 데이터를 가져 와서 데이터베이스를 쿼리하는 데 사용하는 경우가 있습니다. 쿼리에서 사용할 수있는 쉼표로 구분 된 목록을 만드는 데 도움이되는 선택적 "textQualify"매개 변수를 추가했습니다.

Function csvRange(myRange As Range, Optional textQualify As String)
    'e.g. csvRange(A:A)  or csvRange(A1:A2,"'") etc in a cell to hold the string
    Dim csvRangeOutput
    For Each entry In myRange
        If Not IsEmpty(entry.Value) Then
            csvRangeOutput = csvRangeOutput & textQualify & entry.Value & textQualify & ","
        End If
    Next
    csvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 1)
End Function

1

각 목록의 제목과 제목의 목록을 구분하는 빈 줄이있는 여러 목록이 포함 된 Excel 시트를 처리하도록 generatecsv () 하위를 개선했습니다. 예

list title 1

item 1
item 2

list title 2

item 1
item 2

물론 그것들을 목록 당 1 개씩 여러 행으로 결합합니다.

그 이유는 고객이 주제에 따라 웹 사이트의 목록 형식으로 여러 개의 키워드를 보내달라고 요청했기 때문에 이러한 키워드를 웹 페이지로 쉽게 가져올 수있는 방법이 필요했습니다. 그래서 루틴을 수정하고 다음을 생각해 냈습니다. 또한 변수 이름을 의미있는 이름으로 변경했습니다.

    Sub generatecsv()

      Dim dataRow As Integer
      Dim listRow As Integer
      Dim data As String

      dataRow = 1: Rem the row that it is being read from column A otherwise known as 1 in vb script
      listRow = 1: Rem the row in column B that is getting written

      Do Until Cells(dataRow, 1).Value = "" And Cells(dataRow + 1, 1).Value = ""
        If (data = "") Then
          data = Cells(dataRow, 1).Value
        Else
          If Cells(dataRow, 1).Value <> "" Then
            data = data & "," & Cells(dataRow, 1).Value
          Else
            Cells(listRow, 2).Value = data
            data = ""
            listRow = listRow + 1
          End If
        End If
        dataRow = dataRow + 1
      Loop

      Cells(listRow, 2).Value = data

    End Sub

1

Sux2Lose의 대답 은 내가 선호하는 방법이지만 2 천 개가 넘는 행을 처리하는 경우 작동하지 않으며 컴퓨터에 사용 가능한 메모리가 많지 않으면 더 적은 수의 행으로 중단 될 수 있습니다.

이 경우 가장 좋은 방법은 열을 복사하고 새 통합 문서의 특별 항목을 지나서 A1새 통합 문서 Transpose를 만들고 열이 이제 행이되도록하는 것입니다. 그런 다음 통합 문서를로 저장하십시오 .csv. csv는 기본적으로 텍스트 편집기에서 열 수있는 일반 텍스트 쉼표로 구분 된 목록입니다.

참고 : csv로 저장하기 전에 열을 행으로 바꾸십시오. 그렇지 않으면 Excel은 값 사이에 쉼표를 붙이지 않습니다.


-1

가장 쉬운 방법 중 하나는 이러한 종류의 쉼표 분리 작업에 zamazin.co 웹 앱을 사용하는 것입니다. 열 데이터를 채우고 변환 버튼을 누르면 쉼표로 구분 된 목록이 만들어집니다. 다른 설정을 사용하여 원하는 출력을 향상시킬 수도 있습니다.

http://zamazin.co/comma-separator-tool

여기에 이미지 설명을 입력하십시오


이것은 지금 delim.co에 있습니다
Phil

-2

=CONCATENATE(A1;",";A2;",";A3;",";A4;",";A5)결과를 표시하려는 셀에서 사용하십시오 .


3
이것은 확장 할 수없는 수동 솔루션입니다.
Daniel Hári
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.