精华内容
下载资源
问答
  • 本文将就讲一下VBA中快速连接字符串的集中方法。 我们使用一个简单的示例,提取1-10中的偶数并输出结果,判断偶数非常简单,程序主框架如下。 Sub Demo() Dim i As Integer, msg As String For i = 1 To 10 If ...

    在前几天分享的文章【快速对比数据】中,使用了如下代码,有小朋友问为什么要再第20行代码中使用Trim函数呢?是否可以在构建字符串时直接处理呢?本文将就讲一下VBA中快速连接字符串的几种方法。
    在这里插入图片描述
    我们使用一个简单的示例,提取1-10中的偶数并输出结果,判断偶数非常简单,程序主框架如下。

    Sub Demo()
        Dim i As Integer, msg As String
        For i = 1 To 10
            If Int(i / 2) = (i / 2) Then  '构建字符串msg
        Next
        Debug.Print "偶数:" & msg
    End Sub
    

    假设以空格分隔结果。

    • 方法1:最经典的教科书式的用法为:
    Sub Demo1()
        Dim i As Integer, msg As String
        For i = 1 To 10
            If Int(i / 2) = (i / 2) Then
                If Len(msg) = 0 Then
                    msg = CStr(i)
                Else
                    msg = msg & " " & CStr(i)
                End If
            End If
        Next
        Debug.Print "偶数:" & msg
    End Sub
    

    【代码解析】
    第5行代码判断msg变量是否为空,如果为空则说明是第一个偶数,那么第6行代码直接赋值,否则第8行代码在msg变量之后追加空格和偶数。

    • 方法2:输出时取巧
      对于追求极致,希望代码行数近可能的少的开发者来说,则会采用如下代码,代码行数精简了近一半。
    Sub Demo2()
        Dim i As Integer, msg As String
        For i = 1 To 10
            If Int(i / 2) = (i / 2) Then msg = msg & " " & CStr(i)
        Next
        Debug.Print "偶数:" & Trim(msg)
    End Sub
    

    【代码解析】
    第4行代码构建输出结果时,不再对第一个偶数做特殊处理,这样产生的字符串为" 2 4 6 8 10",第一个数字之前会有一个多余的前导空格,幸运的是VBA中提供了相应函数去除空格,第6行代码中使用Trim函数将可以实现完美输出了,效果和方法1完全相同。

    • 方法3:灵活万能法
      看到这里有的读者可能会有疑问,如果分隔符不是空格,怎么办?VBA中没有去除其他前导字符的函数,再写个自定义函数,有些南辕北辙了吧!
      其实这样的场景实现起来也很简单,例如分隔符改为逗号。
    Sub Demo3()
        Dim i As Integer, msg As String
        For i = 1 To 10
            If Int(i / 2) = (i / 2) Then msg = msg & "," & CStr(i)
        Next
        Debug.Print "偶数:" & Mid(msg, 2)
    End Sub
    

    【代码解析】
    与方法2相比,区别仅仅在于第6行代码,使用Mid函数去除第一个字符(多余的逗号),同样简洁。

    • 方法4:通用扩展法
      有时开发代码时分隔符个数并不确定,那么方法3去除多余的前导字符时,可能就会出问题,只要做一下简单扩建,就可以完美适配这样的场景。
    Sub Demo4()
        Dim i As Integer, msg As String
        Const STR_DELI = "||"
        For i = 1 To 10
            If Int(i / 2) = (i / 2) Then msg = msg & STR_DELI & CStr(i)
        Next
        Debug.Print "偶数:" & Mid(msg, Len(STR_DELI)+1)
    End Sub
    

    【代码解析】
    第3行代码定义分隔符常量,用于模拟任意长度的分隔符(单个或多个字符)。
    第7行代码输出时Mid函数的第二个参数使用Len函数获取分隔符的长度,从其之后一位开始截取字符串,就可以得到正确的结果。


    同一个问题,解决方法有多种,条条大路通罗马。

    展开全文
  • 下载源文件 : http://lwl0606.cmszs.com/archives/excel-vba-string-function.html在Excel 里面 如果要合并字符串可以用函数 =CONCATENATE(A4,B4,C4) 当然也可以 =A4 & B4 & C4 下面的函数可以实现分组...


    下载源文件 : http://lwl0606.cmszs.com/archives/excel-vba-string-function.html

    在Excel 里面 如果要合并字符串可以用函数 =CONCATENATE(A4,B4,C4)

    当然也可以 =A4 & B4 & C4

    下面的函数可以实现分组合并字符串

    第一个参数是分组的列,第二个是分组的内容,按照那个分组,第三个参数是同一分组内的排序列,第四个是要合并字符串的列

    Function GT(GC As Range, G, SC As Range, VC As Range)
    Dim vResult
    Dim I As Integer
    Dim J As Integer
    Dim s As Integer
    = 0
    Dim t As Integer
    = 1
    Dim a() As Integer
    Dim b() As String

    For I = 1 To GC.Rows.Count
    If GC.Item(I, 1= G Then
      s 
    = s + 1
    End If
    Next I

    ReDim a(s) As Integer
    ReDim b(s) As String

    For I = 1 To GC.Rows.Count
    If GC.Item(I, 1= G Then
      a(t) 
    = SC.cells(I, 1)
      b(t) 
    = VC.cells(I, 1)
      t 
    = t + 1
    End If
    Next I

     
    For I = 1 To s
            
    For J = I + 1 To s
                
    If a(I) > a(J) Then
                    temp 
    = b(J)
                    b(J) 
    = b(I)
                    b(I) 
    = temp
                    
                    temp 
    = a(J)
                    a(J) 
    = a(I)
                    a(I) 
    = temp
                
    End If
            
    Next J
     
    Next I

    For I = 1 To s
     vResult 
    = vResult & b(I) & ";"
    MsgBox a(0)
     
    Next I
     
    GT 
    = vResult
    End Function

     

    =GT(A2:A10,A4,B2:B10,C2:C10)  得到结果aaaa;cccc;bbbb;

    R 1       tr
    T 1       tt
    A 1       aaaa
    A 9       bbbb
    A 3       cccc
    b 1       dddd
    c  1       eee
    d 1       xxx
    d 2       yyy
    下载源文件 : http://lwl0606.cmszs.com/archives/excel-vba-string-function.html

    转载于:https://www.cnblogs.com/lwl0606/archive/2008/12/10/1351586.html

    展开全文
  • 前景提要(文末提供源码下载)word的邮件合并功能,相信大家都非常的熟悉了,一些固定模板的批量打印功能都会用到这样的操作,但是很多时候我们的数据是Excel中的,那么我们是否能够在Excel中实现类似于word中这种邮件...

    前景提要(文末提供源码下载)

    word的邮件合并功能,相信大家都非常的熟悉了,一些固定模板的批量打印功能都会用到这样的操作,但是很多时候我们的数据是Excel中的,那么我们是否能够在Excel中实现类似于word中这种邮件合并的功能呢?

    代码区

    其实这样的话,就有点类似于我们之前学过的Excel的数据汇总的逆推,数据的拆分了,按照计划,我们很快就会接触到更多类型的数据的拆分了,我们这里就先热个场,提前接触下数据的拆分,之所以在这里说数据拆分,主要还是因为他的操作也类似于在多个工作表中同时进行数据填充,和我们之前的内容又有一点关系,所以正好有承上启下的作用

    来看看我们的场景

    现在我们手上的这个工作表里面有两个表,一个就是成绩总表,一个就是模板,类似于我们通知的模板,

    a9199cb095a9df31ea2c6d2b0343f271.png
    ce6f3dd364f15a5dafec4da8113a281e.png

    我们现在需要将总成绩的表中所有的同学的成绩按照模板中指定的样式进行填充,并且形成一个人一个工作表的样式来进行打印,并交给学生查看。如果手动复制粘贴,这个工作量就非常的大了,因为不仅仅是复制粘贴,还要找到正确的位置,所以这里我们需要使用VBA来帮助我们实现这样的功能。

    Sub sssss()Dim rng As Range, sth As Worksheet, sthn As WorksheetSet rng = Application.InputBox("请选择数据源,不含表头
    展开全文
  • 大家好,我们今日继续讲解VBA代码解决方案的第63讲内容:数组的合并字符串拆分(Join & Split),及筛选的应用一Join函数:返回一个字符串,该字符串是通过连接某个数组中的多个子字符串而创建的,语法如下:...

    5a2d292aecf1c5e1e4c6dd99fa28a640.png

    大家好,我们今日继续讲解VBA代码解决方案的第63讲内容:数组的合并与字符串拆分(Join & Split),及筛选的应用

    一Join函数:返回一个字符串,该字符串是通过连接某个数组中的多个子字符串而创建的,语法如下:

    Join(sourcearray[, delimiter])

    参数sourcearray是必需的,包含被连接子字符串的一维数组。

    参数delimiter是可选的,在返回字符串中用于分隔子字符串的字符,如果忽略则使用空格(" ")来分隔子字符串。则列表中的所有项目都连接在一起,中间没有分隔符。

    二:split函数:这个函数的讲解在之前已经讲过,不再多说了。

    多个字符的合并和字符串按规律的拆分是经常遇到的,如:A-REW-E-RWC-2-RWC 按分隔符“-”拆分成6个字符放在一个数组中;有一组数array(23,45,7,1,76)想用分隔符-连接成一个字符串

    上面两种情况的实现即用到:split(字符串,"分隔符") 拆分字符串。join(数组,"分隔符") 用分隔连接数组的每个元成一个字符串

    实例一:

    Sub Myst()

    Dim arr, myst As String

    myst = "A-REW-E-RWC-2-RWC"

    arr = Split(myst, "-")

    MsgBox arr(0) '显示数组的第一个数(分隔后的数组最小下标为0,不是1),显示结果为A

    MsgBox Join(arr, ",") '再用","把数组的每个值连接成一个字符串,结果为"A,REW,E,RWC,2,RWC"

    End Sub

    值得注意的是:split和join只能对一维数组进行操作,

    实例二:

    Sub MyJoin()

    Dim strJoin As String

    strJoin = Join(Array("a", "b", "c"), ",")

    MsgBox strJoin

    End Sub

    三:Filter函数:返回一个下标从零开始的数组,该数组包含基于指定筛选条件的一个字符串数组的子集。filter()是数组的一个常用操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。

    语法:Filter(sourcesrray, match[, include[, compare]])

    sourcesrray必须的。要执行搜索的一维字符串数组。

    match必须的。要搜索的字符串。

    include可选的。Boolean值,表示返回子串包含还是不包含match字符串。如果include是True,Filter返回的是包含match子字符串的数组子集。如果include是False,Filter返回的是不包含match子字符串的数组子集。

    compare可选的。数字值,表示所使用的字符串比较类型。

    Filter函数实现数组筛选:数组的筛选就是根据一定的条件,从数组中筛选符合条件的值,组成一个新的数组,实现数组筛选的Filter函数用法:Filter(数组, 筛选的字符, 是否包含)

    实例三:

    Sub MyFD() '实例三

    arr = Array("ABC", "A", "D", "CA", "ER")

    arr1 = VBA.Filter(arr, "A", True)

    arr2 = VBA.Filter(arr, "A", False)

    MsgBox Join(arr2, ",")

    End Sub

    遗憾的是函数只能进行模糊筛选,不能精确匹配。

    实例四:查找数组的差集

    Sub Filter1()

    Dim varArr1 As Variant

    Dim varArr2 As Variant

    Dim i As Integer

    varArr2 = Array(1021, 1023, 1025)

    varArr1 = Array(1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028)

    For i = 0 To UBound(varArr2)

    varArr1 = VBA.Filter(varArr1, varArr2(i), False)

    Next i

    MsgBox Join(varArr1)

    End Sub

    注意,filter函数在此是模糊查找,下面代码将无法返回我们想要的值.

    代码截图:

    5a9a72265de91b1aafff426af983a9fc.png

    运行结果一:

    97277693d67fe4d8087a17d1c68a75e6.png

    运行结果二:

    c653daec99d4c2e85b2ddeb98c69659d.png

    运行结果三:

    f707f23353b92453702a01438c9c8ff7.png

    运行结果四:

    4a62904d8a1130100d6fe0e23dbdd371.png

    今日内容回向:

    1 VBA数组的三个函数是什么?

    2 数组筛选时两个方案是什么?

    欢迎大家到我的自媒体平台沟通交流:个人微信号“NZ9668”、头条号“VBA专家”、百家号“VBA与GO语言”、微信公众号“NZ_9668”、社群“VBA学习交流群”。

    这一系列文章是根据我多年的工作经验编写的,也是一直在利用的工具,非常方便好用。现在分享出来,希望能对同样在职场打拼的朋友有些许的帮助,使你的工作更加高效、流畅。朋友们有问题请随时提出来,我们一起探讨学习。对数据分析有需要的公司、组织或个人可以直接联系我,及时为你提供专业的定制技术支持。

    工作不是一切。工作是每个人安身立命、成长发展的基础。但你要知道工作是永远也做不完的,时间会抹去很多问题。多关注自己、家人和朋友,这些才是我们生活中更为重要的东西。

    展开全文
  • '第1参数为要合并字符的单元格区域或字符串数组, '第2参数为可选参数:字符分隔符,将被添加到不为空的字符串末尾,忽略时缺省为“,” p = "" For Each cel In rng If cel <> "" Then p = p & fg...
  • 2、字符串处理,将字符串按\切片成数组,相当于从右向左删除文件名,获得文件所在文件夹路径,且最后保留"\"(至于这里为什么不直接选择文件夹而是选择文件,当时脑抽了/./) 3、忽略程序报错,核实是否存在某一个...
  • 判断字符串长度 len(单个汉字算一个字符) lenb(单个汉字算两个字符) 判断是否数字 VBA.IsNumeric InputBox区分取消和输入空值 Application.InputBox(“Input a year please”, “year”, Year(Date), , , , , 1)...
  • 合并文本的函数:代码解析:'↓合并字符串'Rng:单元格区域 ,JoinStr:用什么符号连接文本'WorksheetFunction.Transpose工作表函数将二维数组转一维'VBA.Join 用于合并字符串(合并的一维数组,用什么连接)'FunJoin ...
  • Excel开发VBA学习

    2016-04-25 17:28:00
    1.合并字符串A1&A22.拆分字符串LEFT(A2,SEARCH("-",A2)-1)3.下拉选项Data->Data validation->List 1.在工具栏上显示开发选项 2.新建个Module就可以在几个sheet里共享变量 Public ...
  • VBA常用技巧

    2014-12-21 16:39:28
    技巧6 替换单元格内字符串 12 技巧7 复制单元格区域 12 技巧8 仅复制数值到另一区域 12 8-1 使用选择性粘贴 12 8-2 直接赋值的方法 12 技巧9 单元格自动进入编辑状态 12 技巧10 禁用单元格拖放功能 12 技巧11 单元格...
  • EXCEL VBA常用技巧

    2010-02-09 22:28:27
    技巧6 替换单元格内字符串 19 技巧7 复制单元格区域 20 技巧8 仅复制数值到另一区域 23 8-1 使用选择性粘贴 23 8-2 直接赋值的方法 24 技巧9 单元格自动进入编辑状态 25 技巧10 禁用单元格拖放功能 25 技巧11 单元格...
  • 30.查找一字符串(withinstr)在另一字符串中(findstr1)中某一次(startnum)出现时的位置,返回零表示没找到。 31.增加文件路径最后的“\”符号 32.计算所得税 33.从工作表第一行的标题文字以数字形式返回所在列号 34....
  • VBA编程技巧大全

    2013-08-05 09:03:19
    技巧6 替换单元格内字符串 26 技巧7 复制单元格区域 27 技巧8 仅复制数值到另一区域 30 8-1 使用选择性粘贴 30 8-2 直接赋值的方法 31 技巧9 单元格自动进入编辑状态 32 技巧10 禁用单元格拖放功能 32 技巧11 单元格...
  • 前面章节中,我们讲过了将一维数组中各元素合并在一起的函数 Join,把字符串拆分成一维数组的函数 Split,今天我们来分享如何从一个字符串数组中筛选出符合指定条件的子集,这将用到一个新的函数Filter。在讲Join...
  • 函数作用:查找一字符串(withinstr)在另一字符串中(findstr1)中某一次(startnum)出现时的位置,返回零表示没找到。..................................................57 '31.函数作用:增加文件路径最后的“\”符号....
  • 学习Excel技术,关注微信公众号:excelperfect昨天在发表文章《VBA实用小程序45:提取两个字符串之间的文件》后,有位朋友留言,想要使用程序合并两个PDF文件。不由得让我想起在《Python编程快速上手——让繁锁工作...
  • 今天和大家要说的是VBA数组的应用,上篇文章我们说的是数组的基础知识点,有不明白的小...数组的合并字符串拆分(Join & Split)在Excel的数据处理时候,我们经常会遇到拆分和合并的操作,可能你在Excel中的基础...
  • 今天和大家要说的是VBA数组的应用,上篇...上篇文章回顾:Excel VBA 数组基础知识,初学者不可不学的关键知识数组的合并字符串拆分(Join & Split)在Excel的数据处理时候,我们经常会遇到拆分和合并的操作,可...
  • 04142设置单元格字符串中一部分字符的格式(其他字体属性) 04143设置单元格的下画线 04144设置单元格的字体属性(字体、字号、加粗、斜体、颜色等) 04145设置单元格区域的外部边框 04146设置单元格区域的全部边框 ...
  • 学习Excel技术,关注微信公众号:excelperfect昨天在发表文章《VBA实用小程序45:提取两个字符串之间的文件》后,有位朋友留言,想要使用程序合并两个PDF文件。不由得让我想起在《Python编程快速上手——让繁锁工作...
  • 我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能...通过下面的案例,我们来学习下在VBA中怎么进行合并字符串。案例如下:如上图,A到D列是数据区域,要求通过输入关键字在数据区域...
  • 我的目标:让中国的大学生走出校门的那一刻就已经具备这些Office技能,让...通过下面的案例,我们来学习下在VBA中怎么进行合并字符串。案例:如上图,A到D列是数据区域,要在这些数据区域通过输入关键字就能提取相...
  • Excel小助手

    2013-10-11 11:55:37
    Excel小助手,作者:雪山飞狐 有字符串提取功能、合并工作表、拆分工作、电脑开关机时间。生成Excel2003经典菜单。常用VBA代码一键录入功能。

空空如也

空空如也

1 2 3 4 5
收藏数 83
精华内容 33
关键字:

vba合并字符串