プロが教えるわが家の防犯対策術!

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

このQ&Aに関連する最新のQ&A

A 回答 (6件)

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

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



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

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

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

再度失礼します。

質問者さま大変失礼ながら”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

こんにちは!



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

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

=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

=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

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル 数値だけ抽出するには?

エクセルで、文字列+スペース+数字と入力されているセルから数値だけ取り出す方法を教えていただけますか?
文字列とスペースの字数は一定で、数値の桁数は6-8桁と変動します。
A列からb列のように変換したいのです。

A列          B列
PMID:_12345678    12345678
PMID:_123456     123456

宜しくお願いいたします。

Aベストアンサー

B1に
VALUE(REPLACE(A1,1,6,""))
でよいでしょう.

数値の桁数には依存しません.

Qエクセルのセル内から数字だけを抽出する方法を教えて下さい

エクセルのセル内から数字だけを抽出する方法を教えて下さい
あるデータの列(備考欄)には様々な文字が入っていて、
その中に●名(●は数字)が入っています その数字だけを取り出して
別の列に移す関数を教えて下さい
※この列には他の数字は入っていません、最大で2ケタです

よろしくお願いします

Aベストアンサー

セル内の文字列の中に2桁までの数字が入っている場合に、その数字部分を抽出したいなら以下のような数式になります。

=MID(A2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A2)&1234567890)),1)&IF(ISNUMBER(MID(A2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A2)&1234567890))+1,1)*1),MID(A2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A2)&1234567890))+1,1)*1,"")

Q【エクセル】セル内の文字列から数値のみを抽出する方法

A1●●●●1111
A2××××××222222
A3■■■■■■■■■■■1234567890

上記のように文字列と数値が一続きになっているデータが各セルに入っています。
文字列+数値の順番は決まっていますが、それぞれの文字数は決まっていません。数値はマイナスの場合もあります。
また、境にカンマやスペースなどもないため、テキストファイルウィザードも使えません。
このデータから、数値のみを抽出する方法がありましたらご教示下さい。
よろしくお願いします。

Aベストアンサー

No.3の方に似ていますが…。

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

(長くなってしまったので改行していますが、1行に入れてください)
これで数字部分の桁制限なく抜き出せるかと思います。

Q文字列から英数字のみを抽出する関数

文字列から英数字のみを抽出する関数を教えていただきたいです。

セルの文字列にはひらがな、カタカナ、数字、アルファベット、記号等を含みます。

色々調べてはみたのですが、数字のみを抽出する関数の説明はたくさんありますが、
アルファベットも含むとなると見つかりませんでした。

数字0~9とアルファベット27個の計37個の文字なので、どうにか関数でできると思うのですが。

具体的には下記のようにしたいのです。

●A列
今日iPhone5をauで購入
最新のNEWSを15時~PCで見る 
Moonshotを生み出す「Google X」

●B列にこう表示したいのです。
iPhone5au
NEWS15PC
MoonshotGoogleX


スペースは残ったままでも結構です。

詳しい方、どうかよろしくお願いいたします。

Aベストアンサー

>数字のみを抽出する関数の説明はたくさんありますが

文字列の中に数字が「一塊だけ」ある場合の説明は多分沢山ありますが、(今回のご質問のように)「文字数字文字数字文字数字」と不定数入り混じってる場合の数式は、全く見つからなかったと思いますよ。

たとえば「英数字が最大限3カタマリまで」といった制約を付けて無理矢理関数をくっつける事は出来なくはありませんが、正直不細工ですし、そもそもあんまり現実的じゃありません。



手順:
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける

public function myf(a) as string
 dim i as long
 for i = 1 to len(a)
 if mid(a,i,1) like "[0-9a-zA-Z ]" then
  myf = myf & mid(a,i,1)
 end if
 next i
end function

ファイルメニューから終了してエクセルに戻る

任意のセルに元の言葉を記入し、
=myf(A1)
のように計算する。

>数字のみを抽出する関数の説明はたくさんありますが

