最新閲覧日:

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

よろしくお願いします

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
    • 5
この回答へのお礼

有難うございました

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

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

備考欄が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も見ています

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

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

Qエクセル 複数の列や行にある数字で二個以上ある数字だけを抜き出す方法は?

データをまとめたいのですが、なかなか上手くいかず、皆様の御知恵を拝借させていただけたら有難いです。


まず、四列(ABCD)、三行(1、2,3)に数字が入っています。

表)
7 8 1 6
3 0 4 3
5 1 3 8
この中で、重複する数字は、どれか?を抜き出したいのです。
例えば、上の表では、1、3、8にあたります。
なので、答えが=1,3,8と抜き出す方法はありますか?

とりあえず、=COUNTIFを使ってみたのですが、”検索条件”に、どう入力したら良いか分かりません。

逆に、一つしかない数字を抜き出す方法も教えて頂けたら有難いのですが・・・。

Aベストアンサー

> まず、四列(ABCD)、三行(1、2,3)に数字が入っています。

1列にした方が処理しやすいですが。

A1~D3の範囲に数字が入ってるとして、1列開けて右側のF1~I3の範囲に、

F1:=IF(COUNTIF($A$1:$D$3,A1)>=2,A1,"")
(A1~D3の範囲でA1と同じ数字をカウントし、それが2以上だったらA1の数字、そうでなければ空白)

F1をコピー、F1~I3に貼り付け。

とか。


> 逆に、一つしかない数字を抜き出す方法も

上の式の「>=2」を「=1」とかで良いハズ。

QExcelで特定の文字を含む列の数値と、特定列の掛け算を合計したい

Excelで、特定の文字を含む列にある数値と、
その数値のある行の特定列の掛け算の合計を、
集計してくれる関数はあるでしょうか。

SUMPRODUCTやmatch関数で計算しようとしているのですが、うまくできません。

1行目はタイトル行で、左から、商品名、単価、以下たくさん支店名(○支店、×支店、△支店、□支店...)のように並んでいます。

ただし、1か月の集計期間にまったく販売がなかった支店は、表記がなくなります。
つまり、どの列に、どの支店が掲載されるかは、月によって異なります。

2行目より下は、販売商品がずらっと並んでいます。
こちらも販売がなかった商品は掲載されませんが、最大でも2000個です。
最大2000行の指定で足ります。

ある月の集計表(SheetBとします)が、次のようだったとします。
支店によって販売がなかった商品は空白となっています。

商品名 単価 ○支店 ×支店 □支店
りんご 100円 1   (空白)  2
みかん  80円(空白)  2   (空白)
バナナ 120円 2    1    1

それをたとえばSheetAから参照して、
次のように各支店別の売上高を、関数で自動計算したいのです。

○支店 340円
×支店 280円
△支店  0円
□支店 320円
▽支店  0円

よい方法があれば、教えていただけますか。

Excelで、特定の文字を含む列にある数値と、
その数値のある行の特定列の掛け算の合計を、
集計してくれる関数はあるでしょうか。

SUMPRODUCTやmatch関数で計算しようとしているのですが、うまくできません。

1行目はタイトル行で、左から、商品名、単価、以下たくさん支店名(○支店、×支店、△支店、□支店...)のように並んでいます。

ただし、1か月の集計期間にまったく販売がなかった支店は、表記がなくなります。
つまり、どの列に、どの支店が掲載されるかは、月によって異なります。

2行目...続きを読む

Aベストアンサー

No.1です。
とりあえずは解決したようなので良かったです。

>OFFSET関数が理解できていませんし、
>MATCH関数のあとにある-1も意味がわかりませんが...。

というコトなので若干の説明を・・・
実は前回
>最大でも2000個です。
の部分を見逃していましたので、
数式を↓のように変更してください。

=IFERROR(SUMPRODUCT((Sheet1!B$2:B$3000)*(OFFSET(Sheet1!A$2:A$3000,,MATCH(A2,Sheet1!$1:$1,0)-1))),"")

(前回の1000の部分を3000に変更しただけです)
SUMPRODUCT関数は配列数式になってしまいますので、極端にデータ量が多い場合はオススメしませんが、
この程度の範囲であれば問題ないと思います。

さてOFFSET関数についてですが、
仮に前回の配置で「○支店」の場合を考えてください。
数式は
=SUMPRODUCT((Sheet1!B2:B3000)*(Sheet1!C2:C3000))
で集計ができます。
今回は後半部分の
>(Sheet1!C2:C3000)
が行によって変動しますので、ここにOFFSET関数を使っています。

OFFSET関数は
(参照,行数,列数,高さ,幅)
というコトになりますので
参照(基準)はA2~A3000 の範囲となります。
今回行数は無視していますので、列数だけが必要になります。
=MATCH(A2,Sheet1!$1:$1,0)
としてしまうと、「3」という値が返ってきます。
先ほど書いたように参照(基準)はA列にしていますので、
その3列右になればD列となり1列ずれてしまいます。
本来であれば「2」という結果がここでほしいので「-1」を付け加えているだけです。

以上長々と書きましたが、この程度で・・・m(_ _)m

No.1です。
とりあえずは解決したようなので良かったです。

