ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 12527|回复: 19

[求助] VBA如何一句话把字符串变为数组?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-6-23 17:33 | 显示全部楼层 |阅读模式
把数组变成字符串,只要一句话:replace(split(Arr)," ","")就把数组Arr变成了字符串。
   请问它的逆运算也能一句话处理吗?(不要循环)

TA的精华主题

TA的得分主题

发表于 2018-6-23 17:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
看不懂你写的啥。数组变成字符串是用join吧。还是要一维的才可以。。你用起了split..

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-6-23 18:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
把字符串变成数组还是用split啊

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-6-23 20:15 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
join。。。。。。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-6-23 21:33 | 显示全部楼层
所谓的一句代码,内部还是要循环的只是你看不见而已,嵌套的函数调用不见的会比一句一句的好。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-24 14:29 | 显示全部楼层
fxl447098457 发表于 2018-6-23 17:36
看不懂你写的啥。数组变成字符串是用join吧。还是要一维的才可以。。你用起了split..

比如字符串:“1234567”,中间无任何分隔符号,用split用不上啊。

TA的精华主题

TA的得分主题

发表于 2018-6-24 14:39 | 显示全部楼层
'可以啊,只是没有什么意思罢了

Option Explicit

Sub test()
  Dim s, t, i
  s = "1234567"
  Debug.Print s
  For i = 1 To Len(s)
    t = t & Mid(s, i, 1) & Space(1)
  Next
  s = Trim(t)
  Debug.Print s
  s = Split(s)
  Debug.Print UBound(s) + 1
  Debug.Print Join(s)
End Sub

评分

3

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-24 15:57 | 显示全部楼层
一把小刀闯天下 发表于 2018-6-24 14:39
'可以啊,只是没有什么意思罢了

Option Explicit

感谢老师的耐心指点。您说的方法我也知道,所以才在一楼发问,不要能循环。
原以为由数组到字符,一个函数搞定,其逆运算也可用一个函数来处理。
没想到不但没有,而且还不一定实用和高效。

非常感谢各位老师的指点~!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-27 05:44 | 显示全部楼层
一把小刀闯天下 发表于 2018-6-24 14:39
'可以啊,只是没有什么意思罢了

Option Explicit

我有另一种把字符串变为数组的方法,不仅适用于普通的字符串,即使是SimSun-ExtB字体,或是在程序代码框显示为问号的字体,也可:

  1. Function StringToArr(Str1)
  2.     '字符串变为数组
  3.     Dim I1%, A1$
  4.     For I1 = 1 To Len(Str1)
  5.         B1 = Mid(Str1, I1, 1)
  6.         If Asc(B1) = 63 And AscW(B1) > -20000 And (AscW(B1) < 0 And AscW(B1) < -6000) Then
  7.             A1 = A1 & " " & Mid(Str1, I1, 2)
  8.             I1 = I1 + 1
  9.         Else
  10.             A1 = A1 & " " & Mid(Str1, I1, 1)
  11.         End If
  12.     Next
  13.     StringToArr = Split(Mid(A1, 2), " ")
  14. End Function
复制代码

TA的精华主题

TA的得分主题

发表于 2018-6-27 09:19 | 显示全部楼层
一把小刀闯天下 发表于 2018-6-24 14:39
'可以啊,只是没有什么意思罢了

Option Explicit

一句代码把字符串转为数组:

  1. Sub test()
  2.     Dim b() As Byte ', s$, t$
  3.    
  4.     s = "123abc都可以" '任意文本字符串
  5.    
  6.     b = s '就这一句代码,可以直接把字符串转为unicode码的字节数组
  7.    
  8.    
  9.     '以下是从该字节数组中提取返回单个字符的方法
  10.     For i = 0 To UBound(b) Step 2 '遍历字节数组
  11.         t = ChrW(b(i) + b(i + 1) * CLng(256)) '返回单个字符
  12.         MsgBox t
  13.     Next
  14.    
  15. End Sub
复制代码

评分

3

查看全部评分

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

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-25 21:18 , Processed in 0.037712 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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