我想使用替换功能仅替换MID
的确切位置,而不是单元格中的所有出现位置。
防爆。我想替换位置6(第一次出现)###
中的+++++###****###
而不是第二次出现。{/ p>
For Each c In .Columns(3).Cells
If c.Value = "" Then
Else
Do While Len(c.Value) < 20
c.Value = c.Value & " "
Loop
transNum = Mid(c.Value, 6, 3)
c.Value = Replace(c.Value, Mid(c.Value, 6, 3), "")
c.Value = "0" & transNum & c.Value
End If
y.Sheets(1).Range("E" & c.Row) = y.Sheets(1).Range("E" & c.Row) & c.Value
Next c
答案 0 :(得分:2)
Mid
既是陈述又是函数。使用语句版本来执行您想要的操作。 Mid
作为一个陈述和一个函数分别作为帮助。
C = "CatDog"
Mid(C, 2) = "Fr"
MsgBox C
中期声明
替换Variant(String)中指定数量的字符 带有来自另一个字符串的字符的变量。
语法
Mid(stringvar,start [,length])= string
Mid
语句语法包含以下部分:stringvar 必填。字符串变量的名称 修改。开始必需;变种(长)。人物的位置 stringvar 其中文本替换开始。
长度可选; 变种(长)。要替换的字符数。如果省略,全部 使用字符串。
字符串必填。替换部分的字符串表达式 stringvar。
<强>说明强>
替换的字符数始终小于或等于 stringvar中的字符数。
注意将
MidB
语句与字符串中包含的字节数据一起使用。在MidB
语句,start指定stringvar中的字节位置 替换开始的地方,length指定的字节数 取代
答案 1 :(得分:2)
我不确定它是否会直接起作用:
Mid(c.Value, 6, 3) = ""
<强>更新强>
您可以使用Replace count参数来限制替换次数:
c.Value = Replace(c.Value, Mid(c.Value, 6, 3), "", 1, 1)
对于空间填充,另一种选择是https://stackoverflow.com/a/29541815/1383168
Dim s20 As String * 20
s20 = c.Value
c.Value = s20
或类似
c.Value = c.Value & Space(20 - Len(c.Value))
答案 2 :(得分:0)
本节,
Do While Len(c.Value) < 20
c.Value = c.Value & " "
Loop
......可能会更好,
c = Left(c.Value2 & Space(20), 20)
Replace function有一个参数来设置最大替换次数。默认值为-1
(替换所有出现次数),但您可以轻松将其设置为单个替换。
c = Replace(c.Value2, transNum, vbNullString, Count:=1)