那怎么办? 我不想使用向导,我想使用VBA。
我有一列名字,第一,中间,最后,一些带后缀(Jr,Sr) 一些名称有多个中间名(全名或缩写) 一些肯定的名字有2个部分(Van der lay,de Novo)。
当执行txt-to-column时,我需要的是空格,但由于结果列的数量可以是5到8,我冒着删除与每个名称关联的下一列中的数据的风险。
我已将我的Sub设置为首先添加列,但我认为可能会有更优雅和/或更高效的内容。
答案 0 :(得分:1)
在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