Обработка 32-битной двоичной строки с ведущими нулями в приложении Excel - PullRequest
0 голосов
/ 18 сентября 2018

В ячейке 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...