私はテキスト文字列の中で最後の数値文字の位置を見つけたいと思います。
MAX(IF(ISERROR(FIND({1; 2; 3; 4; 5; 6; 7; 8; 9; 0}、A1))、FIND({1; 2; 3; 4; 5; 6; 7; 8; 9; 0}、A1))
しかし、これは、文字列に繰り返し数。 たとえば、文字列が "10ABC2010ABC"の場合、9ではなく7が返されます。 文字列が "10ABC2131ABN"の場合、9ではなく8が返されます。
何が起こっているのか?
回答:
回答№1は5ここに働く式があります:
=MAX(IF(ISNUMBER(VALUE(MID(A1,ROW(INDIRECT("1:" & LEN(A1))),1))),ROW(INDIRECT("1:" & LEN(A1)))))
押す CTRL+シフト+入る それを評価する。
説明:
ROW(INDIRECT("1:" & LEN(A1)))
あなたに配列を返す{1,2,3,...,Len(A1)}
- この配列を使用して、各文字を
A1
細胞:MID(A1,ROW(INDIRECT("1:" & LEN(A1))),1)
- を使用して
VALUE(...)
各文字を数字に変換しようとします。それは返す#VALUE!
1,2,3,4,5,6,7,8,9,0を除くすべての文字のエラー - を使用して
ISNUMBER(...)
我々は、VALUE(..)
数値またはエラーを返し、数値を返す場合はその位置を覚えています。 - 最終ステップ - using
Max(..)
我々は数字の最後の位置を見つける
回答№2の場合は3
FIND
は、 最初のインスタンス あなたの要件に合った作業をすることはできません。
=MAX(IFERROR(FIND({1,2,3,4,5,6,7,8,9,0},A1,ROW(INDIRECT("1:"&LEN(A1)))),0))
確認した CTRL+シフト+入る
それはまた使います FIND
しかし ROW(INDIRECT
partは、各機会に文字列に沿ってさらに検索を開始します。 A1に数字がない場合、結果としてゼロが得られます(必要に応じてエラーにすることができます)
Excel 2010以降を使用している場合の別の可能性は、以下のようなAGGREGATE関数を使用することです:[untested]
=AGGREGATE(14,6,FIND({1,2,3,4,5,6,7,8,9,0},A1,ROW(INDIRECT("1:"&LEN(A1)))),1)
それは "配列エントリ"を必要としません
見る ここに 提案された数式のサンプルワークブック用
答え№3の2
そして、この配列式も動作します... ok、ok ...私はそれがオフセットを使用していることを知っています:)
=1+LEN(A1)-MATCH(1;ISNUMBER(LEFT(RIGHT(A1;ROW(OFFSET(A1;0;0;LEN(A1);1))))*1)*1;0)