首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

批量自定义分列-更改单元格数据类型

续上篇《批量分列-更改单元格数据类型》,介绍一种根据用户需求,进行批量个性化分列操作呢?比如某些列转化成文本,某些列转化成日期等。

假设有如上图所示数据源,有如下需求:将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语句进行列举即可。篇幅有限,不再赘述。

让我们看看代码运行过后的成品如何:

很好,完美贴合了需求。

有疑问欢迎留言,祝大家生活愉快。白白~

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OKvhc019nrA8Jut1T4N7qVjg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券