摘要:《VBA数组与字典方案》教程(10144533)是我推出的第三套教程,目前已经是第二版修订了。这套教程定位于中级,字典是VBA的精华,我要求学员必学。7.1.3.9教程和手册掌握后,可以解决大多数工作中遇到的实际问题。
《VBA数组与字典方案》教程(10144533)是我推出的第三套教程,目前已经是第二版修订了。这套教程定位于中级,字典是VBA的精华,我要求学员必学。7.1.3.9教程和手册掌握后,可以解决大多数工作中遇到的实际问题。
这套字典教程共两册,一共八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA字典与数组第二十一讲:文本转换为数组函数Split
【分享成果,随喜正能量】人生百味,情最浓,人生繁华,淡最真,人生一路,一步有一步的风景,一程有一程的感悟,不论时光如何流转,有些东西不会改变,那就是对美好的追求,对真情的渴望,给自己一份淡然,不困于情,不憾于心,无悔于生命,充实于生活,平和于心态,守一份心净,淡淡就好。。
大家好,我们今日继续讲解VBA数组与字典解决方案,今日的内容是第21讲:如何将文本内容转化为数组。这个问题的提出是因为我们在处理一些文字时往往在Word中,要拷贝到Excel中来填充一些资料,多是人名、设备名等,这些往往要求以独占一个单元格的信息,这时该如何把这些人名、设备名放到Excel中呢?这就是文本转化为数组再填充的问题。
在处理字符串时可以使用Split 函数将字符串按指定的分隔符分开并以数组返回,
Split 函数返回一个下标从零开始的一维数组,包含指定数目的子字符串
语法:Split(expression[, delimiter[, limit[, compare]]])
参数expression是必须的,包含子字符串和分隔符的字符串表达式。
参数delimiter是必须的,用来标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。
我们在完成数组的转换之后,往往要求横向或者纵向的填充,这时工作表Transpose函数返回转置单元格区域,即将一行单元格区域转置成一列单元格区域,反之亦然。
语法如下:TRANSPOSE(array)
参数array为需要进行转置的数组或工作表中的单元格区域。
有了上面两个知识点我们看我们今日的学习内容,例如,有一个单元格的文本内容,要把这些内容首先转化为数组,然后再填充到纵向的单元格中。
代码如下:
Sub MyNZsz_4 '第21讲
Dim arr As Variant
arr = Split(Sheets("21").Cells(1, 1), " ")
Sheets("21").Cells(3, 1).Resize(UBound(arr) + 1, 1) = Application.Transpose(arr)
End Sub
代码截图:
代码解析:
以上过程使用Split 函数将工作表Sheets("21")中A1单元格的姓名分别写入到工作表Sheets("20")中的A列单元格中。2)第4行代码,首先使用UBound函数取得返回数组的最大下标后调整单元格区域,因为数组下标的缺省下界默认为0,所以在使用Resize属性调整单元格区域时参数RowSize需要在返回数组的最大下标上加1。
3) 最后使用工作表Transpose函数将返回数组转置后写入到工作表调整后的单元格区域中。
运行前的窗口:在A1单元格有一组文本:
运行后,在A3单元格向下处理了上述的文本:今日内容回向:
1 Split 函数的作用是什么?他是VBA函数吗?
2 TRANSPOSE(array) 函数的作用是什么?
我多年的VBA实践经验,全部浓缩在以下教程中:
来源:VBA语言专业教育