精华内容
下载资源
问答
  • 在VBA中,使用函数Split实现将一个字符串以指定分隔符拆分出多个字符串。 Split函数返回下标下界从零开始的一维数组,包含以指定分隔符拆分后形成的子字符串,其语法格式如下。 Split(expression[, delimiter[, ...

    按指定字符拆分字符串

    在VBA中,使用函数Split实现将一个字符串以指定分隔符拆分出多个字符串。

    Split函数返回下标下界从零开始的一维数组,包含以指定分隔符拆分后形成的子字符串,其语法格式如下。

    Split(expression[, delimiter[, limit[, compare]]])

    部分 描述
    expression 必需的。包含子字符串和分隔符的字符串表达式  。如果expression是一个长度为零的字符串(""),Split则返回一个空数组,即没有元素和数据的数组。
    delimiter 可选的。用于标识子字符串边界的字符串字符。如果忽略,则使用空格字符("  ")作为分隔符。如果delimiter是一个长度为零的字符串,则返回的数组仅包含一个元素,即完整的  expression字符串。
    limit 可选的。要返回的子字符串数,默认值–1表示返回所有的子字符串。
    compare 可选的。数字值,表示判别子字符串时使用的比较方式。关于其值,请参阅“设置值”部分。

    如下代码将以半角逗号分隔字符串,保存到数组中,并写入指定单元格区域。

    Sub SplitDemo()
         Dim astrNum() As String
         Dim strMyString As String
         strMyString = "EH001,EH002,EH003,EH004,EH005,EH006"
         astrNum() = Split(strMyString, ",")
         Range("a1").Resize(1, UBound(astrNum) + 1) = astrNum()
     End Sub

    运行结果如下。

    注:Split函数生成的数组下界始终为0;由于Split函数返回的数组是由字符串组成,所以数组不能声明为Variant类型,使用这种声明方式,将允许数组中的元素为任意数据类型,与Split函数所返回的数组类型不一致,将产生"类型不匹配"运行时错误。

    如需要将数组写入工作表第1列的纵向单元格区域中,第6行代码应改写为以下代码。

    Range("a1").Resize(UBound(astrNum) + 1, 1) = WorksheetFunction.Transpose(astrNum())

    其中,工作表函数Transpose将一维数组中的元素进行了行列转置。

    运行结果如下图。

    22.4 以指定分隔符连接字符串

    使用Join函数将多个字符串以指定的分隔符进行连接,其语法格式如下。

    Join(sourcearray[, delimiter])

    部分 描述
    sourcearray 必需的。包含被连接子字符串的一维数组。
    delimiter 可选的。在返回字符串中用于分隔子字符串的字符。如果忽略该项,则使用空格("  ")来分隔子字符串。如果delimiter是零长度字符串(""),则列表中的所有项目都连接在一起,中间没有分隔符。

    如下代码使用Join函数将数组中的元素以"-"为分隔符进行连接。

    Sub JoinDemo()
         Dim avntSource() As Variant
         Dim strMyStr  As String
         avntSource() = Array("EH001", "EH002", 65536, "EH003", Date, "连接")
         strMyStr = Join(avntSource(), "-")
         MsgBox strMyStr
     End Sub

    第2行代码声明Variant类型数组变量,由于Array函数的各元素可以为任意数据类型,所以在使用Array函数对数组进行赋值时,必须将数组的数据类型定义为Variant。

    使用单元格直接对数组进行赋值

    如果数组是由单元格引用而来的,此时需要对数组进行处理后,才能使用Join函数进行连接。

    示例代码如下

    Sub JoinDemo1()
         Dim avntSource() As Variant
         Dim avntMine() As Variant
         Dim MyStr As String
         avntSource() = Range("A1:A6")
         avntMine() = WorksheetFunction.Transpose(avntSource())
         MyStr = Join(avntMine(), "-")
         MsgBox MyStr
     End Sub

    第2行定义数组变量,通过单元格引用直接对数组进行赋值时,需要将数组定义为Variant类型。

    第6行代码使用Transpose函数将数组转置为一维数组。

    注:无论是将单行单列还是将多行多列的单元格区域数据加载到数组中,所得到的都是下标下界为1的二维数组。

     

    若需要将单行数据使用Join函数进行连接,应使用如下代码。

    Sub JoinDemo3()
         Dim avntSource() As Variant
         Dim avntTranspose() As Variant
         Dim avntMine() As Variant
         Dim strTemp As String
         avntSource() = Range("A1:F1").Value
         avntTranspose() = WorksheetFunction.Transpose(avntSource())
         avntMine() = WorksheetFunction.Transpose(avntTranspose())
         strTemp = Join(avntMine(), "-")
         MsgBox strTemp
     End Sub

    第7行代码将1行6列的二维数组转置为6行1列的二维数组。

    第8行将6行1列的二维数组转置为6个元素的一维数组。


    微信公众号:VBA168

    淘宝店铺地址:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-21233576391.4.1af0683dzrx3oU&id=584940166162

    关注微信公众号,每天及时接收Excel VBA经典示例讲解。

    淘宝店铺提供Excel定制服务。

    祝你工作和学习更轻松!

    展开全文
  • 整数据,一个单元格中全按分号分隔数据,网上有SUBSTITUTE()函数将原字符替换成CHAR(10)换行,然后粘贴成文本再复制到原表格中。本文档按函数拆分,略过复制粘贴过程,仅能处理较少的数据,以分号为例 1个分号: ...

    整数据,一个单元格中全按分号分隔数据,网上有SUBSTITUTE()函数将原字符替换成CHAR(10)换行符,然后粘贴成文本再复制到原表格中。本文档按函数拆分,略过复制粘贴过程,仅能处理较少的数据,以分号为例

    1个分号:
    =MID(原表!$B$29,1,FIND(";",原表!$B$29))
    =MID(原表!$B$29,FIND(";",原表!$B$29)+1,LEN(原表!$B$29)-FIND(";",原表!$B$29))

    2个分号:
    =MID(原表!$B$29,1,FIND(";",原表!$B$29))
    =MID(原表!$B$29,FIND(";",原表!$B$29)+1,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)-FIND(";",原表!$B$29))
    =MID(原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1,LEN(原表!$B$29)-FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1))

    3个分号:
    =MID(原表!$B$29,1,FIND(";",原表!$B$29))
    =MID(原表!$B$29,FIND(";",原表!$B$29)+1,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)-FIND(";",原表!$B$29))
    =MID(原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1)-FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1))
    =MID(原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1)+1,LEN(原表!$B$29)-FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1))

    4个分号:
    =MID(原表!$B$29,1,FIND(";",原表!$B$29))
    =MID(原表!$B$29,FIND(";",原表!$B$29)+1,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)-FIND(";",原表!$B$29))
    =MID(原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1)-FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1))
    =MID(原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1)+1,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1)+1)-FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1))
    =MID(原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1)+1)+1,LEN(原表!$B$29)-FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1)+1))

    5个分号:
    =MID(原表!$B$29,1,FIND(";",原表!$B$29))
    =MID(原表!$B$29,FIND(";",原表!$B$29)+1,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)-FIND(";",原表!$B$29))
    =MID(原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1)-FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1))
    =MID(原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1)+1,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1)+1)-FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1))
    =MID(原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1)+1)+1,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1)+1)+1)-FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1)+1))
    =MID(原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1)+1)+1)+1,LEN(原表!$B$29)-FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29,FIND(";",原表!$B$29)+1)+1)+1)+1))

    展开全文
  • Excel应用技巧:分列的妙用

    千次阅读 2017-12-23 00:00:00
    分隔符拆分这是分列的常规用法,即通过分隔符把一列拆分成多列。按固定宽度拆分按固定宽度在身份证号中提取生日,不用公式,快速搞定。按关键字拆分这个应用估计比较少人使用,汉字也可以当做分隔符运用。将数字...
        

    大家好!我是xyz,今天给大家分享excel中一个非常好用的功能:分列,它可以替代许多函数,用最快的速度达到我们想要的结果。

    分列的概念:将单列文本拆分成多列,拆分方式有两种:固定宽度或各种符号处。

    按分隔符拆分

    这是分列的常规用法,即通过分隔符把一列拆分成多列。

    0?wx_fmt=gif&wxfrom=5&wx_lazy=1


    按固定宽度拆分

    按固定宽度在身份证号中提取生日,不用公式,快速搞定。

    0?wx_fmt=gif&wxfrom=5&wx_lazy=1


    按关键字拆分

    这个应用估计比较少人使用,汉字也可以当做分隔符运用。

    0?wx_fmt=gif


    将数字转换成日期

    在excel中像20171201这样一串数字只是纯数字,不是日期哦,想批量转成日期,使用分列即可实现秒转。

    0?wx_fmt=gif



    展开全文
  • 自定义函数应可用于其他类型的文件,它基本上将字符串分解为由标准字符分隔的值(默认情况下为逗号,但可以更改),并忽略“字符串标识符”字符内的分隔符(默认情况下)这是一个非常简单的excel文件,您需要允许宏...
  • Excel百宝箱8.0

    2011-06-07 21:32:17
    【可还原的合并居中】:合并数据时可以保留所有数据,可以随心所欲定义分隔符。还可以随时取消合并,还原所有数据 【合并列中相同值】:对一列中相同且相邻的数据区域进行合并居中 【取消合并还原合并数据】:对一列...
  • Excel百宝箱

    2012-10-27 17:09:21
    【可还原的合并居中】:合并数据时可以保留所有数据,可以随心所欲定义分隔符。还可以随时取消合并,还原所有数据 【合并列中相同值】:对一列中相同且相邻的数据区域进行合并居中 【取消合并还原合并数据】:对一列...
  • • 使用查找函数拆分空格分隔的数据 • 实现EAN-13条码的校验位的算法 • 利用文本查找函数进行模糊查找 • 利用SEARCHB 函数分离全半角字符 • 利用FIND 函数提取连续数字 • 统计开奖号码中不重复数字个数 • 取得...
  • EXCEL百宝箱8.0终极版

    2011-11-05 16:48:02
    【可还原的合并居中】:合并数据时可以保留所有数据,可以随心所欲定义分隔符。还可以随时取消合并,还原所有数据 【合并列中相同值】:对一列中相同且相邻的数据区域进行合并居中 【取消合并还原合并数据】:对一列...
  • 【可还原的合并居中】:合并数据时可以保留所有数据,可以随心所欲定义分隔符。还可以随时取消合并,还原所有数据 【合并列中相同值】:对一列中相同且相邻的数据区域进行合并居中 【取消合并还原合并数据】:对...
  • Excel VBA实用技巧大全 附书源码

    热门讨论 2010-10-08 18:59:24
    01010获取路径分隔符 01011获取Excel主窗口标题栏的名称 01012获取Excel窗口的状态(大小) 01013获取Excel主窗口的高度和宽度 01014获取Excel主窗口的左边界位置和顶端位置 01015获取在Excel主窗口中一个窗口所能...
  • EXCEL集成工具箱V6.0

    2010-09-11 01:44:37
    【文本转EXCEL】 将文本文件按指定的分隔符号分隔一次性导入到EXCEL文档中。提供两种导入方式。 【EXCEL转文本】 将当前工作表中存储格的内容按指定分隔符号导出为TEXT文本,此为银行代发工资数据与邮局或银行传递...
  • Excel百宝箱9.0无限制破解版

    热门讨论 2012-02-03 19:05:29
    【可还原的合并居中】:合并数据时可以保留所有数据,可以随心所欲定义分隔符。还可以随时取消合并,还原所有数据 【合并列中相同值】:对一列中相同且相邻的数据区域进行合并居中 【取消合并还原合并数据】:对一列...
  • 【文本转EXCEL】 将文本文件按指定的分隔符号分隔一次性导入到EXCEL文档中。提供两种导入方式。 【EXCEL转文本】 将当前工作表中存储格的内容按指定分隔符号导出为TEXT文本,此为银行代发工资数据与邮局或银行传递...
  • 【文本转EXCEL】 将文本文件按指定的分隔符号分隔一次性导入到EXCEL文档中。提供两种导入方式。 【EXCEL转文本】 将当前工作表中存储格的内容按指定分隔符号导出为TEXT文本,此为银行代发工资数据与邮局或银行传递...
  • 【文本转EXCEL】 将文本文件按指定的分隔符号分隔一次性导入到EXCEL文档中。提供两种导入方式。 【EXCEL转文本】 将当前工作表中存储格的内容按指定分隔符号导出为TEXT文本,此为银行代发工资数据与邮局或银行传递...
  • power query批量整理txt资料信息

    千次阅读 2018-12-04 10:54:06
    今天聊一下power query如何批量整理txt资料。如下图,收集人员的信息。然后变成后一张excel图里的一维表效果。   首先利用Folder.Files函数获取数据文件夹所有txt的二进制数据。...“:”是作为分隔符拆分txt每...

    今天聊一下power query如何批量整理txt资料。如下图,收集人员的信息。然后变成后一张excel图里的一维表效果。

     

    首先利用Folder.Files函数获取数据文件夹所有txt的二进制数据。

     

    然后对二进制的数据list转化为数据表。利用Csv.Document函数。看下图。{"Name","Value"}用于命名转化为table的表的标题。“:”是作为分隔符拆分txt每一行。第四参数为多出列的处理,有3个枚举常量:ExtraValues.List,ExtraValues.Error,ExtraValues.Ignore,分别可以用0,1,2代替,意思就是如果源数据的列数超过指定列数,是返回列表还是报错还是忽略.主要用来应付异常情况。最后一个是encoding编码参数。936对应中文简体,GBK编码。

    这个时候我们需要对表进行横向的整理,想办法把第一列变为标题行。利用Record.FromTable函数将每个表变成记录。如下图:

    再利用Table.FromRecords函数将记录变为以记录字段名为标题,值为行的表,如下图。

     最后利用Table.Combine将多个表table元素构成list合并成一个表。

    公式解析就说完了。 最后就发一下完整的公式:

    let
        源 = Folder.Files("F:\Destop\【示例资料】-5条\【采集资料】-改")[Content],
        ls=List.Transform(源,each Table.FromRecords({Record.FromTable(Csv.Document(_,{"Name","Value"},":",null,936))})),
        res=Table.Combine(ls)
    in
        res

     

    展开全文
  • 根据各功能的特点,对子菜单作了18个分类, 而在函数向导对话框中也生成100个左右新的函数,用于扩展Excel的计算功能。且所有功能都通用于Excel 2002、2003和2007、2010。支持中英文显示与繁简体操作系统,支持Wista...
  • 【可还原的合并居中】:合并数据时可以保留所有数据,可以随心所欲定义分隔符。还可以随时取消合并,还原所有数据 【合并列中相同值】:对一列中相同且相邻的数据区域进行合并居中 【取消合并还原合并数据】:对一列...
  • word使用技巧大全

    热门讨论 2011-03-18 20:37:53
    九、分隔符 8 十、目录生成教程 8 十一、怎样使首页不显示页号呢? 9 十二、在word自动生成目录 9 十三、如何用制作出书籍目录效果 10 十四、Word中如何分节 10 1 Word中节的作用 10 2 分节符的使用 11 3分节后的...
  • 1939.2 理解表达式中的元素 1949.2.1 操作 1949.2.2 文字 1979.2.3 标识符 1989.2.4 函数 1989.2.5 固有的和命名常数 2059.3 创建Access表达式 2059.3.1 创建默认值的表达式 2069.3.2 使用表达式进行数据有效性...
  • 1939.2 理解表达式中的元素 1949.2.1 操作 1949.2.2 文字 1979.2.3 标识符 1989.2.4 函数 1989.2.5 固有的和命名常数 2059.3 创建Access表达式 2059.3.1 创建默认值的表达式 2069.3.2 使用表达式进行数据有效性...
  • 1939.2 理解表达式中的元素 1949.2.1 操作 1949.2.2 文字 1979.2.3 标识符 1989.2.4 函数 1989.2.5 固有的和命名常数 2059.3 创建Access表达式 2059.3.1 创建默认值的表达式 2069.3.2 使用表达式进行数据有效性...
  • 1939.2 理解表达式中的元素 1949.2.1 操作 1949.2.2 文字 1979.2.3 标识符 1989.2.4 函数 1989.2.5 固有的和命名常数 2059.3 创建Access表达式 2059.3.1 创建默认值的表达式 2069.3.2 使用表达式进行数据有效性...
  • 1939.2 理解表达式中的元素 1949.2.1 操作 1949.2.2 文字 1979.2.3 标识符 1989.2.4 函数 1989.2.5 固有的和命名常数 2059.3 创建Access表达式 2059.3.1 创建默认值的表达式 2069.3.2 使用表达式进行数据有效性...
  • 1939.2 理解表达式中的元素 1949.2.1 操作 1949.2.2 文字 1979.2.3 标识符 1989.2.4 函数 1989.2.5 固有的和命名常数 2059.3 创建Access表达式 2059.3.1 创建默认值的表达式 2069.3.2 使用表达式进行数据有效性...
  • 1939.2 理解表达式中的元素 1949.2.1 操作 1949.2.2 文字 1979.2.3 标识符 1989.2.4 函数 1989.2.5 固有的和命名常数 2059.3 创建Access表达式 2059.3.1 创建默认值的表达式 2069.3.2 使用表达式进行数据有效性...
  • 1939.2 理解表达式中的元素 1949.2.1 操作 1949.2.2 文字 1979.2.3 标识符 1989.2.4 函数 1989.2.5 固有的和命名常数 2059.3 创建Access表达式 2059.3.1 创建默认值的表达式 2069.3.2 使用表达式进行数据有效性...
  • 1939.2 理解表达式中的元素 1949.2.1 操作 1949.2.2 文字 1979.2.3 标识符 1989.2.4 函数 1989.2.5 固有的和命名常数 2059.3 创建Access表达式 2059.3.1 创建默认值的表达式 2069.3.2 使用表达式进行数据有效性...
  • 1939.2 理解表达式中的元素 1949.2.1 操作 1949.2.2 文字 1979.2.3 标识符 1989.2.4 函数 1989.2.5 固有的和命名常数 2059.3 创建Access表达式 2059.3.1 创建默认值的表达式 2069.3.2 使用表达式进行数据有效性...

空空如也

空空如也

1 2 3
收藏数 54
精华内容 21
关键字:

excel分隔符拆分函数