В ячейке A1 у меня есть строка "01000000 01xx0000 000000x1 000xx000", где x может быть 0 или 1 (обратите внимание, что он имеет пробел каждые 8 бит)
В ячейке A2 у меня есть строка 0101 (или 1111)
В ячейке A3 мне нужно заменить каждое «x» в строке A1 соответствующей цифрой в строке A2.
Следовательно, A3 содержит формулу: = Substitute_pair (A1, "x", A2)
Это значит:
- Первое вхождение «x» будет заменено на «0»
- Второе вхождение «x» будет заменено на «1»
- Третье вхождение «х» будет заменено на «0»
- Четвертое вхождение «x» будет заменено на «1»
The original string is "01000000 01xx0000 000000x1 000xx000"
The output/expected string is: "01000000 010x0000 00000011 00001000"
Ниже сценарий VBA работает в окне отладки VBA, но в приложении Excel ячейка A3 всегда возвращает 0.
Public Function Substitute_pair(str As String, old_str As String, new_str As String) As Byte
Dim str_origin As String
For i = 1 To Len(new_str)
tmp = Application.WorksheetFunction.Substitute(str, old_str, Mid(new_str, i, 1), 1)
Debug.Print "Replacing " & i & " occurence " & old_str & " with value " & Mid(new_str, i, 1)
str = tmp
Next i
End Function
Sub test()
Dim tmp As String
tmp = Substitute_pair("01000000 01xx0000 000000x1 000xx000", "x", "11111")
End Sub