エクセルで分数計算

【Excel】数値を分数表示する方法

 普通の設定だと、Excel は小数(浮動小数点数)で数値演算を実行しますが、実行結果を 分数形式 で表示させることもできます(とはいえ見た目が分数になるだけで、中身はあくまで浮動小数点数です)。セル B2 に

=1/2+1/3

と入力してみましょう。Excel の初期設定では「0.8333」というように小数で値が返ってきます。上の式を 分数 のまま計算するにはセルの書式設定を変更します。セル B2 を選択した状態で [ホーム] タブの [表示形式] から [分数] を選択します。

Excel表示形式を分数に変更
 すると、次のように 分数形式 で値が表示されます。

 Excel分数計算①

 より簡単にセルを分数表示に切り替えるショートカット入力もあります。0、半角スペース、a/b の順に、つまり「0 a/b」のように入力すると、そのセルの書式は自動的に分数表記に設定されます。たとえば、「0 1/3」のように入力すると「1/3」と表示されます。

分子と分母の桁数を設定します

 これで大成功 … と言いたいところですが、このままではちょっとまずいことになります。今度は同じセルに

=1/15+1/18

と入力してみます。すると …

 Excel分数計算②

「 1/8 」という値が表示されています。
「え? 1/15+1/18 がこんなにきれいな値になるかな!?」
と疑問に思いつつ手計算してみると 1/15+1/18 = 11/90 となります。つまり今の状態では分子・分母がともに 1 桁で表されるような分数で勝手に値を近似しているのです。こんなのは使いものにならないので、設定を変えるしかありません。セル B2 を右クリックして [セルの書式設定] を選びます。

 分子と分母を5桁まで設定②

 [分類] から [ユーザー定義] を選択し、[種類] のボックスに「?/#####」と入力して [OK] を押します。「 # 」は表示する桁数を表し、今の場合は 5 桁まで値を丸めずそのまま表示するという設定にしたのです。すると …

 分数計算の正確な値

 正確な値が表示されましたね! 分数同士の足し算では通分があるために、分母が思いの他大きくなる可能性があります。分母が 3 桁同士でも足し算すると分母が 6 桁になってしまうこともあるので、必要に応じて「 # 」の数を増やしておいてください。

文字列として分数を表記します

 数値ではなく文字列として分数を表記しようと考えて、たとえば、「3/2」と入力してしまうと、勝手に日付形式に変更されて「3月2日」のように表示されてしまいます。個人的には全く余計なお世話様的な仕様なのですが、そうなっているので仕方ありません。分数を表記したい場合は先頭にシングルクォーテーション「’」をつけます。たとえば「’3/2」と入力すると「3/2」が表示されます。

分数計算シート

 桁数を気にせずに、電卓代わりに素早く分数の加減乗除を計算できるシートの作り方も載せておきます。浮動小数点数の近似ではなく、ちゃんとした分数計算になるので、以下の方法が一番正確な計算となります。次のようなシートを用意してください。

 Excel分数計算シート

 セル C2 と C3, E2 と E3, G2 と G3 はそれぞれ結合させてあります([セルを結合して中央揃え])。$a/b$ と $c/d$ を加えると
 
\[\frac{a}{b}+\frac{c}{d}=\frac{ad+bc}{bd}\]
となります。数値によっては、このあと約分できる可能性もありますが、それもあとでちゃんと処理します。まずは上の式を計算させるために、セル F2 に

=B2*D3+D2*B3

と入力します。またセル F3 には

=B3*D3

と入力しておきましょう。

 エクセル分数計算

 すると、上図のように約分されていない分数が表示されます。次に分子と分母を最大公約数で割れば、この分数を約分できます。Excel には最大公約数を計算する GCD 関数が用意されているので、セル H2 には

=F2/GCD(F2,F3)

と入力します。また、セル H3 には

=F3/GCD(F2,F3)

と入力しておきます。

 Excel約分

 すると上図のように約分された分数が表示されます。分数の引き算は
 
