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

よろしくお願いします

A 回答 (7件)

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


因みに数字(半角、全角)をそのまま抽出します。
(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
    • 8
この回答へのお礼

有難うございました

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

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

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

こんにちは!


一例です。

↓の画像で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
    • good
    • 3
この回答へのお礼

回答有難うございました

おかげ様で解決しました

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

回答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

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

有難うございました

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

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

備考欄が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

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



あいうえお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

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



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

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

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

今、見られている記事はコレ!

  • 縦書きと横書きはどちらが読みやすい?

    普段何気なく読んでいる文章ですが、縦書きか横書きか、意識したことはありますか?制作側としては読み手はどちらの方が読みやすいと思うかはとても大きな問題です。教えて!gooには、 「『横書き』と『縦書き』、...

  • 昭和の日ってどういう日?

    ゴールデンウィーク初日の4月29日は「昭和の日」です。今や平成生まれの人も多い時代ですが、「なぜ昭和の日があるの?」という疑問をもったことはありませんか?和暦を挙げるのなら、大正の日、明治の日、平成の日...

  • Excelの意外な使い方とは?

    会社のパソコンに必ず入っている、と言っても過言ではない、Office系ソフトの「Word」と「Excel」。PCを使う職場にいた方なら、一度は触ったことがあるかと思います。Wordは仕事以外に使う方法がすぐ浮かびそうです...

  • 24年ぶりに日本で展示!ブリューゲル「バベルの塔」展が来春開催

    2017年4月18日〜7月2日まで東京都美術館、7月18日〜10月15日まで大阪の国立国際美術館において、「ボイマンス美術館所蔵 ブリューゲル『バベルの塔』展 16世紀ネーデルラントの至宝 ーボスを超えてー」が開催され...

  • 【江戸時代の料理本に掲載!】黄身返したまごの作り方

    2016年ももうすぐ終わりだ。そして、年の瀬といえば忘年会。同僚や友人と自宅に集い、1年の労をねぎらうという人も多いだろう。自宅で行う際は参加者をアッと驚かせる料理を披露したいものだ。料理は味だけではなく...

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる

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


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