• ベストアンサー

分数の計算

商品の月別故障件数と故障原因の一部(外部損傷)の件数を分数で入力しています。 4月  5月  6月  7月  … 合計 8/25  35/95 24/57 33/81   100/258 外部故障件数/全故障件数となっています。 A1に4月 B1に5月 C1に6月というように月が入力され、 A2、B2、C2…に件数を入力しています。 12ヶ月分の外部故障件数と全故障件数を足していきたいのですが、 良い方法がありましたら教えていただけますでしょうか。 分数は『(スペース)8/25』と入力しています。 オートSUMやPRODUCTを使用して計算してみたのですが、『0』と表示されてしまいます。 ※上司が作成した表なので、表示形式(分数)は変えられません。 宜しくお願い致します。

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

  • ベストアンサー
noname#262398
noname#262398
回答No.6

=SUMPRODUCT(LEFT(A2:L2,FIND("/",A2:L2)-1)*1)&"/"&SUMPRODUCT(RIGHT(A2:L2,LEN(A2:L2)-FIND("/",A2:L2))*1)

LOMO800
質問者

お礼

ありがとうございます。 希望通りの結果が出せました。

その他の回答 (5)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 #4さんにかぶりますが、Excel上で、分数を入れて、それをテキストと扱い、別々に計算するという考え方自体に問題がありませんか? その分数自体がひじょうに不安定な状態として置かれています。表示形式を文字列で置かない限りは、分数として変化する可能性があります。 表示形式のままで計算させることは、私なら、やむを得ない場合は、VBAのユーザー定義関数を作りますが、そんな高度なことをしなければならない、っていうのは、どこかに標準的ではない使い方が潜んでいるからだと思います。 例えば、片方のセル幅を縮めて 左のセルに、書式-ユーザー定義 ###!/ 右のセルは、配置-横位置 左寄せ というようにすれば、後は、配列数式で、それぞれのセルの合計が出せます。 =SUMPRODUCT((MOD(COLUMN(B1:J1),2)=1)*B1:J1) =SUMPRODUCT((MOD(COLUMN(B1:J1),2)=0)*B1:J1) とすればよいわけです。 枠線自体は、印刷時には残らないのですから、別に困らないと思います。 >※上司が作成した表なので、表示形式(分数)は変えられません。 それは、いくらなんでも。会社の中での、PCの使いこなしは、なるべく自分の取り扱える範囲内でしたほうがよいです。ご自分にできないものは、出来ないとしないと、次から次に、無理難題が降りかかってきてしまいます。

LOMO800
質問者

お礼

回答ありがとうございます。 こちらに質問する前に上司に相談をしています。 ちゃんと出来ないことは出来ないと伝えていますが、それでもやらなくてはならない場合もあるのです。 質問して回答が得られれば自分のスキルUPにもなると思いましたし、実際に幾通りかの方法があることがわかりました。

  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.4

一番良い方法は、上司と相談し表示形式を変えることだと思います。 ましてや、作った本人以外の人が使うのですから。

LOMO800
質問者

お礼

Trick--o--さんのご意見、ごもっとだと思います。 ですが、こちらに質問させていただく前に相談しているのです。 上司がどうしても自分で作成した形式を変えたくないとのことで、それでは合計の計算式を教えてくださいと正直に私のスキルでは出来ないことも伝えています。 結果として、『電卓で計算して入力すればいいだろ』との回答がありました。 色々な意見もあるかと思いますが、質問する側にも事情があり解決方法がないかと質問しているのです。 計算式がないのならそれはそれで仕方がないことですが、何人かの方々が回答していただいているのでその方法で試しています。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

外部故障件数=SUMPRODUCT(MID(A2:D2,2,FIND("/",A2:D2)-2)*1) 全故障件数=SUMPRODUCT(MID(A2:D2,FIND("/",A2:D2)+1,10)*1) 範囲は実際のものに合わせてください。

LOMO800
質問者

お礼

回答ありがとうございます。 ただ、この式ですと外部故障件数の式と全故障件数の式を別のセルに入力することになりますよね? 1つのセル内に入力するにはどのようにすれば良いのでしょうか。

  • s_yoshi_6
  • ベストアンサー率73% (1113/1519)
回答No.2

A2:L2に4月から3月までのデータが入力されているとして、M2に =" "&SUM(IF(ISERROR(FIND("/",A2:L2,1)),0,VALUE(LEFT(A2:L2,FIND("/",A2:L2,1)-1))))&"/"&SUM(IF(ISERROR(FIND("/",A2:L2,1)),0,VALUE(RIGHT(A2:L2,LEN(A2:L2)-FIND("/",A2:L2,1))))) と入力して、ShiftキーとCtrlキーを同時に押しながらEnterキーで確定させてみてください(配列数式となり、式の両端に{  }が付きます)。 なお、式の最初の「" "&」は、A2:L2と書式を合わせるためにスペースを入れたもので、不要ならば消しても構いません。 また、「IF(ISERROR(FIND("/",A2:L2,1)),0,…」は、データが空欄(「/」を含まない)の場合に出るエラーを回避するためのものです。

LOMO800
質問者

補足

ありがとうございます。 早速試してみたのですが、『#N/A』のエラー表示が出てしまいます。 回答をそのままコピーし、ShiftキーとCtrlキーを同時に押しながらEnterキーで確定をしたのですが回避するにはどうすればよいのでしょうか。

  • paruru
  • ベストアンサー率37% (154/407)
回答No.1

A3に=LEFT(A2,FIND("/",A2)-1)*1で外部故障件数 A4に=RIGHT(A2,LEN(A2)-FIND("/",A2))*1で全故障件数 になりますので、あとはそれぞれB3、C3…とコピーし SUMしたらいかがでしょうか。

LOMO800
質問者

お礼

ありがとうございます。 ただ、私の説明不足で申し訳ないのですが、商品が100個以上ある為、計算の為に行の追加(A3、A4)ができません。 合計セル1つの中で計算させたいのです。 しかし、このようなやり方もある事は、今後の仕事にも役立つと思いますので教えていただいて良かったです。

関連するQ&A