web-dev-qa-db-ja.com

左トリム:数値の最後のインスタンスの後の文字を削除します

Excelに、数字、文字、記号を組み合わせたテキストがあります。

010-038-310-1500-93745
010-038-310-3000-xxxxx-xxxxxxxx-xxxxxxxx
010-038-???-????-?????-????????
010-038-190-3109-?????-87655467-????????
010-038-310-3101-xxxxx-xxxxxxxx-xxxxxxxx
010-038-xxx-3103-xxxxx-xxxxxxxx-49359661

数字の最後のインスタンスの後に来るテキストのすべての文字を削除したいと思います。

010-038-310-1500-93745
010-038-310-3000
010-038
010-038-190-3109-?????-87655467
010-038-310-3101
010-038-xxx-3103-xxxxx-xxxxxxxx-49359661

Excelの数式でこれを行う方法はありますか?

7
User1973

A1のデータの場合、別のセルに、配列数式を入力します。

=LEFT(A1,MAX(IFERROR(FIND({1,2,3,4,5,6,7,8,9,0},A1,ROW(INDIRECT("1:"&LEN(A1)))),0)))

enter image description here

配列数式は、 CtrlShiftEnter だけではなく Enter キー。これが正しく行われると、数式が数式バーで中かっこ付きで表示されます。

16
Gary's Student

同じことをするUDF:

Function LNum(Target As Range) As String

Dim i As Long

For i = Target.Characters.Count To 1 Step -1
If IsNumeric(Target.Characters(i, 1).Text) Then GoTo MyExit
Next i
MyExit:
LNum = Left(Target, i)

End Function

enter image description here

3
Justin Doward

Excelをインストールしていませんが、Googleシートと同じ構文が適用されているようです。非常に単純な正規表現は理解しやすいはずです。

=REGEXEXTRACT(A1,".*\d")

正規表現は何かをキャプチャしますが、数字で終わる必要があります。

enter image description here

Excelを持っている人は誰でも構文が同じであることを確認してください?

1
Viktor Mellgren