>OFFSET関数が理解できていませんし、
>MATCH関数のあとにある-1も意味がわかりませんが...。

というコトなので若干の説明を・・・
実は前回
>最大でも2000個です。
の部分を見逃していましたので、
数式を↓のように変更してください。

=IFERROR(SUMPRODUCT((Sheet1!B$2:B$3000)*(OFFSET(Sheet1!A$2:A$3000,,MATCH(A2,Sheet1!$1:$1,0)-1))),"")

(前回の1000の部分を3000に変更しただけです)
SUMPRODUCT関数は配列数式になってし...続きを読む

Qエクセルの列番号表示の変更

現在エクセル2010を使用していますが、旧バージョンで作った計算式が列番号”ABC…”で作成してあります。列表示を”ABC…”に変更できますか?

Aベストアンサー

列番号が1,2…となっているのでしょうか。

ファイル→オプション→数式

□R1C1参照形式を使用する

のチェックを外す→OK

で如何でしょうか?

Qアクセス レポート列のレイアウト

6月26日質問したものですアクセスで 展覧会の目録を作っています。レポートでグループごとに左から右の2列表示したい に回答してもらいました。 作成してみるとページをまたがると、またがったままつづき番号が振られています。
あたりまえなのでしょうが、想像力がなくて作成してみて納得しました。
グループごとであっても同じページの中だけで折り返す。2ページ目はその続きからという風にはできないでしょうか?
現在出来ているのは
1ページ目
―――神戸市――――—
1題名 氏名  101題名 氏名
2題名 氏名  102題名 氏名
3題名 氏名  103題名 氏名
   |      |
   |      |
50題名 氏名 100題名 氏名

2ページ目
51題名 氏名  111題名 氏名
52題名 氏名  112題名 氏名
53題名 氏名  113題名 氏名
   |      |
100題名 氏名  150題名 氏名

次のようにしたいのですが…
1ページ目
―――神戸市――――—
1題名 氏名  5題名 氏名
2題名 氏名  6題名 氏名
3題名 氏名  7題名 氏名
   |      |
   |      |
50題名 氏名 100題名 氏名

2ページ目

101題名 氏名  126題名 氏名
102題名 氏名  127題名 氏名
103題名 氏名  128題名 氏名
   |      |
   |      |
125題名 氏名 150題名 氏名
―――姫路市――――――
1題名 氏名  3題名 氏名
2題名 氏名  4題名 氏名

のようには出来ないでしょうか?無理でしょうか? すみません よろしくお願いします

6月26日質問したものですアクセスで 展覧会の目録を作っています。レポートでグループごとに左から右の2列表示したい に回答してもらいました。 作成してみるとページをまたがると、またがったままつづき番号が振られています。
あたりまえなのでしょうが、想像力がなくて作成してみて納得しました。
グループごとであっても同じページの中だけで折り返す。2ページ目はその続きからという風にはできないでしょうか?
現在出来ているのは
1ページ目
―――神戸市――――—
1題名 氏名  101題名 氏名
...続きを読む

Aベストアンサー

こちらの続きということで。
https://oshiete.goo.ne.jp/qa/9323820.html

サブレポートではできないかもしれません。

レポートに関しては、
私はあまり得意な方ではないので
こちらで 質問し直すことをお勧めします
http://hatena-access.progoo.com/bbs/

運が良ければ hatena さんから直接回答を頂けるでしょう。

あちらはマルチポストは禁止ですので
必ずこちらを閉じてから質問を。

更に、こちらの2つの質問の URLを記述しておくこと。
単に同じ質問をすると同じ回答が来る可能性もあるので。

VBA バリバリ になるかもしれないので
レポートの正確なレイアウトがあった方が話が早いかもしれません。
サンプルデータの入った DB をアップしてみることをお勧めします。
サブレポートに変更する前のものがあったらそれを。

なお、DB の「名前修正」のオプションは オフにしておくこと。
オン になっていると、レポートのデザインが一部デフォルト値に戻ったりする場合があるので。

Qエクセルで文字と数字を合わせた合計を出したい

出勤した数を出したく、よろしくお願いいたします。

例えば 7月15日 山田太郎 ○
          山田花子 ○
月日と氏名を確定して、○だけを毎日入力します。

countaで太郎さんの7月の出勤日数の合計と7月15日に何人出勤したかを出すことができました

が、
7月15日 山田太郎 ○
      山田花子 ○
      山田次郎 0.5
半日出勤の0.5という数字を入力した場合、7月15日は合計2.5人出勤というようにしたいです。

なんの関数を当てたらよいか?
できましたら、○のない日は空白(0を表示しない)ようにしたいです。

質問をするのは初めてで、上手く伝えられず、文章がおかしいかもしれませんが、本日1日悩んでおりましたが、解決できませんでした。宜しくお願いいたします。

Aベストアンサー

>半日出勤の0.5という数字を入力した場合、7月15日は合計2.5人出勤というようにしたいです。

添付した画像では、セルE2に =COUNTIF(C:C,"○")+SUMIF(C:C,"<>○") の式で・・・。
他にも色々式は作れそうですけどね^^


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

人気Q&Aランキング

おすすめ情報