InStr 问题和从字符串左到 return 右文本
Issue with InStr and Left to return right text from string
我正在玩弄一些 IBAN/SWIFT 代码,这些代码在 Excel VBA 中的 string
中,但我只想选择 IBAN 号码的字符串。
样本:
DK4520005010201483 IBAN NDEADKKKXXX
NL24ABNA0424079763 伊班 ABNANL2A
DE56300700100303808000 IBAN 德国
上面的字符串保存在字符串iban
中
代码:
Dim cutDownStr as String, iban as string
cutDownStr = iban
fooStr = Left(cutDownStr, (Len(cutDownStr) - InStr(cutDownStr, " ")))
MsgBox fooStr
如果您只需要 iban 之前的子字符串,那么:
Sub qwerty()
iban = "DK4520005010201483 IBAN NDEADKKKXXX"
foostr = Split(iban, " ")(0)
MsgBox foostr
End Sub
使用函数
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
您的问题是您的代码从整个字符串中删除了 IBAN 的长度。您需要缩短 IBAN 之后的字符串长度,包括 space。你可以这样做:
fooStr = Left(cutDownStr, (Len(cutDownStr) - (Len(cutDownStr) - InStr(cutDownStr, " "))))
InstrRev 是一个很酷的函数,如果您的字符串没有很好地定界,例如在示例中 IBAN 部分有时是 10 个字符,有时是 8 个字符。 InstrRev 像 Instr 一样为您提供字符数(从左侧开始),但它从右侧搜索字符串。在“/John/Son”中搜索“/”时,结果是 6 NOT 1。从那里您可以使用 Right Function。
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
我正在玩弄一些 IBAN/SWIFT 代码,这些代码在 Excel VBA 中的 string
中,但我只想选择 IBAN 号码的字符串。
样本:
DK4520005010201483 IBAN NDEADKKKXXX
NL24ABNA0424079763 伊班 ABNANL2A
DE56300700100303808000 IBAN 德国
上面的字符串保存在字符串iban
中
代码:
Dim cutDownStr as String, iban as string
cutDownStr = iban
fooStr = Left(cutDownStr, (Len(cutDownStr) - InStr(cutDownStr, " ")))
MsgBox fooStr
如果您只需要 iban 之前的子字符串,那么:
Sub qwerty()
iban = "DK4520005010201483 IBAN NDEADKKKXXX"
foostr = Split(iban, " ")(0)
MsgBox foostr
End Sub
使用函数
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
您的问题是您的代码从整个字符串中删除了 IBAN 的长度。您需要缩短 IBAN 之后的字符串长度,包括 space。你可以这样做:
fooStr = Left(cutDownStr, (Len(cutDownStr) - (Len(cutDownStr) - InStr(cutDownStr, " "))))
InstrRev 是一个很酷的函数,如果您的字符串没有很好地定界,例如在示例中 IBAN 部分有时是 10 个字符,有时是 8 个字符。 InstrRev 像 Instr 一样为您提供字符数(从左侧开始),但它从右侧搜索字符串。在“/John/Son”中搜索“/”时,结果是 6 NOT 1。从那里您可以使用 Right Function。
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