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

よろしくお願いします

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

A 回答 (7件)

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

有難うございました

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

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

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


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

有難うございました

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

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

お礼日時: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
「エクセルのセル内から数字だけを抽出する方」の回答画像6
    • good
    • 5
この回答へのお礼

回答有難うございました

おかげ様で解決しました

お礼日時: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

備考欄が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に関連する人気の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【エクセル】セル内の文字列から数値のみを抽出する方法

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エクセルで、条件に一致した行を別のセルに抜き出す方法

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

たとえば、

<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行までとしていますが、必要に応じて変更して下さい

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

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

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

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

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

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

宜しくお願いします。

Aベストアンサー

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

でどうでしょうか?

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ある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

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を押す
現れた画面で挿入メニューから標準モ...続きを読む

Qエクセルで重複しているデータの抽出のしかたを教えてください。

エクセルで重複しているデータを抽出したいのですが・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。
A列に日付 B列に企業名このデータが300件ほどあります。

 Å列      B列
1月 1日    AAAA社
1月 4日   BBBB社
1月 8日   CCCC社
2月 1日   BBBB社
2月20日    DDDD社
3月 2日   AAAA社

と、あるとしてB列の企業名が重複しているものを抽出したいのですが・・・。この場合 AAAA社とBBBB社ですが。
これを簡単に抽出する方法はないでしょうか?
教えてください お願いいたします。

Aベストアンサー

企業名がセルB2からセルB300まで入力されていると仮定します。
セルC2に IF(COUNTIF($B$2:B2,B2)>1,"*","") を入力し、セルC300までコピーして下さい。すると重複したデータの二番目以降に "*" のマークが付きます。
(注) 数式を下のセルまでコピーするため、COUNTIF($B$2 は絶対参照にして下さい。

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

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

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

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

Aベストアンサー

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

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


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

人気Q&Aランキング

おすすめ情報