那将如何运作?我不想使用向导,我想使用 VBA 来完成。
我有一列名字,名字,名字,中间名,姓氏,一些有后缀(Jr,Sr)一些名字有多个中间名(全名或首字母)一些确定的名字有2个部分(Van derlay,de Novo)。
在执行 txt-to-column 时,我需要的只是空间,但由于结果列的数量可以从 5 到 8 不等,我冒着删除与每个名称相关联的下一列中的数据的风险。
我已经将我的 Sub 设置为首先添加列,但我认为可能会有更优雅和/或更高效的东西。
在 VBA 中,最简单的解决方案是计算分隔符的数量(或列数),插入适当的列数,然后运行向导。
如果你计算空格,下面的代码会得到它的最大空格数:
Dim shtTemp As Worksheet, lMaxSpaces As Long
Set shtTemp = Sheets.Add
shtTemp.Cells(1, 1).FormulaArray = _
"=MAX(LEN('Sheet1!R[1]C[1]:R[1000]C[1])-LEN(SUBSTITUTE('Sheet1!R[1]C[1]:R[1000]C[1],"" "","""")))"
lMaxSpaces = shtTemp.Cells(1, 1).Value
Application.DisplayAlerts = False
shtTemp.Delete
Application.DisplayAlerts = True
不插入纸张的另一种选择是:
Dim vArr As Variant, lMaxSpaces As Long, lLoop As Long, lSpaces As Long
vArr = Selection.Value
For lLoop = LBound(vArr, 1) To UBound(vArr, 1)
lSpaces = Len(vArr(lLoop, 1)) - Len(Replace(vArr(lLoop, 1), " ", ""))
If lSpaces > lMaxSpaces Then lMaxSpaces = lSpaces
Next
Debug.Print lMaxSpaces