EXCEL VBA字符串替换

问题描述

因为模型结构中字段名更改,需要修正对应的EXCEL说明文档。
修正规则如下,将原来的连字符形式改成驼峰式。

原始字段修正后字段
session_idsessionId

打开VBA

这里是使用excel自带的VBA进行处理。
在excel里调出VBA的方法如下图所示。在某个表单上右击,并点击”查看代码“。

excel里调出VBA

EXCEl2010的VBA窗口打开如下

这里写图片描述

解决思路

将原始字段按照符号”_”进行split,将切分后的words,除第一个word之外,其他的word首字母改为大写,然后再将所有的words连接起来。

主要方法

Range(): 代表某一单元格、某一行、某一列、某一选定区域(该区域可包含一个或若干连续单元格区域),或者某一三维区域,如Range(D:D)可以代表D这一整列,Range(D1:D2)表示D列的第一和第二行,其中的数字还可以用变量来替代,具体方法见下面的示例代码。

Split(str[,delimiter[,count[,compare]]]): str是要拆分的字符串,delimiter是拆分依据的分隔符,count是分隔后的subStrings的最大个数,compare用来指定比较方式,有二进制比较方式和文本比较方式(未深究,不太懂)

Join(List[,delimiter]): 第一个参数List可以是一个Array,第二个参数delimiter是Array中每个字符串连接时的连接符,不填delimiter的话则默认为一个空格” “。

Left(Str, Len): 返回从左边开始,长度为Len的Str的子串。

Right(Str, Len): 返回从右边开始,长度为Len的Str的子串。

不过就我个人经验而言,不建议在代码中写Range(D:D)。我一开始用了Range(D:D),然后在调试时,于Range(D:D)的循环中调用了MsgBox,结果这个MsgBox始终无法结束。

如果想查询VBA中某个方法或是关键字的官方文档,可以google “MSDN VBA” + “方法名/关键字”

代码实现

//Sub: Declares the name, parameters, and code that define a Sub procedure
//这里的Sub的含义是“子过程”
Private Sub replace()

    Set Values = ActiveSheet.Range("D2:D102")//将EXCEL D列第2行到第102行的数据存储在Values中

    Dim num As Integer//这个num用来记录处理到D列的哪一行
    num = 2

    For Each Value In Values//遍历Values,D列的某行对应Value

        Words = Split(Value, "_")//将Value按照"_"进行拆分

        Dim result As String//用来存储Value处理后的结果(即用来记录sessionId)

        Dim count As Integer//用来标识是否是拆分后的第一个word
        result = ""
        count = 0

        For Each word In Words

            If (count = 0) Then//如果是第一个word,仅做里连接,而不大写首字母
                result = Join(Array(result, word), "")
                count = count + 1

            Else//否则,首字母大写
                //UCase(Left(word, 1))用来将首字母大写
                //Right(word, Len(word) - 1))用来获取除首字母外的剩余字符
                result = Join(Array(result, UCase(Left(word, 1)), Right(word, Len(word) - 1)), "")
                count = count + 1
            End If
        Next

        ActiveSheet.Range("D" & num) = result//将num行的值,设置为处理后的结果result

    Next
End Sub

Excel VBA(Visual Basic for Applications)中,字符串是非常常用的数据类型,用于存储和处理文本数据。VBA提供了多种函数和方法来处理字符串,使得字符串操作变得非常简单和高效。以下是一些常用的字符串操作方法和函数: ### 1. 字符串声明和赋值 在VBA中,可以使用`String`数据类型来声明字符串变量,并通过赋值语句给变量赋值。 ```vba Dim str As String str = "Hello, World!" ``` ### 2. 字符串连接 可以使用`&`运算符或`+`运算符来连接字符串。 ```vba Dim str1 As String, str2 As String, result As String str1 = "Hello" str2 = "World" result = str1 & " " & str2 ' result = "Hello World" ``` ### 3. 字符串长度 可以使用`Len`函数来获取字符串的长度。 ```vba Dim str As String str = "Hello" Dim length As Integer length = Len(str) ' length = 5 ``` ### 4. 字符串截取 可以使用`Mid`函数来截取字符串的某一部分。 ```vba Dim str As String str = "Hello, World!" Dim subStr As String subStr = Mid(str, 1, 5) ' subStr = "Hello" ``` ### 5. 字符串查找 可以使用`InStr`函数来查找子字符串字符串中的位置。 ```vba Dim str As String str = "Hello, World!" Dim position As Integer position = InStr(str, "World") ' position = 8 ``` ### 6. 字符串替换 可以使用`Replace`函数来替换字符串中的某一部分。 ```vba Dim str As String str = "Hello, World!" Dim newStr As String newStr = Replace(str, "World", "Excel") ' newStr = "Hello, Excel!" ``` ### 7. 字符串转换 可以使用`UCase`和`LCase`函数来转换字符串的大小写。 ```vba Dim str As String str = "Hello" Dim upperStr As String upperStr = UCase(str) ' upperStr = "HELLO" Dim lowerStr As String lowerStr = LCase(str) ' lowerStr = "hello" ``` 通过这些基本的字符串操作方法,VBA可以处理各种复杂的文本处理任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值