• 締切済み

エクセルで、単位まで入力したセルから値のみを抽出

A1に”2個”と入力してあります B1に”3人”と入力してあります そしてC1には”6個”と合計数字を出す事はできますでしょうか 基本的にはC1=A1*B1なのですが単位まで入力されている為数式に組み込めないのです 単にA1、B1の書式設定→ユーザー設定で”個”や、”人”を最後に付け加えれば 数値のみを入力すれば単位が表示され、単にC1=A1*B1と数式を入力すればいいのはわかっているのですが A1とB1には単位が様々なのです 決まっているのはセル内に入力された文字列の頭は数字で(何桁かは決まっていない) それ以降の文字列は漢字であったりカタカナであったり英語だったりします 頭の数字のみを数値として抽出し数式に組み込む事は可能でしょうか お分かりの方いらっしゃいましたらご伝授宜しくお願い致します

みんなの回答

回答No.8

No.7です。何度もすみませんが、一部、訂正します。C列の式に「+0」などを加えてください。 =substitute(a1,b1,)+0 あるいは =substitute(a1,b1,)*1 「+0」などにより、文字列ではなく数値である数字となります。

回答No.7

最もお手軽だと思える方法は、こうです。 (1) 数字と単位の記入されている列をコピーし、編集用の列として別の箇所に挿入します。挿入した列を選択し、ホーム>検索と選択>置換ウィザードを起動。0、1、2…9の合計10回、置換することにより、数字を全て削除します。例えば「7」→「」(未入力)というふうに置換していきます。(削除漏れの有無を確認したければ、オートフィルタで見るのが簡単でしょう。)数字が全て除かれたら、その列には単位のみが残っているはず。 (2) コピー元をA列、数字を削除した列をB列としましょう。次の式をC・D列に入力。 C列 =substitute(a1,b1,) D列 =c1&b1 数値と単位というふうに、異なる属性のデータは、別のセルに分かれていたほうが便利なことが多いです。単位を記入するための列を始めから別にもうけておくなどして、なるべく数値は数値のみでセルに入力されている状態にしておくのがお勧めです。後でいろんな分析・加工がしやすくなります。もっと言えば、表計算では、なるべく文字列よりも、数値でデータを扱いたいものです。

回答No.6

>A1とB1には単位が様々なのです 取り敢えず「個」「人」「名」という単位を使った場合の方法ですが、配列定数を式の中に入れて式を組み立て、一応4桁分の数値を返すような式です 添付画像をサンプルとした上で次の式を入れます セルA2 =IF(OR(MID(A1,2,1)={"個","人","名"}),LEFT(A1,1),IF(OR(MID(A1,3,1)={"個","人","名"}),LEFT(A1,2),IF(OR(MID(A1,4,1)={"個","人","名"}),LEFT(A1,3),LEFT(A1,4))))*1 A2に入れた式をセルD2までコピーします セルE2 =PRODUCT(A2:D2) の式を入れます(掛け算の関数式)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

回答No2です。エクセル2010で対応することはできますが以前のバージョンでしたら例えば6ケタまでの数値ができるとして次の式に変更してください。 =IF(ISNUMBER(LEFT(A1,6)*1),LEFT(A1,6),IF(ISNUMBER(LEFT(A1,5)*1),LEFT(A1,5),IF(ISNUMBER(LEFT(A1,4)*1),LEFT(A1,4),IF(ISNUMBER(LEFT(A1,3)*1),LEFT(A1,3),IF(ISNUMBER(LEFT(A1,2)*1),LEFT(A1,2),IF(ISNUMBER(LEFT(A1,1)*1),LEFT(A1,1),0))))))*IF(ISNUMBER(LEFT(B1,6)*1),LEFT(B1,6),IF(ISNUMBER(LEFT(B1,5)*1),LEFT(B1,5),IF(ISNUMBER(LEFT(B1,4)*1),LEFT(B1,4),IF(ISNUMBER(LEFT(B1,3)*1),LEFT(B1,3),IF(ISNUMBER(LEFT(B1,2)*1),LEFT(B1,2),IF(ISNUMBER(LEFT(B1,1)*1),LEFT(B1,1),0))))))&"個"

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.4

C1に次の式でいいのではないか。 ただし、配列数式なので、Ctrl+Shift+Enterを押して前後に{ }がつく。 22桁まで対応している。「$A$22」の22を増やせばいくつでも。 {=(LEFT(A1,MATCH(FALSE,ISNUMBER(MID(A1,ROW($A$1:$A$22),1)*1),0)-1))*(LEFT(B1,MATCH(FALSE,ISNUMBER(MID(B1,ROW($A$1:$A$22),1)*1),0)-1))}

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

