续上篇《批量分列-更改单元格数据类型》,介绍一种根据用户需求,进行批量个性化分列操作呢?比如某些列转化成文本,某些列转化成日期等。
假设有如上图所示数据源,有如下需求:将AB列转化为文本格式,将C-F列转化为日期格式,G列不作任何处理,H-M列转化为数字形式。
让我们再次回顾一下数据类型:
实质上是对所在列的列数做个条件判断,然后按需对号入座就好了。代码主体可以直接借鉴上期内容,最终成型作品如下:
Sub 批量自定义分列转化数据类型()
Dim i As Integer
i = 1
Dim j As Integer
Do While i <= ActiveSheet.UsedRange.Columns.Count
Columns(i).Select
Select Case i
Case Is <= 2
j = 2 '文本
Case Is <= 6
j = 5 '年月日类型日期
Case Is = 7
GoTo a '不作处理,跳转至下一列
Case Else
j = 1 '常规
End Select
Selection.TextToColumns DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, j), TrailingMinusNumbers:=True
a: i = i + 1
Loop
End Sub
这里我没有用if-else做分类讨论,取而代之的是select case(o365devx, 2022)语句:
Select Case testexpression
[ Case expressionlist-n [ statements-n ]]
[ Case Else [ elsestatements ]]
End Select
https://learn.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/select-case-statement
以所示代码为例,工作原理如下:当列数2且<=6(即C至F列)时,转化为日期类型(个人偏好我选择了年月日的形式);当列数=7(即G列)时,不作任何处理;其他情况(本次为H至M列)时转化为数字类型。如果你自己对数据有需求,只要按需往代码中间塞Case Is语句进行列举即可。篇幅有限,不再赘述。
让我们看看代码运行过后的成品如何:
很好,完美贴合了需求。
有疑问欢迎留言,祝大家生活愉快。白白~
领取专属 10元无门槛券
私享最新 技术干货