文字列の中に数字が「一塊だけ」ある場合の説明は多分沢山ありますが、(今回のご質問のように)「文字数字文字数字文字数字」と不定数入り混じってる場合の数式は、全く見つからなかったと思いますよ。

たとえば「英数字が最大限3カタマリまで」といった制約を付けて無理矢理関数をくっつける事は出来なくはありませんが、正直不細工ですし、そもそもあんまり現実的じゃありません。



手順:
ALT+F11を押す
現れた画面で挿入メニューから標準モ...続きを読む

QExcel セル内の文字と数字をわけるには??

一つのセルの中に、文字と数字が入っているのですが、
それを別々のセルに分けたいのです。。。

例)
後楽1-1-1 → 後楽 と 1-1-1
西新宿2-2 → 西新宿 と 2-2

どなたか良い方法をご存知でしたら、教えて下さい~!!

Aベストアンサー

↓こちらの26番「数字で始まる部分から区分」を参考にしてください。

参考URL:http://www2.odn.ne.jp/excel/waza/function.html

QExcel 文字列の中から数字だけを削除したい

Excel 2007で各セルに文字列として入力されている、数字を削除し文字だけにしたい。
数字は先頭に入力されています。(顧客コード)

例:
12345-001 ABC株式会社
98765- ZYX有限会社ごお商会 等

数字を削除し文字列だけで元のセルにセットしたいです。


きっと簡単なことなんでしょうけど、過去を検索しても良くわかりませんでした。

よろしくお願いいたします。

Aベストアンサー

[No.3お礼]へのコメント、

私が提示した式の意味が分かる(と思う)添付図を参照ください。
B1: =TRIM(ASC(A1))
C1: =FIND(" ",B1)
D1: =MID(B1,C1+1,99)

最後の式中の B1、C1 に上2つの式を代入すれば、提示式になります。

セル A2 の「ZYX有限…」の直前は全角スペースだったので、半角スペース1個にするために、先ずはASC関数で全角スペース1個を半角スペース2個にし、TRIM関数で複数個の半角スペースを1個に置き換えています。ちなみに、文字列の左端や右端にスペースがあればそれらを除去します。
最初のスペースの「次」から文字列を切り出すので「+1」になっています。
A列の文字数は百文字以上は考えなくてよかろうと推測して「99」にしました。

【注意】3行目以降に示したように、全角アルファベットおよび全角カナは、何れも半角文字になってしまいます。

以上の解説で分からなければ、貴方の「レベル」に合った回答に従ってください。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセル 同一セル内の数値と文字を分ける関数

セルA1:12カローラ



セルB1:12 C1:カローラ

にしたいのですが可能でしょうか?

よろしくお願い申し上げます。
 

Aベストアンサー

数字の桁とかは規則性はありますか?

規則性があって必ず先頭から二桁が数字なら、
=LEFT(A1,2)
で数字を抜き出し、続いて
=MID(A8,3,LEN(A8)-2)
で文字を抜き取ります。

もしも数字の桁数に規則性がないなら、もう一度
内容を補足して下さい。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QEXCELで、特定の文字を含むセルを抽出したいのですが。

仕入れ帳のようなシートで、B列に商品名があります。
商品名に特定の文字(数字又は文字)を含む時、空白列のC列に、その文字を抽出する方法をご教示ください。B列の商品名は変化させずにです。
意図は、当シート内で並べ替えをする時に、C列をキーとするためです。
商品名が、各種文字と数字で構成されており、そのままでは、希望する並べ替えができないのです。
宜しくお願い致します。

Aベストアンサー

「IF」関数、「ISERR」関数、「FIND」関数を組合せれば可能ですね。
たとえば、文字「a」を検索するなら、B2セルを対象として、C2セルに、

=IF(ISERR(FIND("a",B2)),"","aが入っています")

と入れます。

注意事項として、アルファベットを検索する場合、大文字と小文字を区別します。
つまり、上の例ではB2セルに「a」があれば、「aが入っています」、と表示されますが、「A」では表示されません。
(「FIND」を「SEARCH」にすれば「a」・「A」どちらでも表示される)


人気Q&Aランキング