найти и заменить значения массива, VBA - PullRequest
0 голосов
/ 01 сентября 2018

Предположим, у меня есть что-то вроде массива:

Dim Arr() As Variant
arr(0)= "Text<&>data"
arr(1)= "<&>recombining"
arr(2)= "that libraries<&>"
arr(3)= "<&>professional<&>user "

Я бы хотел найти внутри значений и найти все <&>, а затем заменить их на and.

Мои попытки .find были безуспешны. (

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Вы можете избежать циклического превращения массива в строку с помощью Join (), выполнить замену и, наконец, превратить его в массив с помощью Split () (не тестировалось):

Dim Arr As Variant
Arr = Array("Text<&>data", _
            "<&>recombining", _
            "that libraries<&>", _
            "<&>professional<&>user ")

Arr = Split(Replace$(Join(Arr, "|"), "<&>", "and"), "|")
0 голосов
/ 01 сентября 2018

Используйте Replace$. Не уверены, хотите ли вы добавить какие-либо пробелы? Я использую константы, поскольку у вас есть фиксированные границы, поэтому при циклическом массиве нет вызовов UBound и LBound. Также используйте типизированную функцию Replace$ как более эффективную.

Option Explicit
Public Sub test()
    Const START_POINT As Long = 0
    Const END_POINT As Long = 3
    Dim Arr(START_POINT To END_POINT) As Variant, i As Long
    Arr(0) = "Text<&>data"
    Arr(1) = "<&>recombining"
    Arr(2) = "that libraries<&>"
    Arr(3) = "<&>professional<&>user "

    For i = START_POINT To END_POINT
        Arr(i) = Replace$(Arr(i), "<&>", "and")
    Next
    For i = START_POINT To END_POINT
        Debug.Print Arr(i)
    Next
End Sub
...