2012-04-04 5 views
2

위해 누군가가 다음과 같은 엑셀 매크로 요구 사항을 접근하는 방법에 관한 몇 가지 통찰력을 것 기대했다.엑셀 매크로 선택한 영역 병합

시작 조건 : 열 A의 텍스트 값의 변수 수

제안 된 솔루션 : 내가 좋아하는 것 은 열 A 연속 세포의 변수 번호를 선택할 수하고있다합니다 쉼표 등으로 구분 된 텍스트는 B 열의 맨 위 셀에 인접한 단일 열로 연결됩니다.

예 : A2-A4가 시트에서 선택됩니다. 매크로를 실행 한 후, B2 (선택의 상부에 직접 인접한)의 내용이 형태 "A2, A3, A4"의 텍스트를 포함한다.

A5-A10 선택된 : 매크로를 실행 한 후, B5 (선택의 상부에 직접 인접한)의 내용이 형태 "A5, A6, A7, A8, A9, A10 '에서 텍스트를 포함한다. 나를 죽이고 무엇

여러 선택의 variablity을 활용하고 additonally, 내가 엑셀 ​​매크로의 루핑 처리하는 방법에 대한 명확한 아니에요하는 방법입니다. 나는 CS 학위를 가지고 있지만 인프라에서 일하는 것을 끝내었고 약간 녹슬었다. 누군가가 도울 수 있었는지, 이것은 나를 매일 감정적 인 시간으로 구할 수 있습니다. 모든 응답에 감사드립니다.

답변

2

다음 코드는 무엇을 추구한다. 나는 어떤 수준의 코멘트가 적절한 지 모르므로 많은 코멘트를 추가하지 않았다. 예를 들어, CS 학위를 통해 추측 할 수있는 경우 각 진술의 목적을 설명하고 싶지는 않습니다. 나는 또한 당신의 질문에 명백한 것보다 더 많은 것이 있다고 의심한다. 예를 들어, 워크 시트와 행 번호가 매개 변수로 전달 된 함수로 작성해야합니까? 질문이 있으시면 다시 올리시고 필요한 경우 제 대답을 개선하겠습니다.

Option Explicit 
Sub JoinCells() 

    Dim ColFirst As Long 
    Dim ColLast As Long 
    Dim JoinedValue As String 
    Dim RowCrnt As Long 
    Dim RowFirst As Long 
    Dim RowLast As Long 

    RowFirst = Selection.Row  ' First row of selection 
    ' Selection.Rows.Count returns the number of rows in the selection. 
    ' Warning! You can fool this code by making multiple selections. 
    RowLast = RowFirst + Selection.Rows.Count - 1 

    ColFirst = Selection.Column 
    ColLast = ColFirst + Selection.Columns.Count - 1 

    If ColFirst <> 1 Or ColLast <> 1 Then 
    Call MsgBox("Please select a range within column ""A""", vbOKOnly) 
    Exit Sub 
    End If 

    With Worksheets("xxxxxxx")  ' Worksheet of your choice. 

    JoinedValue = .Cells(RowFirst, "A").Value 
    For RowCrnt = RowFirst + 1 To RowLast 
     JoinedValue = JoinedValue & "," & .Cells(RowCrnt, "A").Value 
    Next 
    .Cells(RowFirst, "B").Value = JoinedValue 

    End With 

End Sub 
+0

토니,이 완벽하게 작동합니다. 고맙습니다. 하나의 질문. 시트에서 A2에서 A9를 선택하고 바로 가기 키 조합을 사용하여 매크로를 실행하여 RowFirst 및 RowLast를 설정할 수 있도록 코드에 워크 시트의 현재 선택 (강조 표시된 셀)을 전달하려면 어떻게합니까? 나는 당신이 함수의 값을 arguements로 전달해야한다고 가정하고 있지만, 선택된 셀을 식별하는 데 사용되는 함수를 모른다. – Tom

+0

현재 선택을 식별하는 가장 쉬운 방법이라고 생각되는 매크로를 업데이트했습니다. –

+0

뛰어난. 정확히 내가 무엇을 찾고 있었는지. 정말 고맙습니다. 나는 당신의 평점을 올릴 수 있었으면 좋겠다. – Tom