2016年5月21日土曜日

【Googleスプレッドシートでランダムな順番を表示】

041.【ランダムに並び替え】で紹介したように、ランダムに並び替えるのではなく、ランダムな順番を表示したい場合は、RAND関数RANK関数 を組み合わせて使うのが便利です。RANK関数 は、順序に従って範囲内の数値を並べ替えたとき、数値が何番目に位置するかを返します。例えば、041.【ランダムに並び替え】のサンプルのD列に、発表順を追加した場合は、D2セルに以下の式を入力します。

D2セル:=RANK(C2,C$2:C$5,1)

第1引数:数値
第2引数:範囲 ※コピペした時にずれないように行番号に $ をつけています
第3引数:順序(0 - 降順、1 - 昇順)


D2セルをコピーして、D3セルからD5セルにペーストすれば完成です。ちなみに、再計算したい場合は、「F9」ボタンを押します。




Googleスプレッドシートでも RAND関数RANK関数 を使って同じことができます。

D2セル:=RANK(C2,C$2:C$5,1)

第1引数:数値
第2引数:範囲 ※コピペした時にずれないように行番号に $ をつけています
第3引数:順序(0 - 降順、1 - 昇順)


D2セルをコピーして、D3セルからD5セルにペーストすれば完成です。ちなみに、再計算したい場合は、「F9」ではなく「F5」ボタンを押します。


ではでは。


2016年5月20日金曜日

【Googleスプレッドシートでランダムに並び替え】

講習会で講師をしていると、発表順を決めたり、グループ分けをする時に、受講者名簿をランダムに並べ替えられたら便利だなと思うことがよくあります。それを一番手軽に行えるのは、乱数を発生させる RAND関数 を使う方法でしょう。以下のようなExcelの名簿があった場合、C列に以下の式を入力します。

C2セル:=RAND()


RAND関数は、0以上で1より小さい乱数を発生させます。C2セルをコピーして、C3セルからC5セルにペーストすれば、各セルで乱数が発生しているのが分かります。


C1セルを選択します。


メニューから「Home」→「並べ替えとフィルター」→「フィルター」と進んで、フィルターを設定します。


C1セルの▼をクリックして「昇順」を選択します。


すると、名簿が並び替わります。しかし、何か変です。乱数順に並ぶのであれば、社員番号が4→3→2→1の順に並ぶはずですが、そうなっていません。しかし、これは誤動作ではありません。乱数は、ワークシートが再計算されるたびに、新しい値が返されるため、乱数順に並び替えると、その直後には、もう新しい乱数が表示されているのです。


その証拠に、C1セルの▼をクリックして、もう一度「昇順」を選択してみます。


すると、社員番号が4→3→2→1の順に並びましたね。ただし、乱数も新しい値に更新されています。




Googleスプレッドシートでも同じ方法が使えます。C列に RAND関数 を使った式を入力します。

C2セル:=RAND()


RAND関数は、0以上で1より小さい乱数を発生させます。C2セルをコピーして、C3セルからC5セルにペーストすれば、各セルで乱数が発生しているのが分かります。


C1セルを選択します。


メニューから「データ」→「フィルタ」と進んで、フィルタを設定します。


C1セルの▼をクリックして「A→Zで並べ替え」を選択します。


すると、名簿が並び替わります。乱数順に並ぶのであれば、社員番号が3→4→1→2の順に並ぶはずです。しかし、Excelの時と同じように、シートが再計算されるたびに、乱数には新しい値が返されるため、乱数順に並び替えると、その直後には、もう新しい乱数が表示されているのです。


その証拠に、C1セルの▼をクリックして、もう一度「A→Zで並べ替え」を選択してみます。


すると、社員番号が3→4→1→2の順に並び、乱数も新しい値に更新されています。


ではでは。


2016年5月19日木曜日

【Googleスプレッドシートで切り上げの落とし穴】

039.【切り捨ての落とし穴】で紹介したように、「切り捨て」に落とし穴があるのなら、「切り上げ」にだって落とし穴はあります。切り上げの計算には、通常、ROUNDUP関数 を使います。例えば、A2セルの値「1.5」を小数点第1位で切り上げると、結果は「2」になります。

B2セル:=ROUNDUP(A2,0)  ⇒ 2


B2セルをB3セルにコピーして、A3セルの値「-1.5」を小数点第1位で切り上げると、 結果は「-2」になります。

B3セル:=ROUNDUP(A3,0) ⇒ -2


一方、CEILING関数 を使って計算することも可能です。A2セルの値「1.5」を小数点第1位で切り上げると、結果は ROUNDUP関数 と同じ「2」になります。

C2セル:=CEILING(A2)  ⇒ 2


しかし、C2セルをC3セルにコピーして、A3セルの値「-1.5」を小数点第1位で切り上げると、結果は「-1」になって ROUNDUP関数 の結果である「-2」とは異なります。

C3セル:=CEILING(A3)  ⇒ -1



