一次用“-”分隔多列单元格内容

一次用“-”分隔多列单元格内容
 -------------------------------------------- 
|  Visible |   Actual formula   |  I need    |
 --------------------------------------------
|    0     |   =500-500         |  500       |
|    0     |   =10000-10000     |  10000     |
|    0     |   =1500-1500       |  1500      |
|    0     |   =750-750         |  750       |
|          |                    |            |
 -------------------------------------------- 

我可以使用 MS Office Excel 2007 中的“数据”选项卡中的“文本到列”进行上述分离。但我有很多列,无法一次选择并将文本应用到列。还有其他简单的方法可以做到吗?

答案1

所以你想一次将此方法应用于多个列,对吗?
我不知道如果没有 VBA 如何做到这一点,所以这是我的解决方案:

Sub text2columns()

separator = "-"
FirstCol = ActiveSheet.Cells.Find("*", [A1], , , xlByColumns, xlNext).Column
LastCol = ActiveSheet.Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column

For i = LastCol To FirstCol Step -1

    Set test = ActiveSheet.Columns(i).Find(separator, , xlFormulas, xlPart)

    If Not test Is Nothing Then
        Set FirstCell = ActiveSheet.Columns(i).Find("*", , , , , xlNext)
        Set LastCell = ActiveSheet.Columns(i).Find("*", , , , , xlPrevious)

        Columns(i + 1).Insert Shift:=xlToRight
        Application.DisplayAlerts = False
        Range(FirstCell, LastCell).TextToColumns Destination:=FirstCell, _
            DataType:=xlDelimited, Other:=True, OtherChar:=separator
        Application.DisplayAlerts = True
    End If

Next
End Sub

快速概览

  1. 向后迭代每一列
  2. 测试-当前列中是否存在分隔符字符串
  3. 如果是,则在其旁边插入一个新列
  4. 并将文本转列方法应用于当前列

如果任何单元格中有多个分隔符,此宏将失败

在此处输入图片描述

在此处输入图片描述

示例工作表

相关内容