一例です。 =IF(COUNTA(A1:B1)=2,LOOKUP(10^10,LEFT(A1,ROW(A1:A15))*1)*LOOKUP(10^10,LEFT(B1,ROW(A1:A15))*1),"")

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

力技ですが8ケタまでの数値でしたらC1セルには次の式を入力します。 =IF(ISNUMBER(LEFT(A1,8)*1),LEFT(A1,8),IF(ISNUMBER(LEFT(A1,7)*1),LEFT(A1,7),IF(ISNUMBER(LEFT(A1,6)*1),LEFT(A1,6),IF(ISNUMBER(LEFT(A1,5)*1),LEFT(A1,5),IF(ISNUMBER(LEFT(A1,4)*1),LEFT(A1,4),IF(ISNUMBER(LEFT(A1,3)*1),LEFT(A1,3),IF(ISNUMBER(LEFT(A1,2)*1),LEFT(A1,2),IF(ISNUMBER(LEFT(A1,1)*1),LEFT(A1,1),0))))))))*IF(ISNUMBER(LEFT(B1,8)*1),LEFT(B1,8),IF(ISNUMBER(LEFT(B1,8)*1),LEFT(B1,7),IF(ISNUMBER(LEFT(B1,6)*1),LEFT(B1,6),IF(ISNUMBER(LEFT(B1,5)*1),LEFT(B1,5),IF(ISNUMBER(LEFT(B1,4)*1),LEFT(B1,4),IF(ISNUMBER(LEFT(B1,3)*1),LEFT(B1,3),IF(ISNUMBER(LEFT(B1,2)*1),LEFT(B1,2),IF(ISNUMBER(LEFT(B1,1)*1),LEFT(B1,1),0))))))))&"個"

moongush
質問者

補足

あ、ありがとうございます! こんな数式すごいです それで試してみたのですが、数式をC1にコピペしてみたのですが、 数式が正しくないと出てしまいます 数式の真ん中あたりの”・・・・SNUMBER(LEFT(A1,2)*1)・・・・”の LEFTが黒く?訂正を?求められてしまっております 自力で修正できるすべもなく。。。 お分かりのようでしたらお教え頂けますと幸いです どうぞ宜しくお願い致します

  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.1

「vba 数字のみ抽出」で検索すると色々な例が見つかります。説明するよりそれらの例をご覧になった方が判るかと思います。 下記などを参照してみて下さい。 http://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_cell_suuji.html http://www.relief.jp/itnote/archives/003351.php

