Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何将宏应用于整个列?_Excel_Vba - Fatal编程技术网

Excel 如何将宏应用于整个列?

Excel 如何将宏应用于整个列?,excel,vba,Excel,Vba,我有一个宏,当运行它时,它将值分隔到行中的不同单元格中。分隔符是两个或两个以上的空格。这是一个例子,所有这些都在一个单元格中 One Space Two Spaces Three Spaces 将成为: One Space Two Spaces Three Space 每个单词都在自己的单元格中 我有一整列,大约300000行,数据与此类似,我想知道如何将以下宏应用于整列 Dim rng As Range Dim txt As String Dim FullName() A

我有一个宏,当运行它时,它将值分隔到行中的不同单元格中。分隔符是两个或两个以上的空格。这是一个例子,所有这些都在一个单元格中

One Space    Two  Spaces    Three   Spaces
将成为:

One Space Two Spaces Three Space
每个单词都在自己的单元格中

我有一整列,大约300000行,数据与此类似,我想知道如何将以下宏应用于整列

Dim rng As Range
Dim txt As String
Dim FullName() As String
Dim i As Long, colOffset As Long

Set rng = ActiveCell
txt = rng.Value2

FullName = Split(txt, String(2, " "))

For i = LBound(FullName) To UBound(FullName)
    If Not WorksheetFunction.Trim(FullName(i)) = vbNullString Then
        Debug.Print WorksheetFunction.Trim(FullName(i))
        colOffset = colOffset + 1
        rng.Offset(0, colOffset).Value2 = WorksheetFunction.Trim(FullName(i))
    End If
Next i

这将按空格将选定的单元格拆分为右侧的列

For Each c In Selection.Cells
    cellvalues = Split(WorksheetFunction.Trim(c.Value), " ")
    c.Offset(0, 1).Resize(1, UBound(cellvalues)).Value = cellvalues
Next

只需删除
偏移量(0,1)。
部分即可覆盖这些值。您可以使用动态范围或由代码标识的范围,而不是
选择

在某种程度上,您似乎正在重新创建“文本到列”功能。