2012-04-04 69 views
2

我希望有人對如何處理以下Excel宏需求有一些瞭解。用於選定區域連接的Excel宏

起始條件:在列A中的文本值的 可變數目

提議的解決方案: 我想能夠選擇一個可變連續細胞在列A的,再有將文本連接在一起,用逗號分隔,並與列B中最靠上的單元格相鄰。

示例: 將在表單上選擇A2-A4。 運行宏後,內容B2(直接與所選頂部相鄰)將包含「A2,A3,A4」格式的文本。

A5-A10選自: 運行宏後,B5(直接相鄰於選擇的頂部)中的內容將包含其形式爲 「A5,A6,A7,A8,A9,A10」 的文字。

什麼是殺我是如何利用多選擇的變化和附加,我不清楚如何處理在Excel宏循環。我有一個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?我假設你將不得不將函數中的值作爲參數傳遞,但我不知道用於標識選定單元格的函數。 – Tom 2012-04-04 16:48:51

+0

我已經更新了我認爲是識別當前選擇的最簡單方法的宏。 – 2012-04-04 17:10:07

+0

傑出。正是我在找什麼。非常感謝。我希望我能碰撞你的評價。 – Tom 2012-04-04 21:16:14