2015-05-15 11 views
0

Я играю с некоторыми кодами IBAN/SWIFT, которые у меня есть в string в Excel VBA, но я хотел бы просто выбрать номер IBAN из строки.Проблема с InStr и Left для возврата правого текста из строки

Образцы:
DK4520005010201483 IBAN NDEADKKKXXX
NL24ABNA0424079763 IBAN ABNANL2A
DE56300700100303808000 IBAN DEUTDEDD

Строка (s) сверху сохраняется в строке iban
Код:

Dim cutDownStr as String, iban as string 

cutDownStr = iban 
fooStr = Left(cutDownStr, (Len(cutDownStr) - InStr(cutDownStr, " "))) 
MsgBox fooStr 

ответ

2

Ваша проблема ваша с Ода сокращала длину IBAN со всей строки. Вам нужно было отрезать длину строки ПОСЛЕ IBAN, включая пробел. Вы можете сделать это с помощью:

fooStr = Left(cutDownStr, (Len(cutDownStr) - (Len(cutDownStr) - InStr(cutDownStr, " ")))) 
+0

Спасибо! Работал супер. – Niclas

2

Если все, что вы хотите, это подстрока предшествующее IBAN затем:

Sub qwerty() 
    iban = "DK4520005010201483 IBAN NDEADKKKXXX" 
    foostr = Split(iban, " ")(0) 
    MsgBox foostr 
End Sub 
+0

Спасибо :) Я закончил с отмеченным ответом, поскольку это помогло мне лучше понять проблему. Спасибо за ответ. – Niclas

1

Использование функции

Function findIban(iban as String) 
    fooStr = split(iban," ") 
    findIban = fooStr(0) 
End Function 

Использование

Dim cutDownStr as String 

cutDownStr = "DK4520005010201483 IBAN NDEADKKKXXX" 
fooStr = findIban(cutDownStr) 
MsgBox fooStr 
+0

Спасибо :) Я закончил с отмеченным ответом, так как это помогло мне лучше понять проблему. Спасибо за ответ. – Niclas

0

InStrRev крутая функция, если ваша строка не очень хорошо разграничены, скажем, в примере, что IBAN часть иногда 10 символ, а иногда и 8 символ. InstrRev дает вам счетчик символов (слева), такой как Instr, но он ищет строку справа. При поиске «/» в «/ John/Son» результат равен 6 NOT 1. Оттуда вы можете использовать правильную функцию.

Sub IBANiac 
    Dim IBAN1, FindIBAN as String 
    IBAN1 = "DK4520005010201483 IBAN NDEADKKKXXX" 
    findIBAN = right(IBAN1,len(IBAN1)-instrrev(_ 
    IBAN1,"IBAN ",-1,vbtextcompare)) 
    msgbox findIBAN 
    'May want to add a +-1 to the second part of the right _ 
    function to account for spacing 
    End Sub