2012-06-21 4 views
1

Надеясь кто-то может помочь с некоторыми VBA кодой, в частности, с кодом для получения followng части информации из следующей строки с кронштейнами и черточками, т.е.Извлечение подстроки из строки в VBA

ACOST Таблица 2012 Цен - (PRJ 216664 - финансовый сервер вывода из эксплуатации) - 12 месяц срок

Использование VBA для Excel 2007, мне нужно, чтобы получить следующие два бита в пределах этой строки и назначены двум различным переменным, а именно:

  • Финансовый сервер вывода из эксплуатации

Я попробовал синтаксис Mid(), но не мог извлечь эти два бита информации.

Любая помощь будет высоко оценена.

Спасибо.

+0

Формат всегда будет таким, что (xxx xxxxxx - xxxxxxxxxxxxx) –

+0

Многочисленные связанные вопросы уже существуют на SO. Пример: [здесь] (http://stackoverflow.com/q/1624387/190829), [ здесь] (http://stackoverflow.com/q/10903394/190829), [здесь] (http://stackoverflow.com/q/6052337/190829) – JimmyPena

+0

@Si ddharth Rout - да, формат всегда будет таким образом. – tonyf

ответ

4

Если формат будет оставаться таким же, то вы можете использовать этот

Sub Sample() 
    Dim strSample As String 

    strSample = "ACOST 2012 Pricing Table - (PRJ 216664 - Financial Server Decommission) - 12 Month Term" 
    strSample = Split(Split(strSample, "(")(1), ")")(0) 

    Debug.Print Trim(Split(Split(strSample, "-")(0), " ")(1)) 
    Debug.Print Trim(Split(strSample, "-")(1)) 
End Sub 
+0

+1 для простоты рок-н-ролла! –

+0

+1 Я большой поклонник Split – JimmyPena

0

Другой путь;

Data = "ACOST 2012 Pricing Table - (PRJ 216664 - Financial Server Decommission) - 12 Month Term" 

dim re As object, matches as object: Set re = createobject("vbscript.regexp") 
re.pattern="- \(.*?(\d+)\s+-\s+(.*?)\)(\s|$)" 

with re.Execute(Data) 
    msgBox .item(0).SubMatches(0) & "/" & .item(0).SubMatches(1) 
End with 

Получить последнюю группу цифр после «- (» перед «-» в окружении пробельной затем получить все Шифрование до следующего) Thats затем пробела или конца строки»

Смежные вопросы