電子書籍の厳選無料作品が豊富!

A1に”2個”と入力してあります
B1に”3人”と入力してあります
そしてC1には”6個”と合計数字を出す事はできますでしょうか

基本的にはC1=A1*B1なのですが単位まで入力されている為数式に組み込めないのです

単にA1、B1の書式設定→ユーザー設定で”個”や、”人”を最後に付け加えれば
数値のみを入力すれば単位が表示され、単にC1=A1*B1と数式を入力すればいいのはわかっているのですが
A1とB1には単位が様々なのです

決まっているのはセル内に入力された文字列の頭は数字で(何桁かは決まっていない)
それ以降の文字列は漢字であったりカタカナであったり英語だったりします
頭の数字のみを数値として抽出し数式に組み込む事は可能でしょうか

お分かりの方いらっしゃいましたらご伝授宜しくお願い致します

A 回答 (8件)

No.7です。

何度もすみませんが、一部、訂正します。C列の式に「+0」などを加えてください。

=substitute(a1,b1,)+0
あるいは
=substitute(a1,b1,)*1

「+0」などにより、文字列ではなく数値である数字となります。
    • good
    • 0

最もお手軽だと思える方法は、こうです。



(1)
数字と単位の記入されている列をコピーし、編集用の列として別の箇所に挿入します。挿入した列を選択し、ホーム>検索と選択>置換ウィザードを起動。0、1、2…9の合計10回、置換することにより、数字を全て削除します。例えば「7」→「」(未入力)というふうに置換していきます。(削除漏れの有無を確認したければ、オートフィルタで見るのが簡単でしょう。)数字が全て除かれたら、その列には単位のみが残っているはず。

(2)
コピー元をA列、数字を削除した列をB列としましょう。次の式をC・D列に入力。

C列 =substitute(a1,b1,)
D列 =c1&b1

数値と単位というふうに、異なる属性のデータは、別のセルに分かれていたほうが便利なことが多いです。単位を記入するための列を始めから別にもうけておくなどして、なるべく数値は数値のみでセルに入力されている状態にしておくのがお勧めです。後でいろんな分析・加工がしやすくなります。もっと言えば、表計算では、なるべく文字列よりも、数値でデータを扱いたいものです。
    • good
    • 0

>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) の式を入れます(掛け算の関数式)
「エクセルで、単位まで入力したセルから値の」の回答画像6
    • good
    • 0

回答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))))))&"個"
    • good
    • 0

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))}
    • good
    • 0

一例です。


=IF(COUNTA(A1:B1)=2,LOOKUP(10^10,LEFT(A1,ROW(A1:A15))*1)*LOOKUP(10^10,LEFT(B1,ROW(A1:A15))*1),"")
    • good
    • 0

力技ですが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))))))))&"個"

この回答への補足

あ、ありがとうございます!
こんな数式すごいです
それで試してみたのですが、数式をC1にコピペしてみたのですが、
数式が正しくないと出てしまいます
数式の真ん中あたりの”・・・・SNUMBER(LEFT(A1,2)*1)・・・・”の
LEFTが黒く?訂正を?求められてしまっております

自力で修正できるすべもなく。。。

お分かりのようでしたらお教え頂けますと幸いです
どうぞ宜しくお願い致します

補足日時:2012/04/20 09:44
    • good
    • 0

「vba 数字のみ抽出」で検索すると色々な例が見つかります。

説明するよりそれらの例をご覧になった方が判るかと思います。
下記などを参照してみて下さい。
http://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vb …
http://www.relief.jp/itnote/archives/003351.php
    • good
    • 0

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