答案1
就是这样:
Sub mergeCols()
Dim separator As String, arr() As Variant
separator = InputBox("separator: ")
arr = Selection
For i = LBound(arr) To UBound(arr)
Dim rowString As String
rowString = vbNullString
For j = LBound(arr, 2) To UBound(arr, 2)
Dim currentCell As String
currentCell = arr(i, j)
If currentCell <> vbNullString Then
rowString = rowString & currentCell & separator
arr(i, j) = ""
End If
Next j
If rowString <> vbNullString Then arr(i, LBound(arr, 2)) = Left(rowString, Len(rowString) - Len(separator))
Next i
Selection = arr
End Sub
选择您想要执行此操作的区域。不是专栏,特定区域并运行宏。它会要求您输入分隔符,因此只需输入您想要的任何内容即可。
答案2
附加信息@andrewb 的回答。
菜单 > Excel 选项 > 在功能区中显示“开发人员”选项卡
开发人员选项卡 > 录制宏 > 选择“个人宏工作簿”,然后选择键盘快捷键,例如CTRL+M
停止录制
点击“Visual Basic”按钮
单击“VBAProject (PERSONAL.XLSB)”>“模块”>“模块 1”
粘贴已接受答案中的代码
关闭 Visual Basic 并关闭 Excel
接受“保存至个人工作簿”
打开现有的 Excel 文件并测试键盘快捷键
有用!
如果您稍后想要编辑该功能,则必须:
- 启动 Excel
- 开发人员选项卡 > Visual Basic > 修改 PERSONAL.XLSB 中的函数
- 开发人员选项卡 > 宏 > 选择宏 > 选项...
- 设置键盘快捷键再次(好像每次修改功能时快捷方式都会被删除)