使用键盘快捷键或按钮合并多个 Excel 列(如果可能,无需新列和公式)

使用键盘快捷键或按钮合并多个 Excel 列(如果可能,无需新列和公式)

如何使用 Excel 将多个字符串列合并为一个带有分隔符的列(例如;)?

如果可能的话,是否可以不创建新列和不使用公式来完成此操作,而是使用键盘快捷键或宏或菜单按钮?

我会找到如何使用新列 + 公式来自己完成此操作,但我想看看是否还有其他(聪明的)解决方案。

对比前后结果如下:

在此处输入图片描述

答案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 的回答

  1. 菜单 > Excel 选项 > 在功能区中显示“开发人员”选项卡

  2. 开发人员选项卡 > 录制宏 > 选择“个人宏工作簿”,然后选择键盘快捷键,例如CTRL+M

  3. 停止录制

  4. 点击“Visual Basic”按钮

  5. 单击“VBAProject (PERSONAL.XLSB)”>“模块”>“模块 1”

  6. 粘贴已接受答案中的代码

  7. 关闭 Visual Basic 并关闭 Excel

  8. 接受“保存至个人工作簿”

  9. 打开现有的 Excel 文件并测试键盘快捷键

  10. 有用!

如果您稍后想要编辑该功能,则必须:

  1. 启动 Excel
  2. 开发人员选项卡 > Visual Basic > 修改 PERSONAL.XLSB 中的函数
  3. 开发人员选项卡 > 宏 > 选择宏 > 选项...
  4. 设置键盘快捷键再次(好像每次修改功能时快捷方式都会被删除)

相关内容