Excel精英培训网

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

求修改成将字符或数字分列

[复制链接]
发表于 2020-5-13 17:30 | 显示全部楼层 |阅读模式
本帖最后由 sanfuhai 于 2020-5-15 16:32 编辑

改成将字符或数字分列,详情请看附件,SHEET1和SHEET2 修改代码AA.rar (22.39 KB, 下载次数: 8)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2020-5-13 20:32 | 显示全部楼层
  1. Sub demo()

  2.    With Sheets("Sheet1")
  3.    Dim arr: arr = Range("AS2").Resize(.Cells(Rows.Count, "AS").End(xlUp).Row - 1, 2)
  4.    
  5.    Set dic = CreateObject("Scripting.Dictionary")
  6.    
  7.    For i = 1 To UBound(arr): dic(arr(i, 1)) = arr(i, 2): Next
  8.    
  9.    For i = 2 To .Cells(Rows.Count, "H").End(xlUp).Row
  10.       brr = Split(dic(.Cells(i, "H").Value), ",")
  11.       .Cells(i, "AB").Resize(1, UBound(brr) + 1) = brr
  12.    Next
  13.    
  14.    End With
  15.    
  16. End Sub
复制代码
祝順心,南無阿彌陀佛!

修改代码AA.rar

24.11 KB, 下载次数: 9

评分

参与人数 1学分 +2 收起 理由
sanfuhai + 2 我和小伙伴都惊呆了

查看全部评分

回复

使用道具 举报

发表于 2020-5-13 21:51 | 显示全部楼层
不用字典的方法
  1. Sub itest()
  2. Dim x, y
  3. Dim ar, br, cr
  4. With Sheet1
  5. ar = .Range("h2:h" & .Range("h50000").End(3).Row)
  6. br = .Range("as2:at" & .Range("as50000").End(3).Row)
  7. .Range("ab2:ag5000") = ""
  8. For x = 1 To UBound(ar)
  9.   For y = 1 To UBound(br)
  10.     If ar(x, 1) = br(y, 1) Then
  11.        cr = Split(br(y, 2), ",")
  12.        .Cells(x + 1, "ab").Resize(1, UBound(cr) + 1) = cr
  13.        Exit For
  14.     End If
  15.   Next
  16. Next
  17. End With
  18. End Sub
复制代码


修改代码AA.zip

22.39 KB, 下载次数: 6

评分

参与人数 2学分 +4 收起 理由
lsyylw + 2 太强大了
sanfuhai + 2 我和小伙伴都惊呆了

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 10:00 , Processed in 4.135546 second(s), 22 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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