激凹みから立ち直る方法

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

よろしくお願いします

A 回答 (7件)

例えばF列に備考があるのでしたらG1セルには次の式を入力して下方にオートフィルドラッグします。



=IF(F1="","",SUBSTITUTE(F1,"名","")*1)
    • good
    • 2

○○名が最後にあれば簡単なんですがそうではなく、



あいうえお55名かきくけこ
やゆよ8名ん

のような任意の文字列中で場所不特定の「名」の前の1文字または2文字の数字のみを取り出すんですね?
数字の前以外に「名」という文字は存在しないんですね?

そうであれば、
・備考セル内に「名」が無ければ表示しない。
・「名」の前の2文字を取り出し、数値化できなければ「名」の前の1文字だけを取り出す。
・そうでなければ「名」の前の2文字を取り出し、数値化する。
という式でいけますね。

仮に対象がA1セルだとすると

=IF(ISERROR(FIND("名",A1)),"",IF(ISERROR(VALUE(MID(A1,FIND("名",A1)-2,2))),VALUE(MID(A1,FIND("名",A1)-1,1)),VALUE(MID(A1,FIND("名",A1)-2,2))))
    • good
    • 1
この回答へのお礼

回答有難うございました

お礼日時:2010/09/14 18:08

備考欄がA列だとすると、隣のB列に以下のように関数を記述して下さい。


(例は1行目の場合)

=IF(ISNUMBER(VALUE(MID(A1,1,2))),MID(A1,1,2),IF(ISNUMBER(VALUE(MID(A1,1,1))),MID(A1,1,1),""))


但し以下の様な条件があります。

・先頭が数字で始まっていること。
 「約1名」などは対象になりません。

・数字は2桁以内であること。
 3桁以上の場合は3桁目以降を無視して抽出します。
 「123名」の場合「12」と抽出されます。

・備考欄に2バイト(全角)で入力されている数字は、
 そまま2バイト(全角)で抽出します。
 「12名」の場合「12」と抽出され、
 「12名」の場合「12」と抽出されます。

また数字の後ろ(2または3桁目以降)の文字が何であれ
先頭が数字であれば抽出します。

 「12名」でも「12個」でも「12」と抽出されます。


例えば、何らかの人数を抽出することが目的だが、
中には「○個」という不要な情報も混ざっている、などの場合でも
先に「名」という文字を特定する方法はありますが、
もう少し複雑な関数になってしまいます。
    • good
    • 0
この回答へのお礼

回答有難うございました

お礼日時:2010/09/14 18:07

セル内の文字列の中に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,"")
    • good
    • 13
この回答へのお礼

有難うございました

コピペで簡単に出来ました!!

お礼日時:2010/09/14 18:01

回答No1です。


F列が備考であるとしてさまざまな文字が入っているとのことを見落としていました。
G1セルには次の式を入力して下方にオートフィルドラッグしてください。

=IF(OR(D1="",COUNTIF(D1,"*名*")=0),"",IF(ISNUMBER(MID(D1,FIND("名",D1)-2,2)*1),MID(D1,FIND("名",D1)-2,2)*1,IF(ISNUMBER(MID(D1,FIND("名",D1)-1,1)*1),MID(D1,FIND("名",D1)-1,1)*1,"")))

この式でしたら数字の前に文字列が入っている場合にでも問題なく対応できます。
    • good
    • 0
この回答へのお礼

再回答までして頂いて有難うございました

お礼日時:2010/09/14 18:06

こんにちは!


一例です。

↓の画像でE2セルに
=IF(D2="","",MID(D2,MATCH(TRUE,ISNUMBER(MID(D2,ROW($A$1:$A$10),1)*1),0),COUNT(MID(D2,ROW($A$1:$A$10),1)*1)))

これは配列数式になってしまいますので、この画面からコピー&ペーストしただけではエラーになると思います。

E2セルに貼り付け後、F2キーを押す、またはE2セルをダブルクリック、または数式バー内で一度クリックします。
編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定します。
数式の前後に{ }マークが入り配列数式になります。

これをオートフィルで下へコピーすると画像のような感じになります。

尚、D列の10文字まで対応できる数式にしています。
そして、数値が連続していれば最初に数値が出てきたところから入っている数値は全て表示されます。

以上、参考になれば良いのですが・・・m(__)m
「エクセルのセル内から数字だけを抽出する方」の回答画像6
    • good
    • 6
この回答へのお礼

回答有難うございました

おかげ様で解決しました

お礼日時:2010/09/14 18:05

ワークシート関数では非常に厳しいと思いましたので専用の関数で如何でしょうか。


因みに数字(半角、全角)をそのまま抽出します。
(1)alt+F11キー押下→挿入→標準モジュール→以下のコードを貼り付け→alt+F4
(2)任意セルに=numget(対象セル)を入力、数値とするならば、=numget(対象セル)*1で下方向にコピー

ユーザ定義関数
Function numget(rng As Range)
For i = 1 To Len(rng)
ch = Mid(rng, i, 1)
If ch Like "#" Then
wk = wk & ch
End If
Next i
numget = wk
End Function
    • good
    • 14
この回答へのお礼

有難うございました

こちらの回答を見る前にベストアンサーを決定しましたが、
数値として合計も出したかったので、業務にはこちらを利用しました!!

(関数の意味は全く分かりませんが・・・)   笑

お礼日時:2010/09/14 18:04

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

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