Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1223|回复: 13

[已解决]请教正则表达式相关代码??

[复制链接]
发表于 2023-2-22 13:40 | 显示全部楼层 |阅读模式
汇总表根据名单工作表的名字使用正则表达式,将A列的姓名提取到B列相应位置。下面是我尝试写的代码:代码运行join函数那里报错,是啥问题啊
Sub 汇总()
Dim ss As Range, 区域 As Range, n
arr = Sheets("名单").Range("a2", Cells(Rows.Count, 1).End(xlUp))
a = Join(arr, "|")
Set reg = CreateObject("vbscript.regexp")
Set 区域 = Range("a2", Cells(Rows.Count, 1).End(xlUp))

For Each ss In 区域
With reg
    .Global = True
    .Pattern = "a"
        Set sj = .Execute(ss)
        For i = 0 To sj.Count - 1
            n = sj(i) & "、" & Chr(13) & n
        Next i
        ss.Offset(0, 1) = n
        n = ""
End With
Next ss
End Sub

最佳答案
2023-2-22 17:23
jian82372387 发表于 2023-2-22 16:38
请帮忙看一下,谢谢

arr = Sheets(2).Range("a2", Sheets(2).Cells(Rows.Count, 1).End(xlUp))

text009.rar

22.73 KB, 下载次数: 10

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2023-2-22 14:53 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2023-2-22 16:24 | 显示全部楼层
cutecpu 发表于 2023-2-22 14:53
a = Join(Application.Transpose(arr), "|")

按你这修改后,变为arr = Sheets("名单").Range("a2", Cells(Rows.Count, 1).End(xlUp)) 这句代码报错了
回复

使用道具 举报

发表于 2023-2-22 16:36 | 显示全部楼层
jian82372387 发表于 2023-2-22 16:24
按你这修改后,变为arr = Sheets("名单").Range("a2", Cells(Rows.Count, 1).End(xlUp)) 这句代码报错了
...

是喔~~
您把修改後的附件上傳,我幫您看看
回复

使用道具 举报

 楼主| 发表于 2023-2-22 16:38 | 显示全部楼层
cutecpu 发表于 2023-2-22 16:36
是喔~~
您把修改後的附件上傳,我幫您看看

请帮忙看一下,谢谢

text009.rar

14.91 KB, 下载次数: 8

回复

使用道具 举报

发表于 2023-2-22 17:23 | 显示全部楼层    本楼为最佳答案   
jian82372387 发表于 2023-2-22 16:38
请帮忙看一下,谢谢

arr = Sheets(2).Range("a2", Sheets(2).Cells(Rows.Count, 1).End(xlUp))

评分

参与人数 1学分 +1 收起 理由
jian82372387 + 1 学习了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2023-3-1 10:50 | 显示全部楼层
cutecpu 发表于 2023-2-22 17:23
arr = Sheets(2).Range("a2", Sheets(2).Cells(Rows.Count, 1).End(xlUp))

请问合并完成,如何把最后一个名字后面多余的顿号删掉啊??
回复

使用道具 举报

发表于 2023-3-1 13:21 | 显示全部楼层
jian82372387 发表于 2023-3-1 10:50
请问合并完成,如何把最后一个名字后面多余的顿号删掉啊??

http://www.excelpx.com/forum.php?mod=viewthread&tid=471692



回复

使用道具 举报

 楼主| 发表于 2023-3-2 10:09 | 显示全部楼层
本帖最后由 jian82372387 于 2023-3-2 10:11 编辑

删不了,是不是因为提取代码里面有强制换行符的原因

text011.rar

12.27 KB, 下载次数: 4

回复

使用道具 举报

发表于 2023-3-2 14:02 | 显示全部楼层
jian82372387 发表于 2023-3-2 10:09
删不了,是不是因为提取代码里面有强制换行符的原因

sub demo()
a=[a1].Currentregion
for i=1 to ubound(a)
a(i,1) = application.clean(a(i,1))
  If right(a(i,1),1)="、" then
    a(i,1)=left(a(i,1),len(a(i,1))-1)
  End if
next
[a1].resize(i-1)=a
End sub

评分

参与人数 1学分 +1 收起 理由
jian82372387 + 1 学习了

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-28 06:42 , Processed in 0.249842 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表