此图像以UK格式显示列的初始状态。 #value(如果我尝试向其添加1),False(如果我对它运行ISNUMBER()
)和True(如果我在输入项上使用文本作为列来交换句点和逗号)。一旦处于真实状态,我就可以使用数字,但是对于某些情况,则无法达到此真实状态。相反,它们导致错误处理转换为弹出的数字菱形。
我使用记录器将文本记录到单列的过程。它会产生以下内容:
Range(Range("J2"), Range("J2").End(xlDown)).Select
Selection.TextToColumns Destination:=Range("J2"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
我大约有60列必须应用,而我目前的解决方案是在此代码块中有60个条目具有不同的单元格引用,最终运行非常缓慢。
搜索时找不到答案。
答案 0 :(得分:0)
尽管使用selection
并不理想,但是有一些方法可以利用Selection
支持更有效地将列循环到.texttocolumns
。
请注意,我在texttocolumns
中没有任何其他参数,根据您的使用情况,这可能对您或不成问题。
Private Sub TTC()
If Selection.Count = 1 Then
Selection.TextToColumns
Else
Dim sr As Long, sc As Long, er As Long, ec As Long, col As Long
sr = Selection.Row 'start row
sc = Selection.Column 'start column
er = Selection.Rows.Count + sr - 1 'end row
ec = Selection.Columns.Count + sc - 1 'end column
For col = sc To ec
Range(Cells(sr, col), Cells(er, col)).TextToColumns
Next col
End If
End Sub
在上面,选择用于定义变量,然后这些变量是要循环并应用texttocolumns
的特定范围。
请注意,我尚未将其设置为跳过列,例如,不适用于非连续范围;这将适用于跨行/跨列的连续范围。
在加快处理速度方面,可以在执行之前使用关闭screenupdating
,calculation
和displayalerts
。