Вы также можете использовать регулярное выражение в пользовательской функции, что означает, что вы можете выполнить в цикле над столбцом A, записывая в столбец B, или использовать в листе в столбце B. Вы можете передать список валют Интерес в качестве второго аргумента функции. Если в вашем списке присутствует более одной валюты, вы получите список через запятую.
Option Explicit
Public Sub Testing()
Dim tests(), i As Long, currencies()
currencies = Array("EUR", "GBP", "USD")
tests = Array("392898 818 AA 8812 1918281 000 EUR 100A", _
"31898 818 AA 88172 1281 000 GBP 1A", _
"12100098 618 AA 612 7281 000 USD 11100A")
For i = LBound(tests) To UBound(tests)
Debug.Print GetCurrency(tests(i), currencies)
Next
End Sub
Public Function GetCurrency(ByVal inputString As String, ByVal currencies As Variant) As String
Dim matches As Object, total As Long, arr(), i As Long
With CreateObject("VBScript.RegExp")
.Global = True
.MultiLine = True
.Pattern = "\b" & Join(currencies, Chr$(124)) & "\b"
If .TEST(inputString) Then
Set matches = .Execute(inputString): total = matches.Count - 1
ReDim arr(0 To total)
For i = 0 To total
arr(i) = matches(i)
Next
GetCurrency = Join(arr, Chr$(44))
Else
GetCurrency = vbNullString
End If
End With
End Function
Regex:
Попробуйте регулярное выражение здесь .
В основном для сопоставления используются валюты в стиле ИЛИ. Сопоставьте эту валюту или эту валюту и т. Д. Они сопоставляются тем, что являются отдельными словами, а не частью более длинной строки.
/
\ BEUR | GBP | USD \ б
/
г
1-ая альтернатива \ bEUR
\ b утверждение позиции на границе слова (^ \ w | \ w $ | \ W \ w | \ w \ W)
EUR соответствует буквам EUR буквально (с учетом регистра)
2-й вариант GBP
GBP соответствует буквам символов GBP (с учетом регистра)
3-й вариант USD \ b
USD соответствует буквам символов USD (с учетом регистра)
\ b утверждение позиции на границе слова (^ \ w | \ w $ | \ W \ w | \ w \ W)
В листе:
Вы можете хранить массив валют в одной ячейке и ссылаться на эту ячейку как на второй аргумент функции.