试图更改单元格中特定字符的大小写

时间:2018-06-11 08:06:15

标签: excel vba excel-vba

我正在尝试更改单元格中特定字符的大小写,但我认为我错过了很小的内容。

EG。 该单元格具有价值' A for Apple和GORILLA穿着睡衣'

所以我试图改变个人的情况' A'小写' a'。

现在有3种情况:

  1. A可以在开始的单元格中。
  2. A可以在的单元格中。
  3. A可以在结束的单元格中。
  4. 对于中间人我有解决方案:

    Activecell.value = Replace(Activecell.value," A "," a ",vbTextCompare)
    

    但对于其他2,当我试图改变其他A也会改变时,例如:

    Activecell.value = Replace(Activecell.value,"A ","a ",vbTextCompare)
    

    这是为Apple和GORILLa提供答案' a穿着睡衣' 其中我试图让苹果和GORILLA穿着睡衣'

    我的代码是

    Do Until ActiveCell.Offset(0, -cnt).Value = "" And ActiveCell.Offset(0, -cnt1).Value = ""
    actc = ActiveCell.Value
    If actc = "" Then
    ActiveCell.Offset(1, 0).Select
    Else
    ActiveCell.Value = Replace(ActiveCell.Value, " m ", " m ", , , vbTextCompare)
    ActiveCell.Value = Replace(ActiveCell.Value, " cm ", " cm ", , , vbTextCompare)
    ActiveCell.Value = Replace(ActiveCell.Value, " dm ", " dm ", , , vbTextCompare)
    ActiveCell.Value = Replace(ActiveCell.Value, " mm ", " mm ", , , vbTextCompare)
    ActiveCell.Value = Replace(ActiveCell.Value, " mg ", " mg ", , , vbTextCompare)
    End If
    Loop
    

2 个答案:

答案 0 :(得分:0)

要仅替换开头的“A”,请特别检查。

If Left$(ActiveCell.Value, 2) = "A " Then 
    ActiveCell.Value = "a" & Right$(ActiveCell.Value, Len(ActiveCell.Value) - 1))
End If

因此最后是“A”(即使我不知道以“A”结尾的句子)

If Right$(ActiveCell.Value, 2) = " A" Then
    ActiveCell.Value = Left$(ActiveCell.Value, Len(ActiveCell.Value) - 1)) & "a"
End If

答案 1 :(得分:0)

VBA Replace函数将替换目标字符串中子字符串的 ALL 实例。

要指定字符串的开头和/或结尾,可以测试子字符串是否存在,如果存在,则使用不同的函数(我选择使用“替换工作表”函数)来仅替换该字符。请查看以下代码段以获取示例。

With ActiveCell
    If .Value Like "A*" Then .Value = WorksheetFunction.Replace(.Value, 1, 1, "a") 'Beginning only
    If .Value Like "*A" Then .Value = WorksheetFunction.Replace(.Value, Len(.Value), 1, "a") 'End only
End With

另一方面,如果你希望句子以 A 开始(或结束),暗示在之后(或之前)有一个空格 A ,然后更改Like模式以反映"A *"或“* A”

如果所有这些子字符串实际上都是单词,并且您希望在每个ActiveCell中替换它们,则可以沿着您正在执行的操作的格式构建多个循环,或者您可以使用{ {1}}。

例如,以下内容将替换您用小写字母表示的大写字母的所有实例,无论它们是在开头,中间还是结尾。

宏首先匹配Regular Expressions中不同单词的所有实例,然后遍历句子以替换它们。 (注意,我们必须在循环中从最后一个到第一个,因为每个单词的长度可能不相同)。

sPat