つまり、今回の使用例で言えば、ROUNDUP関数 は、元の値の整数部を返す(小数点以下を取り去る)計算であり、CEILING関数 は、元の値より小さくならない最小の整数値を返す計算なのです。よって、切り上げの計算をする時も、切り捨ての時と同じように、負の数をどう扱うかによって使用する関数が異なります。

ではでは。


2016年5月18日水曜日

【Googleスプレッドシートで切り捨ての落とし穴】

切り捨て」の計算には、038.【消費税計算の落とし穴】でも紹介したように、通常、ROUNDDOWN関数 を使います。例えば、A2セルの値「1.5」を小数点第1位で切り捨てると、結果は「1」になります。

B2セル:=ROUNDDWON(A2,0)  ⇒ 1


B2セルをB3セルにコピーして、A3セルの値「-1.5」を小数点第1位で切り捨てると、結果は「-1」になります。

B3セル:=ROUNDDWON(A3,0)  ⇒ -1


一方、FLOOR関数 を使って計算することも可能です。A2セルの値「1.5」を小数点第1位で切り下げると、結果は ROUNDDOWN関数 と同じ「1」になります。(ROWNDDOWN関数の「切り捨て」と区別するために、便宜上「切り下げ」と呼んでいます)

C2セル:=FLOOR(A2)  ⇒ 1


しかし、C2セルをC3セルにコピーして、A3セルの値「-1.5」を小数点第1位で切り下げると、結果は「-2」になって ROUNDDOWN関数 の結果である「-1」とは異なります。

C3セル:=FLOOR(A3)  ⇒ -2


つまり、今回の使用例で言えば、ROUNDDOWN関数 は、元の値の整数部を返す(小数点以下を取り去る)計算であり、FLOOR関数 は、元の値を越えない最大の整数値を返す計算なのです。よって、切り捨ての計算をする時は、負の数をどう扱うかによって使用する関数が異なりますので気をつけましょう。

ではでは。



2016年5月17日火曜日

【Googleスプレッドシートで消費税計算の落とし穴】

消費税の計算にも意外な落とし穴があります。例えば、大手コンビニで売られているメロンパンには、こんな値札が付いています。


このメロンパンの消費税をスプレッドシートで計算する場合、税込価格×8÷108 を計算してから、ROUNDDOWN関数 を使って小数点以下を切り捨てるのが普通だと思います。

C2セル:=ROUNDDOWN(B2*8/108) ⇒ 7


よって、税込価格100円の商品を3つ買った時の消費税額は 21円 になるはずです。

C2セル:=ROUNDDOWN(B2*8/108) ⇒ 7
C3セル:=ROUNDDOWN(B3*8/108) ⇒ 7
C4セル:=ROUNDDOWN(B4*8/108) ⇒ 7
C5セル:=SUM(C2:C4) ⇒ 21


しかし、実際にコンビニでもらったレシートには 22円 と表示されていました。不思議ですね。


なぜなら、消費税の計算方法には2通りありまして、一つは、個々の商品について計算した消費税額を積み上げる方法、もう一つは、商品の合計額に対して消費税計算を行う方法です。国税庁のホームページを読むと、商品の合計額に対して消費税計算を行う方法が基本であり、ある一定の条件下でのみ、個々に計算した消費税額を積み上げる方法を認めているようです。


つまり、国税庁が推している方法では、個々に計算した消費税額を表示すると混乱を招く可能性があるので、以下のような計算方法をおススメします。

C5セル:=ROUNDDOWN(B5*8/108)


 ではでは。

2016年5月16日月曜日

【Googleスプレッドシートで四捨五入の落とし穴】

四捨五入」をする一番簡単な方法は「表示形式」で小数点以下の表示桁数を減らすことですが、これには意外な落とし穴があります。例えば、30%OFFの価格を計算しているExcelファイルがあった場合、まず、表示桁数を減らしたい範囲を選択します。


メニューから「Home」→「数値」→「小数点以下の表示桁数を減らす」と進みます。


すると、四捨五入された値が表示されます。しかしながら、69+69+69=207 という結果になるはずなのに、合計が 208 と表示されており、表示上の計算結果が合っていません。表示形式での四捨五入は、見た目が四捨五入されるだけで、元のデータは変更されていないため、こういうことが起きるのです。


そこで登場するのが ROUND関数 です。B2セルの30%OFFの価格を、小数第1位で四捨五入して整数で表示したい場合は、以下のようにします。

=ROUND(B2*0.7, 0)

第1引数:数値
第2引数:四捨五入後の小数点以下の桁数


C2セルをC3セルとC4セルにコピーすると、計算結果が合いましたね。




Googleスプレッドシートでも、表示形式で四捨五入する場合は注意が必要です。まず、表示桁数を減らしたい範囲を選択して、「小数点以下の桁数を減らす」ボタンをクリックします。


すると、表示桁数が減って、表示上の計算結果が合わなくなります。


そこで、ROUND関数 を使って小数第1位で四捨五入をし、整数で表示します。

=ROUND(B2*0.7, 0)


C2セルをC3セルとC4セルにコピーすると、計算結果が合います。


ではでは。


2016年5月15日日曜日