是否可以将文本到列插入而不是replace数据?

这将如何工作? 我不想使用向导,我想用VBA来做。

我有一列名称,第一,中间,最后,一些带后缀(Jr,Sr)一些名称有多个中间名(全名或首字母)一些确定的名称有2个部分(Van der lay,de Novo)。

在做txt-to-column时,我所需要的只是空间,但是由于结果列的数量可能是5到8,所以我冒险删除与每个名称关联的下一列中的数据。

我已经build立了我的Sub刚刚添加列,但我认为可能有更优雅和/或有效的东西。

在VBA中,最简单最快的解决scheme是计算分隔符的数量(或列数),插入适当数量的列,然后运行向导。

如果您计算空格,下面的代码将获得最大数量的空格:

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