アプリ版:「スタンプのみでお礼する」機能のリリースについて

質問失礼致します。
エクセルで、関数を使用して文字列(?)の中から数字だけを抽出したいです。
例えば
Ⓐ→Ⓑ120を120
Ⓐ→Ⓑ→Ⓒ65を65
数字は二桁だったり三桁だったり
文字は上記のようなものが続くタイプです。
宜しくお願い致します。

A 回答 (6件)

=MID(A1,MIN(FIND({"1","2","3","4","5","6","7","8","9","0"},A1&123

4567890)),9)
    • good
    • 0
この回答へのお礼

回答有難うございます。
申し訳ありません…入力してもそのまま→Ⓐが表示されてしまいました。

お礼日時:2016/03/17 16:38

=MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),LEN(A1))



でできるはずですが、どうでしょうか?
    • good
    • 0
この回答へのお礼

回答有難うございます。
→Ⓐ、ついてまいりました…すみません;;

お礼日時:2016/03/17 16:57

こんにちは!



すでに回答が出ていますので、別案です。
この質問限定の関数(ユーザー定義関数)を作成してみてはどうでしょうか?

Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → VBE画面を閉じてExcel画面に戻ります。

Function suuti(myRng As Range) 'この行から//
Dim k As Long, str As String, myStr As String
For k = 1 To Len(myRng)
str = StrConv(Mid(myRng, k, 1), vbNarrow)
If str Like "[0-9]" Then
myStr = myStr & str
End If
Next k
If Len(myStr) > 0 Then
suuti = Val(myStr)
Else
suuti = ""
End If
End Function 'この行まで//

通常の関数と同じ使い方ができます。
仮にA1セル以降にデータがあり、B1セル以降に表示させたい場合はB1セルに
=suuti(A1)
という数式を入れフィルハンドルで下へコピーします。

※ セル内に飛び飛びで数値があっても
すべての数値が羅列されます。m(_ _)m
    • good
    • 0
この回答へのお礼

こんにちは!!有難うございます
ユーザー定義関数初めてです…凄いですねこれは!
無事に欲しい数値が出てきました。

ちなみに20→Ⓐ30という表示があったとき、現在は2030と表示されますが、30だけの表示は得られますでしょうか?質問続きで申し訳ございません。
もし良かったらお時間あるときご教示頂けますと幸いです。
本当に有難うございました!

お礼日時:2016/03/17 17:12

再度失礼します。

質問者さま大変失礼ながら”A1”の部分を対象セルに
置き換えをわすれていませんか?3つ同じセルを置き換えする事になります。
左・真ん中・右にあります。

先程はスマホから投稿しまして、できないとのことでしたので
記述間違いかと思いエクセル開いて試しましたがちゃんとできますよ!

1つでも置き換え忘れるとできません。
確認してもらえますか?

=MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),LEN(A1))
   ↑                 ↑            ↑
   ここ                ここ           ここ
    • good
    • 0
この回答へのお礼

申し訳ございません!!
対象セルの中身が1→Ⓐ30と→の前にも数値が入ってしまっておりました。
無事に数値だけ抽出できました。有難うございます

お礼日時:2016/03/17 17:18

=-LOOKUP(1,-RIGHT(A1,{1;2;3;4;5}))



エラー対策はご自分でどうぞ。
    • good
    • 0
この回答へのお礼

有難うございます!!バッチリ欲しい数値が出てきました!

お礼日時:2016/03/18 09:28

No.3です。



今回もユーザー定義関数でやってみました。
セル内の文字数に制限はなく、最後の数値のあとに数値以外の文字列があっても
結果は最後の連続する数値を表示するようにしています。

Function suuti(myRng As Range)
Dim k As Long, str As String, myStr As String, myFlg As Boolean
For k = Len(myRng) To 1 Step -1
str = StrConv(Mid(myRng, k, 1), vbNarrow)
If str Like "[0-9]" Then
myFlg = True
myStr = str & myStr
End If
If myFlg = True Then
If Not str Like "[0-9]" Then Exit For
End If
Next k
If Len(myStr) > 0 Then
suuti = Val(myStr)
Else
suuti = ""
End If
End Function

※ ファイルを保存するときは
「マクロ有効ブック」として保存します。m(_ _)m
    • good
    • 0
この回答へのお礼

2つ目の回答まで本当に有難うございます。スッキリ出てまいりました!これで業務が楽になります;;

お礼日時:2016/03/18 09:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!