Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA将相同的字母替换为不同的值_Excel_Vba - Fatal编程技术网

Excel VBA将相同的字母替换为不同的值

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

我正在尝试编写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)

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循环的方法简单、干净、优雅。