2016-03-25 11 views
2

文字列はアルファベットと数字の混在していますが、文字列の末尾には常に数字のセットがあります。文字列の末尾に数字を表示

文字列の中央にある先頭の桁または数字は無視してください。動作しているよう

Public Function trailing(S As String) As Long 
    Dim r As String 
    Dim i As Long 

    For i = Len(S) To 1 Step -1 
     If IsNumeric(Mid(S, i, 1)) Then 
      r = Mid(S, i, 1) & r 
     Else 
      Exit For 
     End If 
    Next i 
    trailing = CLng(r) 
End Function 

enter image description here

ユーザーがの.xlsxに取り組んでいるとUDFを使用することはできませんしかし、私が思い付きました。同じ結果を得る数式はありますか?
ありがとうございます事前にありがとう

+0

ファイルを 'xlsm'にすることができない理由は何ですか? – findwindow

+0

これはおそらく助けることができますか? http://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft-excel-both-in-cell-and-loops –

+0

@PeterB参考までに感謝します.... ..............しかし、この場合は* VBA *を使うことはできません。 –

答えて

5

セルB1には、下にコピー:

=--RIGHT(A1,LOOKUP(2,1/(ISNUMBER(--RIGHT(A1,ROW($1:$15)))),ROW($1:$15))) 

$1:$15の15文字が、指定された文字列の可能な最大桁数よりも大きくなるようにしてください。配列式の入力は不要で、ヘルパー列は必要ありません。

代替バージョンあなたがROW($1:$15)を繰り返す必要はありませんので:

=--RIGHT(A1,MATCH(TRUE,INDEX(ISERROR(--RIGHT(A1,ROW($1:$15))),),0)-1) 
+0

'--'はどういう意味ですか? – findwindow

+1

"マイナスマイナス*式*"を意味します。基本的には、可能であればテキストを数値に変換します。あなたは '0 +'や '1 *'で同じ結果を得ることができます。私はちょうど ' - 'の見た目が好きです。 – tigeravatar

+0

**完璧!** ....................ありがとう! –

1

これは醜いです。これは醜いです。これを掃除する機会があるかもしれません。 RegEx/VBAの方がはるかに優れていますが、私たちはよりよいアプローチに同意していますが、あなたの質問の基準/制限の下では、ここに行きます...

長さは2から12まで12列の配列式をB-Mとし、RIGHT()を1,2、...、12文字で適宜抽出します。私たちをこの式は、最初のセルB2:M2を選択することで入力され、式を入力し、=VALUE(RIGHT(A2, {1,2,3,4,5,6,7,8,9,10,11,12}))その後、義務Ctrl + Shiftキー+

を入力してください。NOTE - 私たちは、非数値のエラー#VALUE!を返すためにVALUEでこれをラップ次にを利用して別の配列式の最初のTRUEを探して、MATCH()式を持つCOLUMN Oの最初のエラーの位置を探します。

最初に見つかったエラーの横の列を戻す位置1-12列のインデックスを実行することで、解決策が得られます。これは、列Aが常に数字で終わることを知っているからです。

N.B.最後に4桁の数値文字列しか指定していないので、このメソッドを最初の4つの列に減らすことができます。つまり、12列を使用するのではなく、列B:Eを使用して上記の手順を続けます。我々は.xlsmワークブック/ VBA /正規表現または他の解決策を検討するために、クライアント/顧客を物乞いで終了

Excel

...

+0

の間で変化し –

1

もう1つの可能な解決策:

aaa12.1 bc1E+13:いくつかのケースでは

=AGGREGATE(14,6,--RIGHT(A1,ROW(INDIRECT("1:"&LEN(A1)))),1) 

を、それは間違った結果を与えることができます

E,eおよび.(おそらく,および空白)を別の文字で置き換えるには、SUBSTITUTEを使用して対処してください。

+0

おかげ....................エクセルの私のユーザーのバージョンがサポートする場合、私がチェックします*集計()* –

関連する問題