\[\frac{a}{b}-\frac{c}{d}=\frac{ad-bc}{bd}\]
で計算できます。また掛け算と割り算はそれぞれ
 
\[\frac{a}{b}\frac{c}{d}=\frac{ac}{bd},\quad \frac{a/b}{c/d}=\frac{ad}{bc}\]
と計算できます。これらをまとめてシートに入力しましょう。

 Excel分数の四則演算

 それぞれのセルに入力する数式は次のようになります。

 F5:=B5*D6-D5*B6
 F6:=B6*D6
 F8:=B8*D8
 F9:=B9*D9
 F11:=B11*D12
 F12:=B12*D11

 H5:=F5/GCD(F5,F6)
 H6:=F6/GCD(F5,F6)
 H8:=F8/GCD(F8,F9)
 H9:=F9/GCD(F8,F9)
 H11:=F11/GCD(F11,F12)
 H12:=F12/GCD(F11,F12)

 これでどんな分数の計算も手早く実行できます。
 ぜひ色々な数値を入れて試してください。

【おすすめ記事】[Excel VBA] 約数表を作成する 

コメント

  1. naminami より:

    =IF(AB6=”1/5″,T14/5),IF(AB6=”1/7″,T14/7),IF(AB6=”1/10″,T14/10,T14/20)
    *ドロップダウンリストにて1/5,1/7,1/10,1/20を文字列に設定しています。どこが悪いのかわかりません。教えて下さい。お願い致します。

    • Blog Cat より:

       データの入力規則のダイアログボックスで

       ”1/5″,”1/7″,”1/10″,”1/20″

      と入力されていると思いますが、ドロップダウンリストでは「”」もデータの一部であると認識されてしまいます。代わりに、次のように、それぞれの小数の頭に「’」を添えてリストを作ってください。

       ’1/5,’1/7,’1/10,’1/20

       シングルクォーテーションを付けることによって、セルに入力したそのままの文字列として認識させることができます(「’」を付けないと 1/5 は 1月5日のように勝手に日付データ形式に変換されてしまいます)。

  2. もちとな より:

    分母が1の時
    3/1
    ではなく

    と表示したいのですが、どのようにしたら良いですか?

    • あとりえこばと より:

      セルの [表示形式] が [分数] になっているとき、たとえば、セルに「=3/1」と入力すれば「3」と表示されるはずです。計算結果が整数となる場合、たとえば「=2/3+1/3」と入力しても「1」が表示されるはずです。

      • もちとな より:

        コバト様

        表示形式 分数としましたら
        9÷10 8/9 NG   9/10 にならない
        20÷2 10   ok
        20÷3 6 2/3 △  20/3 としたい  
        ユーザー定義 ?/? としたら
        9÷10 8/9 NG   9/10 にならない
        20÷2 1/1  △   1としたい
        20÷3 3/20 ok

        良い方法有りませんか

        • あとりえこばと より:

           ユーザー定義で ##/## とすれば、「=9/10」と入力すると「9/10」、「=20/3」と入力すると「20/3」が表示されます。ただし、「=20/10」と入力した時に「2」ではなく「2/1」となってしまいます。このあたりがエクセルの標準機能の限界かもしれません。

           標準機能でできないような複雑な制御は、VBA を使ってマクロを作成します。お使いのブックをマクロ有効ブックとして保存した後で、Visual Basic Editor を起動して(このへんの手順は色々なサイトにのってます)、標準モジュールに以下のコードを貼り付けてください。

          Sub SetFormat()
            Dim myrange As Range
            Set myrange = Selection
            For Each x In myrange
              If x = Int(x) Then
                x.NumberFormatLocal = “# ?/###”
              Else
                x.NumberFormatLocal = “###/###”
              End If
            Next
          End Sub

           すでに数値が入力されている範囲を選択してマクロを実行すると、セルごとの条件に応じて書式が設定されます。