Excel精英培训网

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

[已解决]求助数组问题

[复制链接]
发表于 2013-1-30 12:47 | 显示全部楼层 |阅读模式
问题我有一个数组变量arr 只有1列格式为“张三/1,李四/1,张三/2”形式,我想吧arr转到brr数组中吧”/1“全部删掉,数组变量brr结果为“张三,李四,张三”。
最佳答案
2013-1-30 13:12
本帖最后由 hoogle 于 2013-1-30 13:16 编辑

  1. Sub hoogle()
  2.     Dim arr, i, brr  '定义变量
  3.     arr = Array("张三/1", "李四/2", "王五/3")  '给ARR数组赋值
  4.     brr = arr        'arr数值值赋值给brr
  5.     For i = LBound(arr) To UBound(arr)   '从最小下标循环到最大下标
  6.         brr(i) = Split(arr(i), "/")(0)  '用“/”分割arr(i),第一个元素(下标为0)赋值给brr(i)
  7.     Next
  8. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-1-30 12:58 | 显示全部楼层
回复

使用道具 举报

发表于 2013-1-30 13:02 | 显示全部楼层
要用循环
for i= lbound(arr)  to ubound(arr)
  left(arr(i),2)=brr(i)
next
回复

使用道具 举报

发表于 2013-1-30 13:05 | 显示全部楼层
1.查找法,查找到/的位置,然后从/开始的位置全替换掉
2.截取法,查找到/的位置,截取/后所在位置的前面一段字符。

回复

使用道具 举报

发表于 2013-1-30 13:08 | 显示全部楼层
本帖最后由 hwc2ycy 于 2013-1-30 13:09 编辑
  1. Sub test()
  2.     Dim arr, arrb, i&
  3.     arr = Array("张三/1", "李四/2", "王五/3")
  4.     arrb = arr
  5.     For i = LBound(arr) To UBound(arr)
  6.         If arr(i) Like "*/#" Then
  7.             arrb(i) = Mid(arr(i), 1, InStr(arr(i), "/") - 1)
  8.         End If
  9.     Next
  10. End Sub
复制代码
回复

使用道具 举报

发表于 2013-1-30 13:11 | 显示全部楼层
  1. Sub 正则法()
  2.     Dim arr, arrb, i&
  3.     Dim reg As Object
  4.     arr = Array("张三/1", "李四/2", "王五/3")
  5.     arrb = arr
  6.     Set reg = CreateObject("VBScript.regExp")
  7.     With reg
  8.         .Global = True
  9.         .Pattern = "\/\d+"
  10.         For i = LBound(arr) To UBound(arr)
  11.             If .test(arr(i)) Then
  12.                 arrb(i) = .Replace(arr(i), "")
  13.             End If
  14.         Next
  15.     End With
  16.     Set reg = Nothing
  17. End Sub
复制代码

评分

参与人数 2 +18 金币 +20 收起 理由
cbg2008 + 20 + 20 很给力! 用正则解决不简单
hoogle -2 这题用正则,大材小用!

查看全部评分

回复

使用道具 举报

发表于 2013-1-30 13:12 | 显示全部楼层    本楼为最佳答案   
本帖最后由 hoogle 于 2013-1-30 13:16 编辑

  1. Sub hoogle()
  2.     Dim arr, i, brr  '定义变量
  3.     arr = Array("张三/1", "李四/2", "王五/3")  '给ARR数组赋值
  4.     brr = arr        'arr数值值赋值给brr
  5.     For i = LBound(arr) To UBound(arr)   '从最小下标循环到最大下标
  6.         brr(i) = Split(arr(i), "/")(0)  '用“/”分割arr(i),第一个元素(下标为0)赋值给brr(i)
  7.     Next
  8. End Sub
复制代码

评分

参与人数 1 +20 金币 +20 收起 理由
cbg2008 + 20 + 20 平凡中显神奇,简单就是真理。

查看全部评分

回复

使用道具 举报

发表于 2013-1-30 13:25 | 显示全部楼层
filter函数不试试?
回复

使用道具 举报

发表于 2013-1-30 15:30 | 显示全部楼层
不用循环也可以办到的,以下代码供参考!
  1. Sub test1()
  2.   Dim Arr, Brr, Str$
  3.   Arr = Array("张三/1", "李四/2", "王五/3")
  4.    
  5.   With CreateObject("VBScript.regExp")
  6.     .Global = True
  7.     .Pattern = "\/\d+"
  8.     Str = .Replace(Join(Arr, ""), "@")
  9.     Brr = Split(Left(Str, Len(Str) - 1), "@")
  10.   End With
  11.   
  12. End Sub
复制代码

评分

参与人数 1 +6 收起 理由
hoogle + 6 神马都是浮云

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-3 09:29 , Processed in 0.620739 second(s), 17 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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