スプレッドシートで支払関係の表を埋めているときに、「消費税の計算めんどくさ…」となることはありませんか?
私はあります。
通常であれば、セルに=A1*1.1
とか書いてフィルハンドルを引っ張って一気に適用させるとかすればよいのですが。
税抜きだけでなく税込みの金額が混じっていてたら、そうもいきません。
さらに今は軽減税率という厄介なものもあり、消費税率が一定じゃなかったりします。
そんなわけで、数字の入力が面倒なのでスプレッドシートに消費税を足したり抜いたりするオリジナル関数を組み込んでみました。
ノンプログラマーである私がGASの門を叩いたのはここからだったので、同じように「何か関数でラクしたいわー」というノンプログラマー向けに汎用的なタイトルにしました。
計算式を変えればいろいろできるので、試してみてください。
#仕様
- 消費税を乗せる関数(taxon())と消費税を抜く関数(taxout())の2種類どちらも使えるようにする
- 税率を任意で変えられる
- デフォルトの消費税率は10%。変更したい場合のみ8%などに変更できる
#こうなる
##税込み価格にする関数
taxon()
の中に消費税10%を追加したい数値を入れれば、消費税込みの数値を返します。
第二引数に任意の税率(ここでは8%)を入れれば、その税率込みの数値を返します。
##税抜き価格にする関数
taxout()
の中に消費税10%を抜きたい数値を入れれば、消費税抜きの数値を返します。
第二引数に任意の税率(ここでは8%)を入れれば、その税率抜きの数値を返します。
#つくりかた
ノンプログラマーが最初に作った際には、いろいろ理解するのに苦労したので、一応解説しておきます。
##①関数を組み込みたいスプレッドシートを開く
どのシートでも大丈夫です。
※ただし、当該のシートでしか動作しません。excelとして落としたい場合などは注意
##②スクリプトエディタを開く
スプレッドシートのメニュー ツール>スクリプトエディタ から開きます。
エディタが開いたら、ファイル名を付けましょう。
##③スクリプトを書く
最初からfunction myFunction() {}
と入っていますが、これは削除して以下のとおり記入します。
const standard_tax_rate = 10; //デフォルトの消費税率
// 税込価格を出す関数
function taxon(price, tax_rate) {
if(!tax_rate){
tax_rate = standard_tax_rate;
}
return price * (1 + tax_rate / 100);
}
// 税抜き価格を出す関数
function taxout(tax_include_price, tax_rate) {
if(!tax_rate){
tax_rate = standard_tax_rate;
}
return tax_include_price / (1 + tax_rate / 100);
}
##④保存する
フロッピーマークを押せば保存されます。
以上です。
これでスプレッドシート側で関数が使えるようになっています。
要は、ここで定義した関数が、そのままスプレッドシートで使えちゃうというわけです。
#スクリプトの説明
こちらもノンプログラマー向けに一応解説しておきます。
##関数と第一引数・第二引数を定義する
まず、function に続く部分で新たな関数を定義します。
続くかっこの中で、関数に入れる引数を定義します。
##任意の計算式の結果が返るようにする
return
の後ろに記載した計算式の結果が関数の結果として返ることになります。
taxonの場合は税率を乗算して、taxoutの場合は税率を除算します。
##第二引数を入れない場合はデフォルトの数字が入るようにする
今回は、「第二引数に何も入れなければ基本の消費税の10%にするけど、8%など他の税率にしたいときはできるようにする」としたいので、デフォルトの引数を設定する必要があります。
スマートなやり方かはわかりませんが、こんな風に解決しています。
if(!tax_rate){
tax_rate = standard_tax_rate;
}
第二引数tax_rateが!tax_rate
のとき、つまり何も入ってなかった場合にtax_rate
は、予め設定しておいた standard_tax_rate
(10%)を適用する、ということです。
以上です。いろいろ応用すれば、よく使う計算などの手間がかなり省けるのではないかと思います。
ただ、以下のようになるので、少し注意が必要です。
- このシート上でしか動作しない
- 計算時にセル上に「Loading...」と出て、数字が表示されるまで少し読み込み時間がある