関連するQ&A

  • エクセルで、入力のないセルを無視した計算

    おせわになります。      A  B  C   1  3     5   2  4     3   3  2     1 SUM 9  0  9 → 平均 6 上のような、シートがあり、合計、平均が、に数式が設定されており、A,B,C列に数値を入力すると自動で計算されますが、B列に数値を入れない場合があり、このとき、合計に0を返すため、平均値が間違った値になります。これを回避する方法を教えてください。 基本的には、合計の数式をなんとかする事になると思うのですが。。。

  • Excelセル値入力

    セルC2の合計がF1の数値と同じになるようにセルB4に数式を入力したいのですが。C列の数式はD列に表示しています。尚、F1の値は都度手入力で変更されます。数式を何度か入れたのですが数値がちぐはぐ又、循環になりなりうまくいきません。B4に入力する数式をどうかよろしくお願いします。

  • エクセルで入力した数値によって自動で入力される数式?

    エクセルで台帳を作っているのですが、 別の列のセルに入力した数値によって、 指定したセルに自動でA,B,C等と入力されるようにするにはどのように設定すればいいのでしょうか。 A列に0~1.1なら B列に A 1.2~2.9なら B 3.0以上なら C のように数字の範囲によってABCと表示されるようにしたいのです。 エクセルの数式等は簡単なものしかわからず、どのように調べたらよいかもわかりません。教えていただけたら助かります。

  • Excel 指定した値を反映するようにしたいのですが。

    A列に 文字列 B列に 数値 C列に 数値 D列に 指定した文字 E列に 文字に当てはまる数字を反映 F列に 文字に当てはまる数字を反映 A列      B列      C列 1 川越    21.2     800 2 鶴ヶ島   29.6     1050 3 東松山   39.4     1400 4 嵐山小山  47.4     1600 5 花園    56.1     1800 例えばですが、上記の様になってまして、 D列に、川越と入力すると E列に「21.2」F列に「800」 といった数字を自動的に入力するようにしたいです。 花園と入力した場合は、「56.1」「1800」といった具合です。 このような事がエクセルでできるのでしょうか^^; また私のエクセルのレベルは、関数をちょこっと触れる程度です。 恐れ入りますがよろしくお願いします。

  • エクセルで数式が入ったセルを空白にしたい。

    エクセルで数式が入ったセルを空白にしたい。 A1に"100"と言う数字、 B1はA1と同じ数値を自動入力させているので"=A1"という式が 入ってます。このB1の数式をB2からB10までコピーしているのでA2からA10に入力した数値が 反映されます。しかしA列にはいつも数値が入力されているわけではなく空白にする場合もあります。 でもB列の数式はコピーされてるので"0"が残ります。 そこですべて入力終了後にこのB列に自動で入力された"0"を削除したいのですが 置換で"0"にしても入ってるのは数値じゃなくて数式なので該当なしになるし、 数式も列ごとに移動されてるので一定ではありません。 この"0"を一括で削除するにはどうすればいいでしょうか? 入力範囲は500行まで及ぶのでいちいち"0"を探して削除するのが大変です。 分かりにくい質問ですいませんがよろしくお願いします。

  • エクセルで数式が入ったセルを空白にしたい。

    エクセルで数式が入ったセルを空白にしたい。 A1に"100"と言う数字、 B1はA1と同じ数値を自動入力させているので"=A1"という式が 入ってます。このB1の数式をB2からB10までコピーしているのでA2からA10に入力した数値が 反映されます。しかしA列にはいつも数値が入力されているわけではなく空白にする場合もあります。 でもB列の数式はコピーされてるので"0"が残ります。 そこですべて入力終了後にこのB列に自動で入力された"0"を削除したいのですが 置換で"0"にしても入ってるのは数値じゃなくて数式なので該当なしになるし、 数式も列ごとに移動されてるので一定ではありません。 この"0"を一括で削除するにはどうすればいいでしょうか? 入力範囲は500行まで及ぶのでいちいち"0"を探して削除するのが大変です。 分かりにくい質問ですいませんがよろしくお願いします。

  • Excelセル関数入力

    セルC2の合計がF1の数値と同じになるようにセルB4に数式を入力したいのですが。D列が数式となります。尚、F1の値は都度手入力で変更されます。数式を何度か入れたのですが数値がちぐはぐになりうまくいきません。B4に入力する関数もしくは何か良い方法はないでしょうかよろしくお願いします。

  • Excelで、特定のセルに入力があった場合、というようなとき

    言葉足らずのところがあれば申し訳ありません。 (1)  A1 に、なんらかの入力をした場合(文字、数字等)    A2 の値を A3にも反映する    という数式を作りたいのですが    こういうことはできるのでしょうか。    たとえば    A1 に 175R を入力した場合    A2 = A3    A1 に 「教えて!goo」 を入力した場合    A2 = A3    A1 になにも入力しない場合    A2 ≠ A3(表示なし)     もしくは    A2 ≠ A3(特定の値)     というようにしたいのですが 2  B1 に文字列を入力した場合    その文字列に、ある特定の文字が含まれている場合    B2 の値を B3に反映する ということは可能でしょうか    たとえば         B1 と C1 にそれぞれ    B1「株式会社 田中建設」 C1「第2営業部 田中さん」    と入力したときに      「田中」が含まれているから     B2 = B3   C2 = C3     もしも     B1 「鈴木ファイナンス」 C1 「フロント 大竹さん」     と入力すると     「田中」が含まれていないため     B2 ≠ B3(表示なし)     C2 ≠ C3(特定の値) と、このように表示させることは可能でしょうか。 言葉足らないところがありましたら、補足させていただきます。    

  • A1かA2セルどちらかに値を入力⇒C1セルに色付け

    A1セルかA2セルのどちらかに、何か数値なり文字なりを入力すると、C1セルに色が付くようにしたいのですが、条件付書式設定に入力する数式はどのようなものになりますでしょうか? A1セルに何か文字を入力するとC1セルに色が付くようにする方法はネットで調べてわかったのですが、「A1かA2のどちらか」のように複数セルの場合の数式がわかりません。 また、「A1かA2かA3」のようにセルが増えても数式の作り方は同じで宜しいのでしょうか? どうぞよろしくお願い致します。

  • エクセルのセルに入力制限をかけたい(2)

    昨日エクセルのセルに入力制限をかけたい旨の質問をしました。 早速回答をいただき、下記のような制限は解決いたしました。 A列で『2』以外を選択(『1』と『3』と『4』を選択)した場合は、B列で何も入力できなくなる設定。 A列で『2』を選択すると、B列には文字が入力できるようにする設定。 (選択肢)    (文字)   A列       B列         4   2     マイクロソフト   3   1 ★今度はA列で『2』か『3』を入力したセルのB列に文字を入力したいのですが・・・。 (選択肢)    (文字)   A列       B列         4   2     マイクロソフト   3     マイクロソフト   1 昨日の回答をヒントに、数式の窓に区切りをカンマやコロン、セミコロン、カッコでくくる・・・等してみましたがダメでした。 入力規制では、複数の規制はかけられないのでしょうか? お分かりの方、よろしくお願いいたします。

専門家に質問してみよう