--------------------------------------------
| 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
快速概览
- 向后迭代每一列
- 测试
-
当前列中是否存在分隔符字符串 - 如果是,则在其旁边插入一个新列
- 并将文本转列方法应用于当前列
如果任何单元格中有多个分隔符,此宏将失败