• ベストアンサー

cm.mm.mなどが入力された計算式

A    b 1 12cm 2 2 13.4m 3 3 200m 4 などの桁数も単位もばらばらなセルを計算するためにはどうしたら簡単に計算できますでしょうか? ↓のような式をたてましたが、なかなか大変で... =IF(RIGHT(A1,2)="cm",VALUE(LEFT(A1,FIND("cm",A1)-1))*B1,IF(RIGHT(A1,2)="m",VALUE(LEFT(A1,FIND("m",A1)-1))*B1,VALUE(LEFT(A1,FIND("mm",A1)-1))*B1)) よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

ほぼ同時に回答が出てしまいましたが、 #3さんと同じ内容ですね。 私の方は、VALUEを使用しない方法です。 IF文も消してみました。 =LEFT(A1,LEN(A1)-2+ISNUMBER(LEFT(RIGHT(A1,2),1)*1))*B1 あと、単位を付けるなら =LEFT(A1,LEN(A1)-2+ISNUMBER(LEFT(RIGHT(A1,2),1)*1))*B1&RIGHT(A1,2-ISNUMBER(LEFT(RIGHT(A1,2),1)*1)) です。(全て同じ単位に統一するならちょっと面倒です。)

lionmayumi
質問者

お礼

ありがとうございます。そーですよね。後ろに単位も必要ですね。 なかなか人の作った表を使うのは大変です(-_-;)

その他の回答 (6)

回答No.7

何度も何度もすみません。 もう1つ、入力のしやすさというのもあると思います。 一覧表を作る分にはそれ程問題もないと思いますが、 請求書や、明細書などを作成する時には、どうしても 項目がばらばらになってしまいます。 そんな時は、入力シートと印刷シートを分けて作るというのも 1つの方法だと思います。 他にも注意すべき事は、いろいろあるとは思いますが、 何事も経験でしょう。今回の質問がいい例です。 私もここの回答を何度もしていますが、昔した回答を見て、 今なら、もっといい回答が出来たのに!と思う事も少なくありません。 (今回の回答も、後から見たらもっといい回答が・・・と思うかもしれません。) 話がそれましたが、頑張ってください。

lionmayumi
質問者

お礼

ありがとうございます。入力シートと別に(^_-)-☆ いろんな考え方があるのですね~ がんばります。

回答No.6

>どのようにしたら、簡単に計算も出でき、 きれいな表になりますでしょうか??? 計算をする前提なら、単位は分けて入力した方がいいと思います。 見やすい表という事だと、やっぱり同列にある単位は、 統一した方が、(cmならcmに)見やすいでしょう。 (統一できない事もあるでしょうが) 統一できれば、セルの書式設定で、 #,###"m"などの書き方をして、数字のみ入力すればいい という方法も取れます。

回答No.5

#2,4です。 私のは、ちょっと裏技的(全然裏技じゃないですけど)で、 ="123"*1 = 123 文字列の数値を計算しようとすると、数値に変換してくれます。 =TRUE*1 = 1 =FALSE*1 = 0 TRUEやFALSEを計算しようとすると、TRUE=1,FALSE=0に変換してくれます。 覚えておくと便利ですよ!

lionmayumi
質問者

お礼

はいはい(^_-)-☆YESが1で、NOが0ですね。 なんとなく理解できそうです。 ありがとうございます。

lionmayumi
質問者

補足

で、これから自分が表を作成するときには (全く新しい表を作るとしたら) どのようにしたら、簡単に計算も出でき、 きれいな表になりますでしょうか??? 数字と単位は別セルに入力するといいのでしょうかね。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.3

あーはいはい。ISNUMBER関数が有効に機能してなかったみたいですね(^^; =VALUE(LEFT(A1,LEN(A1)-IF(ISNUMBER(VALUE(LEFT(RIGHT(A1,2),1))),1,2))) * B1 で、どうでしょ?

lionmayumi
質問者

お礼

ありがとうがざいます。できました。m(__)m

回答No.2

#1さんとほとんど同じになってしまいましたが、 =LEFT(A1,LEN(A1)-IF(ISNUMBER(LEFT(RIGHT(A1,2),1)*1),1,2))*B1 ではどうでしょうか? ISNUMBERが文字列の数値を、数値と認識しないみたいです。 (EXCEL2000)

lionmayumi
質問者

お礼

(^^♪ありがとうございます。できました。 で、ISNUMBER関数の使い方がいまいちわからないのですが、FALSEとTRUEを返すものにどうして1とかけると1とか2とか???返ってくるのでしょうか? すいません。 LEFT(RIGHT(A1,2),1ってことはcが抽出されて これに1をかけると???

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

=VALUE(LEFT(A1,LEN(A1)-IF(ISNUMBER(LEFT(RIGHT(A1,2),1)),1,2))) * B1 と書けば、同様の結果になるかと思います。 (右から2桁目が数値か否かで、切り出す桁数を変えています。) 同じような計算が頻発するようでしたら、例えば、C列を一時的な計算用として、 =VALUE(LEFT(A1,LEN(A1)-IF(ISNUMBER(LEFT(RIGHT(A1,2),1)),1,2))) とか、 =VALUE(LEFT(A1,LEN($A1)-IF(ISNUMBER(LEFT(RIGHT(A1,2),1)),1,2))) * IF(RIGHT(A1,2)="cm",10,IF(RIGHT(A1,2)="mm",1,1000)) とかの式を入れておいて、残りの計算はC列の値を使用するようにすれば、より分かりやすく作れるのではないかと思います。

lionmayumi
質問者

お礼

ありがとうございます。 一番上の方法をやってみました。 なんとかできました。でも、小数点以下がなくなりますね。

関連するQ&A