2

我希望有人对如何处理以下 Excel 宏要求有所了解。

起始条件:A 列中可变数量的文本值。

建议的解决方案:我希望能够在 A 列中选择可变数量的连续单元格,然后将文本连接起来,用逗号分隔,并与 B 列中最顶部的单元格相邻。

示例:将在工作表上选择 A2-A4。运行宏后,B2的内容(直接与选择的顶部相邻)将包含格式为“A2、A3、A4”的文本。

A5-A10 选中:运行宏后,B5的内容(直接与选择的顶部相邻)将包含格式为“A5、A6、A7、A8、A9、A10”的文本。

让我丧命的是如何利用多项选择的可变性,此外,我不清楚如何处理 Excel 宏中的循环。我有计算机科学学位,但我最终在基础设施工作,所以我有点生疏。有人可以帮忙吗,这可以节省我每天的大量时间。感谢任何回复。

4

1 回答 1

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
于 2012-04-04T15:47:30.987 回答