Попробуйте следующий сегмент кода:
Dim modelName As String: modelName = "P10, 12,9 cm (5.1""), 4 GB, 64 GB, 20 MP"
Dim data() As String: data = Split(modelName, ",")
Dim firstPart As String
Dim secondPart As String
Dim thirdPart As String
firstPart = Trim(data(0))
secondPart = Trim(Replace(Mid(data(2), InStr(data(2), "(") + 1), ")", ""))
thirdPart = Trim(data(4))
MsgBox firstPart & " " & secondPart & " " & thirdPart
Вы должны быть очень осторожны с подстрокой данных разделителя.Например, если ваш основной текст P10, 12 cm (5.1"), 4 GB, 64 GB, 20 MP
, код больше не работает.Предполагая, что у вас всегда есть запятая и пробел между элементами данных, которые вы могли бы написать вместо:
Dim modelName As String: modelName = "P10, 12,9 cm (5.1""), 4 GB, 64 GB, 20 MP"
Dim data() As String: data = Split(modelName, ", ")
Dim firstPart As String
Dim secondPart As String
Dim thirdPart As String
firstPart = Trim(data(0))
secondPart = Trim(Replace(Mid(data(1), InStr(data(1), "(") + 1), ")", ""))
thirdPart = Trim(data(3))
MsgBox firstPart & " " & secondPart & " " & thirdPart
И это всегда будет работать.
Если элемент 4 MB
не всегда присутствует, выполнитеследующее:
Dim modelName As String: modelName = "P10, 12,9 cm (5.1""), 4 GB, 64 GB, 20 MP"
Dim data() As String: data = Split(modelName, ", ")
Dim firstPart As String
Dim secondPart As String
Dim thirdPart As String
firstPart = Trim(data(0))
secondPart = Trim(Replace(Mid(data(1), InStr(data(1), "(") + 1), ")", ""))
Select Case InStr(modelName, "4 GB")
Case 0
thirdPart = Trim(data(2))
Case Else
thirdPart = Trim(data(3))
End Select
MsgBox firstPart & " " & secondPart & " " & thirdPart
ОБНОВЛЕНИЕ:
Думаю, теперь я получил именно то, что вы хотите.Я попробовал следующий код с тремя примерами, которые вы дали нам по вашему вопросу, и это сработало (проблема была в том, что я не понял, что вы хотели получить последнее значение данных до значения MD
.
Dim modelName As String
Dim data() As String
Dim firstPart As String
Dim secondPart As String
Dim thirdPart As String
modelName = "P10, 12,9 cm (5.1""), 4 GB, 64 GB, 20 MP"
data = Split(modelName, ", ")
firstPart = Trim(data(0))
secondPart = Trim(Replace(Mid(data(1), InStr(data(1), "(") + 1), ")", ""))
thirdPart = Trim(data(Application.Match("*MP", data, 0) - 2))
MsgBox firstPart & " " & secondPart & " " & thirdPart
Выможно попробовать с
modelName = "P10, 12,9 cm (5.1""), 64 GB, 20 MP"
или с
modelName = "iPhone iPhone SE, 10,2 cm (4""), 640 x 1136 pixel, 16 GB, 12 MP, iOS 9, Sort, Grå"
Это всегда даст вам ответ.