클립 보드에서 행 범위를 쉼표로 구분 된 목록으로 변환


1

다시 포맷 해야하는 Excel 스프레드 시트에 일부 데이터가 있습니다. 기존 형식은 행입니다. 원하는 형식은 쉼표로 구분됩니다.

수퍼 유저의 다른 곳에서 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

현재 의도 한 워크 플로에 대한이 스크립트의 단점은 다음과 같습니다.

셀 범위는 항상 열 1에 있어야합니다. 워크 시트의 어느 곳에서나 선택한 범위에서 스크립트를 입력해야합니다.

스크립트의 출력은 항상 Cell (1,2)에 나타납니다. 클립 보드에 복사하고 싶습니다.

s.Copy 또는 s.PutInClipboard와 같은 것이 작동하지만 오류가 발생하기를 바랍니다.

데이터는 다음과 같습니다 :

Topic 1
Mike
Tony
Dave


Topic 2 
Steve
Joe
Sally


Topic 3
...

원하는 출력은 다음과 같습니다.

Mike, Tony, Dave

(클립 보드로)

그런 다음 다음 반복에서 :

Steve, Joe, Sally

(클립 보드로)

답변:


2

먼저 매크로가 포함 된 통합 문서의 VBA IDE에서 도구-> 참조로 이동하여 "Microsoft Forms 2.0 개체 라이브러리"(시스템의 파일 경로는)에 대한 참조를 추가하십시오 C:\Windows\system32\FM20.DLL.

그런 다음이 매크로를 사용해보십시오. 이 매크로는 클립 보드에 "선택된"(강조된) 데이터를 넣습니다. 같은 행에서 일련의 셀을 선택하면 왼쪽에서 오른쪽으로 이동합니다. 같은 열에서 일련의 셀을 선택하면 위에서 아래로 이동합니다.

행과 열의 합성을 수행해야하는 경우 (둘 이상의 행과 열을 사각형 모양으로 선택) 다음과 같은 코드를 추가 할 수 있습니다.

MsgBox "Row: " & cell.Row & " Column: " & cell.Column

어떤 행 번호 (1 기반)와 열 번호 (A = 1)가 어떤 순서로 열거되는지를 판별하기 위해.

클립 보드에 데이터를 넣을 무언가가 필요한 경우 사용자 작업을 기다린 다음 클립 보드에 다음 데이터 집합을 자동으로 넣으면이 매크로를 수정해야합니다. "선택된"이 정확히 무엇을 의미하는지는 확실하지 않습니다.

Sub su492198()
Dim cell As Range
Dim sel As Range
Dim output As String
Dim first As Boolean
Dim dat As New DataObject

first = True
output = ""

On Error GoTo Errhndl
Set sel = Selection
On Error GoTo 0

For Each cell In sel.Cells
    If first = False Then output = output & ", "
    output = output & cell.Value
    first = False
Next

On Error GoTo Errclip
dat.SetText output
dat.PutInClipboard
On Error GoTo 0

Exit Sub
Errhndl:
MsgBox "Can't use this macro if nothing is selected or a non-cell object is selected"
Exit Sub
Errclip:
MsgBox "Error copying text to clipboard! Text was: " & output
End Sub

고마워, 지금 시도해보십시오. 내 '선택'범위는 단일 열의 연속 행일 것으로 예상 될 수 있습니다.
AllInOne

이 매크로는 "연속 행"만 처리하며 헤더와 값 사이에 빈 줄이있는 값 그룹을 반복하고 각 그룹을 클립 보드에 자동으로 배치하는 기능이 없습니다. 당신이 필요로하는 경우에 , 그것은 매크로를 복잡하게 것이지만, 알려주세요.
allquixotic
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.