excel vba与字符串数组有关的三个函数

Split函数
返回一个下标从零开始的一维数组,它包含指定数目的子字符串。
Split(字符串[, 分隔符[, 要返回的子字符串数量[,比较方式]]])
后三项可选,默认:分隔符为空格,返回全部子字符串,用Option Compare语句中的设置值执行比较。
下面是将1-12转化为一月-十二月的自定义函数的例子。
Function Num2ch(ByVal n As Integer) As String
Dim Arr
Arr = Split(",一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月", ",")
Num2ch = Arr(n)
End Function
和Array函数相比,用Split的好处在于生成的数组是字符型的,写法上也更简洁。注意“一月”前的逗号,这是因为Split生成的数组下标是从0开始的,且不受Option Base句的影响。

Join函数
返回一个字符串,该字符串是通过连接某个数组中的多个子字符串而创建的。
Join(源数组[,分隔符])
默认:分隔符为空格
当将分隔符设为空串(””)时,会返回一个各数组元素会直接相连的字符串。
该函数是Split函数的反函数,它是将数组转化为字符串。Join和Split相配合,可用于扩充控件TAG属性的传递数量;在不定参数的传递时,可使代码看起来更简洁。
下面只是它们配合的示例,并不是这儿真有必要这样做:
Sub aMain()
Dim arr(1 To 2), s$
arr(1) = 1: arr(2) = 2
s = Join(arr, ",")
Debug.Print Myadd(s)
End Sub
Function Myadd(ByVal s As String)
Dim arr, x
arr = Split(s, ",")
For Each x In arr
Myadd = Myadd + Val(x)
Next x
End Function

Filter函数
返回一个下标从零开始的数组,该数组包含基于指定筛选条件的一个字符串数组的子集。
Filter(源数组,要搜索的字符串[,返回子串包含还是不包含要搜索字符串[,比较方式]])
如果在源数组中没有发现与要搜索的字符串相匹配的值,Filter返回一个空数组。如果源数组是Null或不是一个一维数组,则产生错误。
注意是“包含”要搜索的字符串,而不是“等于”要搜索的字符串。这意味着,如果一数组元素为字符串“AB”,用“A”、“B”、“AB”中的任何一个去搜索(上面第三个参数为默认值True),都会作为新的数组的元素被返回。但这并不影响你创造成“包含”等同于“等于”的条件,或者数据本身就符合这一要求的条件。在“包含”等同于“等于”的数组中,我们可以用下面的办法来判断一个字符串是否属于某个数组。
If UBound(Arr) = UBound(Filter(Arr, "要找的字符串", False)) Then '说明在数组Arr中找不到

(0)

相关推荐

  • 【20180911】- VBA中数组、集合和字典(三)——数组的常用函数

    大家好,我是中药党.上次我们一块学习了ExcelVBA中数组赋值的相关内容,涉及的知识点还是不少的,尤其是常用的使用Split函数取得一维数组.用Range进行整体赋值和比较少用的用Redim Pre ...

  • 字符串拆分、去重、合并,你会吗?

    你好,我是刘卓.欢迎来到我的公号,excel函数解析.今天来分享一个字符串拆分.去重.合并的案例. -01- 具体应用 下图A列是数据源,每个单元格都是一个字符串.每个字符串都是由一些近义词连成的,并 ...

  • 【Excel VBA】字典+数组实现快速汇总

    数据合并的要点有三个: 料号和机种号为统计的关键字段 未交数量求和 交期汇总,包含时间和数量示例代码Sub LoadData() Dim aData, aRes(), lst, iRow, iCol, ...

  • Excel VBA 8.47大数据的正向/反向筛选 数组都安排的妥妥的

    大数据的正向/反向筛选   数组都安排的妥妥的 点击上方"Excel和VBA",选择"置顶公众号" 致力于原创分享Excel的相关知识,源码,源文件打包提供 一 ...

  • Excel VBA 连接各种数据库(三) VBA连接SQL Server数据库

    本文主要涉及: VBA中的SQL Server环境配置 VBA连接SQL Server数据库 VBA读写SQL Server数据 如何安装SQL Client 系统环境: Windows 7 64bi ...

  • Excel VBA值在替换后保持字符串格式

    I am a total newbie in Excel VBA. I find a script that can help me map data from one worksheet to an ...

  • Excel VBA 数组知识点,数组能不能用好,就看这个你学会没有

    数组的合并和字符串拆分(Join & Split) 在Excel的数据处理时候,我们经常会遇到拆分和合并的操作,可能你在Excel中的基础操作都会,但是我们如果要操作数组呢?数组是在我们内存之 ...

  • Excel VBA之第三十课

    大家好,前面几节课我们学习了有关过程的基础知识,从本节课开始,我们开始具体介绍各个不同的过程.还记得在VBA中过程的类别吗?它们分别是:Sub子过程.Function函数过程.Property过程 前 ...

  • Excel VBA之第三十一课

    大家好,通过上次课程的学习,我们知道通常Sub子过程可以分为事件Sub子过程和通用Sub子过程,并讲解了事件Sub子过程,本节课我们来学习后者. 通用Sub子过程 在通用情况下,通用Sub子过程是由用 ...

  • Excel VBA之第三十二课

    上次课我们学习了Sub子过程的全部基础知识,今天我们来了解一下Function子过程,这样我们可以把这两种常见的子过程学习完毕.其实还有一种属性过程(Property过程),它存在于类模块中,这个等我 ...

  • Excel VBA之第三十三课

    从今天开始我们的Excel VBA课程将进入一个新的阶段,前面的课程可以说是VBA的所有基础性知识,通过前面的课程,我们也可以做出一些很实用的小程序,但不足以解决Excel所有问题.因为大多数情况下, ...