vb数组(vb的输入加减乘除的计算器)
大家好,今天我们继续讲解VBA代码解决方案第60讲:如何将文本内容转换为数组。之所以会出现这个问题,是因为我们在处理一些WORD的时候,经常会把它们复制到EXCEL中去填写一些资料,比如人名、设备名等,这些资料往往需要独占一个单元格的信息。如何将这些个人姓名和设备名称放入EXCEL?这就是把文本转换成数组再重新填充的问题。
1:在处理字符串时,可以使用Split函数根据指定的分隔符来分隔字符串,并将它们作为数组返回。
Split函数返回下标从零开始的一维数组,其中包含指定数量的子字符串。语法如下:
Split(expression[, delimiter[, limit[, compare]]])
parameter expression是必需的,它包含子字符串和分隔符的字符串表达式。
参数delimiter是必须的,用来标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。
参数限制是可选的。要返回的子字符串数。1表示返回所有子字符串。
参数比较是可选的。一个数值,指示区分子字符串时使用的比较方法。值如下:
vbusecompareoption1与选项比较语句中设置的值进行比较。
vbbinarycompane0执行二进制比较。
vbTextCompare 1执行文本比较。
VBDatabasecopy 2仅适用于Microsoft Access。基于数据库中的信息执行比较。
2:在我们完成数组转换后,我们经常需要水平或垂直填充。此时,工作表转置函数返回转置的单元格区域,即将一行单元格区域转置为一列单元格区域,反之亦然。语法如下:
TRANSPOSE(array)
参数数组是工作表中需要转置的数组或单元格区域。
有了以上两个知识点,我们来看看今天的学习内容。我们有一个单元格的文本内容,应该先转换成数组,然后填充到垂直单元格中。
代码如下:
Sub mynz_60() "60 文本转换为数组及Split函数
Arr = Split(Sheets("60").Cells(1, 1), " ")
Sheets("60").Cells(3, 1).Resize(UBound(Arr) + 1, 1) = Application.Transpose(Arr)
代码分析:
MySplitarr过程使用Split 函数将工作表Sheets("60")中A1单元格的姓名分别写入到工作表Sheets("60")中的A列单元格。
4行代码,先用UBound函数获取返回数组的最大下标,然后调整单元格区域。因为数组下标的默认下限默认为0,所以当使用Resize属性调整单元格区域时,参数RowSize需要在返回数组的最大下标上加1。
Resize用于调整指定区域的大小,并返回调整后的区域。
具体语法是: Range.Resize(RowSize,ColumnSize)
其中参数RowSize表示重置后的行数,ColumnSize表示重置后的列数。
两个参数都可以是可选的。如果省略参数,表示新区域的行数或列数将保持不变
。然后使用工作表转置函数将返回的数组转置,写入工作表的调整后单元格区域。
代码截图:
运行前窗口:单元格A1有一组文字:
运行后:
运行后,单元格A3向下处理上述文字。
今日内容回归:
1拆分的作用是什么?他是VBA函数吗?