在Excel里对某一列进行分列操作大家都会,但如果对多列同时进行分列的话会提示一次只能转换一列数据。
本介绍如何用宏的方式来实现批量分列。思路如下:通过遍历每一列的方式对分列进行多次重复操作。
如果你需要将工作表里的每一列数据都转化为“常规”格式(“常规”数据格式将数值转换成数字,日期值会转换成日期,其余数据则转换成文本),那么代码如下:
Sub 批量分列为常规格式()
'将活动工作表所有列均转化为常规格式
Dim i As Integer
i = 1
Do While i <= ActiveSheet.UsedRange.Columns.Count
Columns(i).Select
Selection.TextToColumns DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
i = i + 1
Loop
End Sub
如果你需要将工作表里的每一列数据都转化为文本格式,那么代码如下:
Sub 批量分列为文本格式()
'将活动工作表所有列均转化为文本格式
Dim i As Integer
i = 1
Do While i <= ActiveSheet.UsedRange.Columns.Count
Columns(i).Select
Selection.TextToColumns DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 2), TrailingMinusNumbers:=True
i = i + 1
Loop
End Sub
你会发现两段代码的区别在于Array后面的(1,1)变成了(1,2)。括号里的第一个1代表着1列,逗号后面的1和2分别代表着“常规”以及“文本”类型。关于这一点,微软对Excel列的数据类型有进一步的概括:
现在你可以通过只改变Array后面括号的内容来按需求自己编写代码啦!这里就不进一步进行列举了。如有任何问题欢迎留言沟通。
参考文献
o365devx. (2022年4月). XlColumnDataType 枚举(Excel). Microsoft. 2022年12月引用自
https://learn.microsoft.com/zh-cn/office/vba/api/Excel.XlColumnDataType.
如果不懂得怎么运用VBA欢迎参考如下链接:
领取专属 10元无门槛券
私享最新 技术干货