用于选定区域串联的 Excel 宏

标签 excel vba

我希望有人能够了解如何满足以下 Excel 宏要求。

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

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

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

选择A5-A10: 运行宏后,B5(紧邻所选内容顶部)的内容将包含“A5、A6、A7、A8、A9、A10”形式的文本。

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

最佳答案

下面的代码可以满足您的要求。我没有添加太多评论,因为我不确定什么级别的评论是合适的。例如,如果你的计算机科学学位允许你猜测,我不想解释每个陈述的目的。我还怀疑你的问题不仅仅是显而易见的。例如,我是否应该将其设为一个函数,并将工作表和行号作为参数传递。请带着问题回来,我会根据需要改进我的答案。

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

关于用于选定区域串联的 Excel 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10013853/

相关文章:

excel - VBA:复制表维护定义的名称

excel - 根据 Excel 单元格值选中/取消选中 Listobx 项目

Python Excel 列数组变量

excel - 如何编写 VBA 脚本来删除包含某个字符串的范围内的所有单元格?

vba - 检测 VBA 中是否选择了表单控件选项按钮

excel - 将多个文本文件导入 Excel

excel - 在Excel VBA中获取当前单元格周围的相邻单元格值

c# - 使用C#删除excel中的空行

VBA 截断值

vba - 使用Outlook VBA区分可见和不可见附件