精华内容
下载资源
问答
  • vba:根据一sheet内容批量替换整个工作簿,vba:根据一sheet内容批量替换整个工作簿,vba:根据一sheet内容批量替换整个工作簿,vba:根据一sheet内容批量替换整个工作簿,vba:根据一sheet内容批量替换整个工作...
  • word vba 如何查找出一个字符串中包括了多少指定子字符串? Sub at() aaaa = "ASDFSF。ASDF。SDF。234。'XCV。d" '第1种方法 bbb = Replace(aaaa, "。", "") cccc = Split(aaaa, "。") CS1 = Len(aaaa) - Len...

    word vba 如何查找出一个字符串中包括了多少个指定子字符串?

    Sub at()
    
    aaaa = "ASDFSF。ASDF。SDF。234。'XCV。d"
    
    '第1种方法
    bbb = Replace(aaaa, "。", "")
    cccc = Split(aaaa, "。")
    CS1 = Len(aaaa) - Len(bbb)
    
    
    '第2种方法
    CS2 = UBound(Split(aaaa, "。"))
    
    End Sub

    第1种方法,主要使用了replace函数和len函数。

    对比替换前后的字符串的长度差值,该差值即是。

     

    第2种方法:

    使用split函数后,用ubound函数求出得到数组的上标数值。

    该上标值即是。

    展开全文
  • VBA字符串的相关函数

    千次阅读 2019-05-24 15:53:56
    使用 len() 函数获得一个字符串长度 使用 left() mid() ,right() 截取字符串 使用 replace() 把字符串中的某个字符替换成其它字符 使用 split() 把字符串按某个字符分割 instr运算符 Like运算符 使用string()...

    目录

    trim()、lcase()、ucase()

    使用 len() 函数获得一个字符串长度

    使用 left()  mid() ,right() 截取字符串 

    使用 replace() 把字符串中的某个字符替换成其它字符

    使用 split() 把字符串按某个字符分割 

    instr运算符

    Like运算符

    使用string()进行填充


    trim()、lcase()、ucase()

    trim去掉字符串空格,lcase 小写、ucase 大写, 都是直接加字符串

    使用 len() 函数获得一个字符串长度

           my_string = "diandian didi"
         str_len = Len(my_string)    '结果为13包含空格

    使用 left()  mid() ,right() 截取字符串 

     left 是左截取, 从字符串左边开始,截取需要的字符个数

    right 则从右边开始,截取需要的字符个数

    mid 需要你输入字符串截取的开始位置和长度,一般可以配合instr使用

    使用 replace() 把字符串中的某个字符替换成其它字符

    Replace(目标字符串, 要替换字符, 替换成的字符)

    replace_result1 = Replace(range("B18"),"1","哈")
    replace_result2 = Replace(“as1df35w1fa352131sdgvasv”,"5","哈")

    使用 split() 把字符串按某个字符分割 

    把字符串按 an字符进行分割   

    Public Sub diandiandidi12()
        
         my_string = "startdiandiandidiend"
         
         split_char = "an"
         
         split_results = Split(my_string, split_char, -1) '-1返回所有分割字符串
         
         For Each result In split_results
          
            Debug.Print result
            
         Next
      
    End Sub

    运行如下:

    split_results = Split(my_string, split_char, -1)  这句中, 最后面的 -1 ,表示返回所有的分割结果, 这里看到,返回了三个分割的结果.

    这个分割函数执行后,返回的是一个数组, 也就是split_results是一个数组, 数组是一种数据结构, 你可以把这种结构想像成一排柜子,每个柜子都有一个序号, 从0开始进行标号,每个柜子里都可以放一些东西, 如 split_results(0) 为 startdi

     

    instr运算符

    返回寻找字符串在另一个字符串(搜索范围)的位置,格式:Instr(搜索起始位置,搜索范围需搜索的字符串,匹配模式)    ,   其中中间两个为必须项 ,匹配模式知道两个即可:

    0或省缺:区分大小写

    1:不区分大小写

    注意可以只有前三个参数,但是如果有规定了匹配模式则4个参数都要写完整,即不能只要后三个参数

    几个例子:
    instr(“ABCBD”,”B”)     ,    结果为2,在这里第1个参数省略了,那就是代表从头开始查找,第1个B出现在第2位上
    instr(3,”ABCBD”,”B”)    ,  结果为4,第1个参数3代表从第3位的C开始向后找,找到的第1个B是在第4位上
    instr(3,”ABCBD”,”b”,0)   ,  结果是0,第4个参数0代表区分大小写,原字符串中没有小写的b,所以结果是0。
    instr(3,”ABCBD”,”b”,1)   ,  结果是4,第4个参数1代表不区分大小写,从第3个字符往后找到的第1个符合条件的是大写的B,在第4位。

    利用instr这个特点我们常来判断原字符串中是否包括某特定字符,如果返回值是0就是不包含,是0以后的数就是包含,这个判定条件也经常用到。

    • 对比工作表函数find和search

    find和search都是工作表自带函数,要在VBA中用前面必须加application,其可以用来在工作表中查找单元格,application.find和application.search

    这两个函数也都可以在字符串中查找某个字符,其中find区分大小写,search不区分大小写

    application.Find(“M”,”AMAAM”,3)  ,   结果是5,在字符串“AMAAM”中从第3个字符向后查找“M”,返回找到的第一个M的位置
    application.search(“m”,”AMAAM”,3)  ,  结果也是5

    这两个函数看似和instr相同,但其是工作表函数,局限很大,对其中原字符串的长度是有限制的,用instr就可以了

    Like运算符

    用于对比字符串

    • 字符串1 like 字符串2                  

    Debug.Print "ABC" Like "ABc"         返回 False

    • 可以加通配符?代表一个字符,*代表一串字符 

    Debug.Print "BA" Like "?A"     返回true,此例判断BA是不是长度为2,且第二个字符为A,?代表一个字符

    Debug.Print "Excel精英培训" Like "*cel*"  返回tuue,此例判断字符串中是否包括cel,*代表一串字符

    若要比较的?或*并不是通配符,则用[ ]括起来,表示是要对比其本身

    Debug.Print "Q?B" Like "Q[?]B"  返回true,此例是要对比?本身,非通配

    Debug.Print "QaB" Like "Q?B"  返回true,通配符

    Debug.Print "QaB" Like "Q[?]B"  返回false,非通配符

    • 通配符#代表一个数字

    Debug.Print 456 Like "#5#"   返回true

    • [ ] 代表来选定对比范围

    [最小-最大最小2-最小3]        可以设定多个范围,用-连接

    Debug.Print "q" Like "[A-Za-z]"    返回true, 判断q是不是字母

    Debug.Print "H" Like "[A-GM-Z]"   返回False,判断H是不是在A-G,M-Z区间

    Debug.Print "H" Like "[A-MO-RU-V]"   返回true,H在这三个区间内

    Debug.Print 8 Like "[2-9]"   返回true,判断8是否在2-9之间

    Debug.Print 8 Like "[!2-9]"   返回False, 有 ! 取反

    Debug.Print "A" Like "[!C-Z]"   返回true,有!取反

    Debug.Print "M" Like "[ABCDEUE]"   返回False,列出区间值

    Debug.Print "M" Like "[!ABCDEUE]"   返回true,有!取反

    Debug.Print "AEREM" Like "[A-C]*[L-P]"  返回true,判断以A-C开头,以L-P结尾,中间以*为通配符

    Debug.Print "A334M" Like "[A-C]###[L-P]"  返回true

    Debug.Print "AC" Like "[ABCDEUE][ABCDEUE]"   返回true,判断同时含有A和C

    使用string()进行填充


    该函数返回重复的字符或字符串。其语法为:
        String(number,character)    ,两个参数均为必须参数,number指定所返回的字符串的长度;参数character指定字符代码或字符串表达式。
    使用String函数生成指定长度且只含单一字符的字符串。

      MyString = String(5, "*")   ,  返回 "*****"
      MyString = String(5, 42)    ,  返回 "*****"   没有“”括起来,十进制42的ASCII为*
      MyString = String(10, "ABC")    ,  返回 "AAAAAAAAAA",注意仅能填充单一字符
     

     

    展开全文
  • 12, excel vba 常用字符串处理函数

    万次阅读 多人点赞 2018-09-10 23:24:51
    处理excel数据 很时候要和字符串打交道, 比如 0,想要知道一个字符串的长度是多少? 1, 判断字符串是不是含有你需要的字符 2, 截取字符串的某一部分 3, 将字符串里的某个字符进行替换 4, 把字符串按某个字符...

    处理excel数据 很多时候要和字符串打交道, 比如

    0,想要知道一个字符串的长度是多少? 

    1, 判断字符串是不是含有你需要的字符

    2, 截取字符串的某一个部分

    3, 将字符串里的某个字符进行替换

    4, 把字符串按某个字符分割出来

    接下来一一介始这几个函数, 

     

     

    0,用 len() 函数获得一个字符串长度

    Public Sub  点点didi12()
        
         my_string = "diandian didi"
         str_len = Len(my_string)
         Debug.Print str_len
     

    End Sub
     

    运行一个,就可以在 立即窗口中看到长度值

     

     

     

    1, 使用 instr() 判断是不是含某个字符,如果有,就会返回该字符出现的位置

    Public Sub diandiandidi12()
        
         my_string = "diandian didi"
         my_exp = "an"
         
         Index = InStr(my_string, my_exp)
        
         If Index > 0 Then
            Debug.Print Index
            
         Else
            Debug.Print "sorry ,no find you exp char"
             
         End If
        
        

    End Sub
     

    如果字符串中有你需要的字符, 就会返回该字符第一次出现的位置, 如果没有,就说下sorry.运行结果如下, 你也可以复制该代码,改下 my_exp的值试试看

     

    2 ,使用 left()  mid() ,right() 截取字符串. 

     left是左截取, 从字符串左边开始,截取你需要的字符个数, right则从右边开始. mid的话,需要你输入字符串截取的位置和函数

    接下来给大家演示下这三个函数

    Public Sub diandiandidi12()
        
         my_string = "start diandian didi end"
         
         start_index = 3
         jiequ_len = 5
         
         left_char = Left(my_string, jiequ_len)
         Debug.Print "left 5 char: " & left_char
        
         
          right_char = Right(my_string, jiequ_len)
         
          Debug.Print "right  5 char: " & right_char
          
          
          mid_char = Mid(my_string, start_index, jiequ_len)
          Debug.Print "mid_char  5 char: " & mid_char

    End Sub
    运行结果如下:

     

    3 ,使用 replace() 把字符串中的某个字符替换成其它字符. 接下来把字符串中的an 替换成love

    Public Sub diandiandidi12()
        
         my_string = "start diandian didi end"
         
         find_char = "an"
         replace_char = "love"
         
         replace_result = Replace(my_string, find_char, replace_char)
         
         Debug.Print replace_result
         
        
    End Sub

    运行结果:

     

    4 ,使用 split() 把字符串按某个字符分割, 接下来把字符串按 an字符进行分割 

          Public Sub diandiandidi12()
        
         my_string = "startdiandiandidiend"
         
         split_char = "an"
         
         split_results = Split(my_string, split_char, -1)
         
         For Each result In split_results
          
            Debug.Print result
            
         Next
         
         
        
    End Sub

     

    运行后如下:

    split_results = Split(my_string, split_char, -1)  这句中, 最后面的 -1 ,表示返回所有的分割结果, 这里看到,返回了三个分割的结果.

    这个分割函数执行后,返回的是一个数组, 也就是split_results是一个数组, 数组是一种数据结构, 你可以把这种结构想像成一排柜子,每个柜子都有一个序号, 从0开始进行标号,每个柜子里都可以放一些东西, 在这里的话, 可以画草图给大家做个理解:

    split_results可以看成有三个柜子组成的数组, 如果你想得到里面的某个数据, 可能用 数组名(index) 的方式, 比如你想得到第一个数据  , 就可以用   split_results(0)    , 哦, 这里的序号是从0开始的. 0 到1到2...

    Public Sub diandiandidi12()
        
         my_string = "startdiandiandidiend"
         
         split_char = "an"
         
         split_results = Split(my_string, split_char, -1)
         
         Debug.Print "the first split result is : " & split_results(0)
         
         
        
    End Sub
     

     

     

    常用函数的话还有 trim()  ,可以把字符串前后的空字符串去掉, 如果你想了解更多函数,就需要靠你自己百度or 谷歌啦. 

    展开全文
  • VBA之正则表达式(13)-- 字符串变换

    千次阅读 2019-06-01 12:05:21
    实际应用场景中,字符串可能是完全不规则的,就需要使用VBA字符串函数逐个读取字符,并进行判断,提取数字之后,进行运算,然后再拼接字符串也可以实现,有些麻烦。 处理字符的任务,还是需要使用正则这神器。

    实例需求:数据保存在A列中,需要将其中数字部分(红色数字)乘以2(蓝色数字),其他部分不变。
    在这里插入图片描述
    图中示例数字出现在指定位置,并且数字位数是固定的,VBA处理起来就很简单。实际应用场景中,字符串可能是完全不规则的,就需要使用VBA的字符串函数逐个读取字符,并进行判断,提取数字之后,进行运算,然后再拼接字符串也可以实现,有些麻烦。

    处理字符的任务,还是需要使用正则这个神器。

    Sub RegExpDemo74_1()
        Dim strTxt As String
        Dim objRegEx As Object, objMatch As Object
        Dim objMh As Object, c As Range
        Set objRegEx = CreateObject("vbscript.regexp")
        objRegEx.Global = True
        objRegEx.Pattern = "(\d+)"
        For Each c In Range([A2], Cells(Rows.Count, "A").End(xlUp))
            strTxt = c.Value
            Set objMatch = objRegEx.Execute(strTxt)
            If objMatch.Count > 0 Then
                For Each objMh In objMatch
                    With objMh
                        strTxt = VBA.Left(strTxt, .FirstIndex) & VBA.Replace(strTxt, .Value, .Value * 2, .FirstIndex + 1)
                    End With
                Next
                c.Offset(0, 1) = strTxt
            End If
        Next
        Set objMh = Nothing
        Set objMatch = Nothing
        Set objRegEx = Nothing
    End Sub
    

    【代码解析】
    第7行代码指定正则模式,\d+代表一位或者多位数字。
    第14行代码将数字替换为两倍的数字,先用Left函数获取捕获组之前的字符串,然后Replace替换时指定起始字符位置,这样可以避免被多次替换。例如:QLJ100FJP200XGN,如果使用简单替换的话,第一次替换后结果为QLJ200FJP200XGN,第二次替换时两个数字将都被替换为400,结果变为QLJ400FJP400XGN,这显然是不对。

    这个代码似乎也没有什么太复杂的,正则表达式也很普通,接下来要展示才是正题,使用JS的正则实现这个需求。

    Sub RegExpDemo_JS()
        Dim objJS As Object
        Set objJS = CreateObject("MSScriptControl.ScriptControl")
        objJS.Language = "javascript"
        objJS.AddCode ("var r=/\d+/g;")
        For Each c In Range([A2], Cells(Rows.Count, "A").End(xlUp))
            objJS.AddCode ("var s = '" & c.Value & "';")
            c.Offset(0, 1) = objJS.Eval("s.replace(r,function(p){return p*2})")
        Next
        Set objJS = Nothing
    End Sub
    

    【代码解析】
    VBA调用JS的代码结构不再赘述了。
    第5行代码指定JS正则模式,注意在JS中正则表达式使用的是/.../g的形式。
    第7行代码REPLACE函数中符合正则模式的字符串,被替换为函数function(p)的返回值,在这个JS自定义函数中可以轻松的实现数字乘以2的效果。

    VBA调用JS的代码相对来说更简单些,但是需要大家具备JS的基本知识。VBA不支持这个回调函数的形式,既然是在Excel中实现,那么可以借助强大的公式来处理,和回调函数有与曲同工之处。

    Sub RegExpDemo74_2()
        Dim strTxt As String
        Dim objRegEx As Object
        Dim c As Range
        Set objRegEx = CreateObject("vbscript.regexp")
        objRegEx.Global = True
        objRegEx.Pattern = "(\d+)"
        For Each c In Range([A2], Cells(Rows.Count, "A").End(xlUp))
            strTxt = c.Value
            If objRegEx.test(strTxt) Then
                c.Offset(0, 1) = Application.Evaluate(Chr(34) & objRegEx.Replace(strTxt, """&$1*2&""") & Chr(34))
            End If
        Next
        Set objRegEx = Nothing
    End Sub
    

    【代码解析】
    第10行代码测试单元格中的字符串是否包含指定正则模式。
    第11行代码使用正则的REPLACE函数,将捕获组替换为$1*2,其中$1代表捕获组的字符。
    以第一个数据为例,正则替换后构建的公式为"QLJ"&100*2&"FJP"&110*2&"XGN",然后利用EVALUATE计算公式的结果,并写入指定单元格。与工作表中单元格公式不同,作为EVALUATE参数的公式可以没有等号。

    这个实现方法比第一个VBA解决方案更简洁。


    相关博文链接:
    VBA之正则表达式(12)-- 格式调整
    VBA之正则表达式(13)-- 字符串变换
    VBA之正则表达式(14)-- 提取指定位数的数字
    VBA之正则表达式(15)-- 提取数字求和
    VBA之正则表达式(16)-- 提取非重复值
    VBA之正则表达式(17)-- 提取多组数据(去除末尾字符)

    展开全文
  • 为了解决这痛苦,今天研究出了一组合使用 双重DoWhile循环 + 文本函数 组合消除字符串内部空格的小代码段供其他和我一样挣扎在一线的朋友们参考。代码比较6的请直接去最下方搬运拙作,我的注释写得及其详细,...
  • 实例需求: 待处理字符重:`5*s+s[面积s=222m2]+s*5[套s=333m2s]+s+s/s^2` 处理规则:将保留中括号中的字符,将其他部分字符中的s替换数字3 结果为:`5*3+3[面积s=222m2]+3*5[套s=333m2s]+3+3/3^2`
  • //测试的字符串 String regEx = "[' ']+"; // 一个或多个空格 java.util.regex.Pattern p = java.util.regex.Pattern.compile(regEx); java.util.regex.Matcher m = p.matcher(s); s = m.r...
  • 给定一个字符串,将字符串中连续的多个空格替换成一个空格。 如:"Hello World I come from china"----->"Hello World I come from china" 二,思路: 逐个字符扫描字符串,遇到连续多个空格时,只添加第一...
  • VBA字符串处理大全-from EH

    万次阅读 2017-06-22 09:54:45
    VBA字符串处理大全 转载出处 1 VBA中的字符串 2 VBA中处理字符串的函数  2.1 比较字符串  2.2 转换字符串  2.3 创建字符串  2.4 获取字符串的长度  2.5 格式化字符串  2.6 查找字符串  2.7 提取...
  • 批量修改替换多个Word文档中同一内容的方法
  • ' 字符的字符串 s, 请你将所有的 '?' 转换为若干小写字母,使最终的字 符串不包含任何 连续重复 的字符。 注意:你 不能 修改非 '?' 字符。 题目测试用例保证 除 '?' 字符 之外,不存在连续重复的字符。 在完成...
  • VBA如何判断字符串中有没有汉字

    千次阅读 2019-02-18 09:56:08
    VBA代码时, 我们不时会遇到需要判断字符串中有没有出现汉字的情况。那么怎样判断字符串中有没有汉字呢? 一简单的办法就是使用"like”函数。比如在下例中,我们需要将包含汉字的单元格全部清空,应该怎么...
  • 字符串中一个或者多个中文逗号、顿号,空格、英文逗号替换为一个英文逗号,然后将替换后的字符串转为数组 // 原始的字符串包含很多符号 var_remark = "1111,,,,2、、、3,,,,,, " // 这一步是将其他的符号转换为...
  • Excel中使用VBA替换字符

    千次阅读 2007-12-12 14:54:00
    这段代码是把Excel表格中-包含有TextBox1的字符替换为TextBox2的字符,范围是Excel表单最前的四行四列(A1到D4),方法为CommandButton1的点击事件,控件就是2TextBox和一CommandButton。Private Sub ...
  • 利用VBA可以轻松地将某文件夹下的所以WORD文档中的某个字符串全部替换为其他字符串。下面是具体操作步骤。  第一,首先将需要批量替换多个Word文档放在同一文件夹下面。  第二,新建一空白Word文档,右击空白...
  • VBA,字符串处理大全

    万次阅读 2008-02-04 12:23:00
    1 VBA中的字符串2 VBA中处理字符串的函数 2.1 比较字符串 2.2 转换字符串 2.3 创建字符串 2.4 获取字符串的长度 2.5 格式化字符串 2.6 查找字符串 2.7 提取字符/字符串 2.8 删除空格 2.9 返回字符代码 ...
  • [其他]-由于使用了替换,因此可以同时转换字符串中的多个中文数字。 ・替换中文数字时的问题如下:(1)没有零,(2)1,000和10,000的处理不同,(3)数字前没有数字(例如1000,112-> 1112) )。3分。 (第55-73行...
  • 需频繁批量替换文档的可以试试,可选定待替换文件夹,替换doc,xls文档,一次性替换多个字符串
  • VBA字符串函数

    万次阅读 2010-11-03 12:57:00
    替换字符串  2.15 反向字符串 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 VBA 中的字符串 VBA 不仅可以处理数字,也可以处理文本 ( 字符串 ) 。 VBA 提供了两类字符串: 一类为固定长度...
  • office word利用VBA给指定的多个字符字体批量标红加粗 场景说明:比如我有一个英文的word文档,无需要把不认识的单词标成红色并且加粗,如果一个一个替换太麻烦,我想到用vba来实现 ,例如我要把abandon、...
  • 需要更改配置文件的IP地址如 ...需要将192.168.7.60 替换未192.168.113.5 sed -i "s/"192.168.7.60"/"192.168.113.5"/g" `grep "192.168.7.60" -rl /etc` 转载于:https://www.cnblogs.com/mrwuzs/p/9804889.html...
  • VBA 字符串

    2015-01-13 23:59:00
    2.14 替换字符串 2.15 反向字符串 ==================================================== 1 VBA中的字符串 VBA不仅可以处理数字,也可以处理文本(字符串)。VBA提供了两类字符串: 一类为固定长度的字符串,...
  • 多个EXCEL怎么进行快速批量替换 如果我们有多个Excel文件,多个Sheet,需要...有一个在线免费工具,不需熟悉vba或者公式函数,地址:www.excelfb.com,点击:批量替换 中的 多个Excel文件批量替换 1、新建一个Exce...
  • Sub CommandButton1_Click() On Error Resume Next Dim fd As FileDialog, it Dim fso As Object Dim file_name As String Dim strFolder As String Dim wb As Workbook Dim i As Inte...
  • VBA中的字符串处理

    万次阅读 2011-11-16 11:43:18
    1 VBA中的字符串 2 VBA中处理字符串的函数  2.1 比较字符串  2.2 转换字符串  2.3 创建字符串  2.4 获取字符串的长度  2.5 格式化字符串  2.6 查找字符串  2.7 提取字符/字符串  2.8 删除空格  ...
  • VBA字符串处理函数2

    2012-03-02 10:10:34
    可使用InStr函数返回一字符串在另一字符串中的位置,因此,也可以使用该函数确定一个字符串中是否包含有另一个字符串。其语法为: InStr([Start,]string1,string2[,compare]) 其中,参数Start为可选参数,设置查找...
  • VBA字符串处理函数 (2)

    千次阅读 2012-11-08 02:29:25
    可使用InStr函数返回一字符串在另一字符串中的位置,因此,也可以使用该函数确定一个字符串中是否包含有另一个字符串。其语法为: InStr([Start,]string1,string2[,compare]) 其中,参数Start为可选参数,设置查找...
  • VBA提取汉字字母混在字符串

    千次阅读 2013-12-23 15:28:23
     我有一文本文件,里面的内容是以字节为长度分开的几字段,现在想把每字段读到EXCEL里面,结果发现EXCEL是以字符为单位处理字符串的。如下:  str1="张三 12345678" '第一行  str2="王老五 ...
  • VBA字符串处理

    千次阅读 2013-11-15 16:38:21
    1 VBA中的字符串 2 VBA中处理字符串的函数  2.1 比较字符串  2.2 转换字符串  2.3 创建字符串  2.4 获取字符串的长度  2.5 格式化字符串  2.6 查找字符串  2.7 提取字符/字符串  2.8 删除空格  2.9 返回...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,636
精华内容 654
关键字:

vba替换字符串多个内容