2016-06-20 4 views
0

文字列にあるトランザクションIDの値を返すマクロを作成しようとしています。文字列には、取引名、タイプ、ID、ファンド名が含まれます。そこにも多くのスペースと " - "。これまでのところ、私はSplit()で試してみましたが、文字列は常に異なり、マクロに誤解を招きます。常に失効した値があり、文字列の長さは常に11のトランザクションIDです。したがって、マクロで長さ11の値を見つけて返します。どのようにそれを行うにはどのようなアイデア?これは、あなたが提供した入力のために働いているVBA正確な11文字の文字列を返す

おかげ

+3

こんにちは!いくつかの例を挙げれば、本当に便利です。例:入力と期待される出力。 – Vityata

+0

あなたが試したこと、あなたのコード、そして期待することを示してください。答えは分割されているようです。 – CyberClaw

+1

入力例: "AAAAA and BBBBB IIOO 16IIOOBBKK5 3F3W.xls"と出力 "16IIOOBBKK5"が必要ですが、単語と " - "の間には常に別の "スペース"がありますので、Split()は狂ってしまい、5番目の値は常に異なります。 –

答えて

0

Option Explicit 

Public Function return_me11(str) As String 

    Dim my_str  As String 
    Dim my_arr  As Variant 
    Dim my_val  As Variant 

    my_str = Replace(str, " ", "-") 

    my_arr = Split(my_str, "-") 

    For Each my_val In my_arr 
     If Len(my_val) = 11 Then 
      return_me11 = my_val 
      Exit Function 
     End If 
    Next my_val 

    return_me11 = "No good input" 

End Function 
+1

これまでのところうまくいきました。ありがとう!変更があれば更新します:) –

+0

可能性のある間違いは、11以上の長さの値がある場合です。次に、最初に見つかったものを返します。 – Vityata

0

これは、スプリット(のための私の現在のコードである)

  strLen = Len(FileName) 

      strFullName = FileName 

      strName = Left(strFullName, strLen - 4) '4 is because of .xls 

      strLastName = RTrim(Mid(strName, InStr(strName, " "))) 
      text_string = Right(strLastName, 18) 

      WrdArray() = Split(text_string) 

      ActiveCell.Offset(0, 1).Value = WrdArray(1) 
関連する問題