前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ExcelVBA-多列单元格中有逗号的数据整理

ExcelVBA-多列单元格中有逗号的数据整理

作者头像
哆哆Excel
发布2022-10-25 13:43:54
1.4K0
发布2022-10-25 13:43:54
举报
文章被收录于专栏:哆哆Excel

ExcelVBA-多列单元格中有逗号的数据整理

yhd-ExcelVBA-多列单元格中有逗号的数据整理

【问题】某天老板传来一个文件,这里有一个数据表,帮我查找一下那个是我们单位的人,他们的职务是什么?

===传来的数据===

===本单位的数据===

一般来说我们是用VlooKup函数进行查找引用,找到某人的职务,如下面

出现如下的问题

我们来看看传来的“神级”的数据,

(1)一个单元格中有两个或两个以上不等的人数

(2)分隔符号是英语的逗号”,”也有中文输入法方式的”,”逗号

我们现在要把数据整理一下,才能进行查找匹配出来,

整理要求(1)每一个单元格是一个姓名,每一个单元格是一个电话号码,(2)如果有多个姓名的,第二个姓名要对应第二个号码,第三个姓名要对应第三个号码。(3)要把中文的逗号与英文的逗号统一并且删除掉,(4)一个姓名一行,拆分后后面的“家庭编号”“家庭总人数”“家庭地址”要对应相应的人员信息中。

【解决方法】(1)如果用传统的复制===粘贴,我不敢想要做到什么时候。一次可以加班,如果明天还再传这样的文件来,那以后怎么样啊,天,我不想了,(2)请VBA上场吧

【代码测试】

(1)先把“逗号”统一成英文形式的逗号

代码如下:

Sub test_Replace()

Dim s As String

s = "岳不群,宁中则,岳灵珊"

MsgBox s

s = Replace(s, ",", ",")

MsgBox s

End Sub

(2)把统一到英文形式的符号后文本用Split函数利用逗号”,”进行分割为数组

(3)完整的代码如下:

Sub 拆分有逗号分隔的单元格数据为多行()

Dim arr, brr(), i%, j%, k%

With Sheets("传来的数据")

arr = [a1].CurrentRegion

ReDim brr(1 To UBound(arr) * 3, 1 To 6)

For i = 3 To UBound(arr)

crr = Split(Replace(arr(i, 2), ",", ","), ",")

drr = Split(Replace(arr(i, 3), ",", ","), ",")

For j = 0 To UBound(crr)

k = k + 1

brr(k, 1) = arr(i, 1)

brr(k, 2) = crr(j)

brr(k, 3) = drr(j)

brr(k, 4) = arr(i, 4)

brr(k, 5) = arr(i, 5)

brr(k, 6) = arr(i, 6)

Next j

Next i

End With

With Sheets("整理好")

.[a1].Resize(UBound(brr, 1), UBound(brr, 2)).Clear

.[c:c].NumberFormatLocal = "@"

.[a3].Resize(UBound(brr, 1), UBound(brr, 2)) = brr

.[a1:F2] = Sheets("传来的数据").[a1:F2].Value

.Range("a2:F" & .Cells(Rows.Count, 1).End(xlUp).Row).EntireColumn.AutoFit

.Range("a2:F" & .Cells(Rows.Count, 1).End(xlUp).Row).Borders.LineStyle = 1

End With

End Sub

====运行,效果如下:====

整理好了。

可以查找引用啦

完成任务

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 哆哆Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档