다음과 같이 열 A에서 지정되지 않은 수의 행을 취하는 간단한 Excel 시트를 만드는 작업이 있습니다.
1234
123461
123151
11321
사용자가 다음과 같이 다른 프로그램에 쉽게 복사하여 붙여 넣을 수 있도록 다른 셀에서 쉼표로 구분 된 목록으로 만드십시오.
1234,123461,123151,11321
가장 쉬운 방법은 무엇입니까?
다음과 같이 열 A에서 지정되지 않은 수의 행을 취하는 간단한 Excel 시트를 만드는 작업이 있습니다.
1234
123461
123151
11321
사용자가 다음과 같이 다른 프로그램에 쉽게 복사하여 붙여 넣을 수 있도록 다른 셀에서 쉼표로 구분 된 목록으로 만드십시오.
1234,123461,123151,11321
가장 쉬운 방법은 무엇입니까?
답변:
데이터가 A1에서 시작한다고 가정하면 B 열에 다음을 입력합니다.
B1 :
=A1
B2 :
=B1&","&A2
그런 다음 B2 열을 전체 열에 붙여 넣을 수 있습니다. 열 B의 마지막 셀은 이제 쉼표로 구분 된 열 A의 목록이어야합니다.
실제로 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)
하면 쉼표로 구분 된 목록이 표시됩니다.
다른 방법은 Excel 열을이 브라우저 내 도구에 붙여 넣는 것입니다.
convert.town/column에서 쉼표로 구분 된 목록
텍스트 열을 쉼표로 구분 된 목록으로 변환합니다.
어쨌든 사용자가 다른 프로그램에 복사하여 붙여 넣을 때 쉽게 사용할 수 있습니다.
이런 식으로 할 수 있습니다. 거대한 스프레드 시트에 대해 이야기하지 않으면 '확인'을 수행합니다 ...
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 에서도이 작업을 수행 할 수 있다고 확신하지만 현재는 잘 모르겠으며 작업을 다시해야합니다. ;)
vi 또는 vim을 사용하여 각 줄의 끝에 쉼표를 넣으십시오.
%s/$/,/
이 명령을 설명하려면
%
모든 행에 조치 (즉, 찾기 및 바꾸기)를 수행함을 의미합니다.s
대체를 나타냅니다/
분리 인자 (예 s/find/replace/options
)$
줄의 끝을 나타냅니다,
이 경우 대체 텍스트입니다How-To Geek의 가이드를 사용하여 행을 열로 바꾸고 간단히 뒤집을 수 있습니다. 그런 다음 데이터를 CSV (쉼표로 구분 된 형식)로 내 보내면 일반 텍스트가 쉼표로 구분 된 목록이됩니다! 원하는 경우 메모장에서 복사하여 Excel에 다시 넣을 수 있습니다. 또한 쉼표 뒤에 공백이 필요한 경우 검색 및 바꾸기 기능을 수행하여 ","를 ","로 바꿉니다. 희망이 도움이됩니다!
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
각 목록의 제목과 제목의 목록을 구분하는 빈 줄이있는 여러 목록이 포함 된 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
Sux2Lose의 대답 은 내가 선호하는 방법이지만 2 천 개가 넘는 행을 처리하는 경우 작동하지 않으며 컴퓨터에 사용 가능한 메모리가 많지 않으면 더 적은 수의 행으로 중단 될 수 있습니다.
이 경우 가장 좋은 방법은 열을 복사하고 새 통합 문서의 특별 항목을 지나서 A1
새 통합 문서 Transpose
를 만들고 열이 이제 행이되도록하는 것입니다. 그런 다음 통합 문서를로 저장하십시오 .csv
. csv는 기본적으로 텍스트 편집기에서 열 수있는 일반 텍스트 쉼표로 구분 된 목록입니다.
참고 : csv로 저장하기 전에 열을 행으로 바꾸십시오. 그렇지 않으면 Excel은 값 사이에 쉼표를 붙이지 않습니다.
가장 쉬운 방법 중 하나는 이러한 종류의 쉼표 분리 작업에 zamazin.co 웹 앱을 사용하는 것입니다. 열 데이터를 채우고 변환 버튼을 누르면 쉼표로 구분 된 목록이 만들어집니다. 다른 설정을 사용하여 원하는 출력을 향상시킬 수도 있습니다.
=CONCATENATE(A1;",";A2;",";A3;",";A4;",";A5)
결과를 표시하려는 셀에서 사용하십시오 .