Excel VBA将相同的字母替换为不同的值
我正在尝试编写vba代码,该代码将查找字符串中的字母,并将其替换为特定的单元格值 问题是该字母在字符串中最多出现3次,每次都需要用不同的值替换 示例字符串我有x和x以及x 第一个x应替换为1,第二个x应替换为2,第三个x应替换为3 到目前为止我的代码Excel VBA将相同的字母替换为不同的值,excel,vba,Excel,Vba,我正在尝试编写vba代码,该代码将查找字符串中的字母,并将其替换为特定的单元格值 问题是该字母在字符串中最多出现3次,每次都需要用不同的值替换 示例字符串我有x和x以及x 第一个x应替换为1,第二个x应替换为2,第三个x应替换为3 到目前为止我的代码 for i = 0 to lim range("B" & lim +13).Value = replace (range("B" & lim +13), "x",range("K" & lim +13).Value) N
for i = 0 to lim
range("B" & lim +13).Value = replace (range("B" & lim +13), "x",range("K" & lim +13).Value)
Next i
上述代码的问题是,这将用相同的值替换每个x;我想订一份具体的更换单
理想情况下,第二次和第三次替换将来自我选择的不同单元格值。尝试拆分功能:
Sub XTest()
Dim s As String
s = "I have x and x and x"
Dim parts As Variant
parts = Split(s, "x")
Dim i As Long
For i = 0 To UBound(parts) - 1
parts(i) = parts(i) & i + 1
Next i
s = Join(parts, "")
Debug.Print s
End Sub
Dim s As String
Dim i As Long
s = "I have x and x and x"
Do While InStr(s, "x") > 0
i = i + 1
s = Replace(s, "x", i, , 1)
Loop
在数组中按顺序进行替换,然后对每个单元格用第一个数组值替换第一个x,用第二个数组值替换第二个x,依此类推
Dim newString As String, i As Long, j As Long, replacements As Variant
For i = 0 To lim
replacements = Array(1, 2, "some other value or cell", "4th replacement")
newString = Range("B" & i + 13).value
For j = 0 To UBound(replacements)
If InStr(newString, "x") = 0 Then Exit For
newString = Replace$(newString, "x", replacements(j), 1, 1)
Next
Range("B" & i + 13).value = newString
Next
我在lim的insetad范围内使用了I,因为lim在for循环中从不改变您可以使用替换功能:
Sub XTest()
Dim s As String
s = "I have x and x and x"
Dim parts As Variant
parts = Split(s, "x")
Dim i As Long
For i = 0 To UBound(parts) - 1
parts(i) = parts(i) & i + 1
Next i
s = Join(parts, "")
Debug.Print s
End Sub
Dim s As String
Dim i As Long
s = "I have x and x and x"
Do While InStr(s, "x") > 0
i = i + 1
s = Replace(s, "x", i, , 1)
Loop
所以你可以把它包装成一个函数
:
要像这样使用:
range("B" & lim +13).Value = Rep(range("B" & lim +13).Value, "x")
x实际采用什么形式?x将被数值取代。你能在工作表上发布一些示例的快照吗?很好的解决方案。你使用Do循环的方法简单、干净、优雅。