excel vba など以前に増減率、増減比について整理する

#今回はマクロとかコードがありません
便宜上Excel VBAにしていますが、今回はコード以前に基本的な用語の使い方を整理します。
と思ったけど、設例くらい打たないと格好がつかないので、作りました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/126919/91a82bdb-79b9-376c-7be2-62bd693a3b6d.png)


```visualbasic

Option Explicit

'必ずモジュールの最初に記述し、この関数を使うものはすべて同じプロシージャ内に記述すること
Static Function Log10(X) As Double
Log10 = Log(X) / Log(10#)
End Function
Sub Macro2()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim ws As Worksheet: Set ws = Wb.Worksheets(1)
ws.UsedRange.Clear
ws.Range("A1").Select
    ActiveCell.FormulaR1C1 = "2001年度"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "2000年度"
    Range("A2").Value = 99& '&はリテラル文字で長整数を表す
    Range("B2") = 100&
    Range("C1").Value = "前年比"
    Range("D1").Value = "増減率(%)"
    Range("E1").Value = "増減率を1セルで計算"
    Range("F1").Value = "増減率を1セルで計算"
    Range("G1").Value = "VBAで増減率を計算"
    Range("C2").FormulaR1C1 = "=RC[-2]/RC[-1]"
    Range("D2").FormulaR1C1 = "=RC[-1]-1"
    Range("D2:G2").Select
    Selection.Style = "Percent"
    Selection.NumberFormatLocal = "0.0%;[赤]""▲"" 0.0%"
    Range("E2").Formula = "=round((A2-B2)/B2,3)" '表示形式をパーセントにすると、*100は不要。Roundの小数点は実際の桁数。パーセンテージ、つまり100をかけた後ではない。
    Range("F2").Formula = "=round((A2/B2)-1,3)" '表示形式をパーセントにすると、*100は不要。Roundの小数点は実際の桁数。パーセンテージ、つまり100をかけた後ではない。
    Range("G2").Formula = xlRnd2((ws.Range("A2").Value / ws.Range("B2").Value) - 1, 3) '表示形式をパーセントにすると、*100は不要。Roundの小数点は実際の桁数。パーセンテージ、つまり100をかけた後ではない。
    Columns("E:G").EntireColumn.AutoFit
    Range("C1").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With
    Columns("C:C").EntireColumn.AutoFit
    Columns("A:B").Select
    Selection.ColumnWidth = 10.13
    ws.Range("A1").Select
    End Sub
Function xlRnd2(X, intflo As Integer)
Dim xDegit As Integer

' IsNumeric Check
If X * 0 <> 0 Then GoTo ERR_Hndl
On Error GoTo ERR_Hndl
  If intflo < 0 Then
  If CInt(Log10(Abs(X))) + 1 <= Abs(intflo) Then
    xlRnd2 = X
    Exit Function
  Else
    xlRnd2 = Int((Abs(X) * 10 ^ (intflo)) + 0.5) / (10 ^ intflo) * Sgn(X)
    Exit Function
  End If
Else
  xlRnd2 = Int((Abs(X) * 10 ^ (intflo)) + 0.5) / (10 ^ intflo) * Sgn(X)
  Exit Function
End If
Exit Function
ERR_Hndl:
xlRnd2 = 0
End Function
```



#職場ごとにたぶんバラバラ
これは検索しても用語が違い検索しづらくなっている。
おそらく業界ごと、もしくは会社ごとに異なっているようだ。たとえば後述するが、コンビニ業界では出店数を増加数と表現する。
今回は、会計や、経理が前提で科学は対象としていない。

#共通法則
##新しいものと古いものを比較する場合、新しいものが左、古いものが右
用語は違うが、大原則として新しいものが式の左側、古いものが式の右側に来る。
これを覚えておくとよい
##今のものと未来のものを比較する場合、今が左、未来が右
参考サイトでは以下の法則の例外が
目標達成率という場合には(今期の数字÷目標の数字)*100
これは下の法則にしたがえば目標達成比(目標達成比率)となるべきだが、そうはならない。
しかし、式の比較する数字の並びは必ず今が左で未来が右である。



##原則として単位が率の時は*100


#設例
2000年度に観光客が100人来ました
2001年度に観光客が99人来ました

#増減比,増減比率
##増減比
設例の場合は対前年比、前年比などという。とくに前年比、前月比は昨対比(昨対比は「さくたいひ」と読み、IME辞書にもある)
##前年比のことが増減比
前年比は前年と比較した場合の増減比ということになる。
前年比は年単位の比較をする場合に使用されるものである。たとえば期末の純利益を比較する場合である。
英語では対前年比はYoYと略される。

###意味
新しいものが古いものに比べてどれくらいの割合かを示す
###式
新/古(\*100)
設例の場合、0.99になる

#増減比、増減比率の特徴
##増減比、増減率は１を基準としている
増加するときは必ず1より大きく、減少するときは1より小さくなる。
後述する増減率では0を基準とする。
##15桁以内にとどまる限り、増減比、増減比率は符号がマイナスにならず、プログラムで扱いやすい
見た目では増減率の方が符号が付きわかりやすいが、他方、プログラムでは符号を考慮することになる。
たとえば四捨五入の時、絶対値ABS()を使う必要がある。
またINTよりFIXが有利になるなど、使い分けが必要になり、煩雑である。なので、表示だけ増減率にして、内部では増減比で扱う方が有利そうである。

##増減率
伸び率、増加率、成長率、変化率などといわれるがいずれも率が入る。
英語ではRate Of Change

##意味
新しいものと古いものとの差は、古いもののどれくらいの割合か

##式
(新-古)/古\*100
これは
{(新/古)-(古/古)}(\*100)
となり(古/古)=1となるから、
{(新/古)-1}(\*100)
設例は-1％となる。



###増減比と増減率の式の違い
*100を無視すると
(新/古)
(新/古)-1
であり、増減率は増減比から1を引いた値になる。
つまり増減比は1を基準として増加は1より大きく、減少は1より小さい。増減率はゼロを基準として、増加は正、減少は負になる。

##増減率の特徴
###マイナスに工夫を凝らすと人間の目では増減がわかりやすい。
どこが減っているのか、マイナスかどうかでわかるため視覚的には増減が非常にわかりやすく、一覧性が高い。

###符号を考慮する必要がある
他方、PCでは増減率は厄介である。
Excelのシートでは問題にならないが、VBAなどでは符号を考慮する必要が生じる。
つまり表示だけ増減比から1を引く、として内部では増減比でプログラムを組んだ方がよい。

####ビジネス電卓はCASIOだと思う理由
CASIOはこの増減率計算に強い。ただしCASIOでも関数電卓にはこの機能はなく、ビジネス電卓独自の機能である。
設例の場合
99-100％というキー入力で完結する。
また逆に前年から入力することもできる。
100--99%とすると3--で「数字を入力してイコールを押すと、常に3を引いた結果を表示する」という命令になる。これに％を入力すると結果的に100-99%と同じになる。
この計算ができるのはアプリを含め、CASIOしかなく、このためCASIOは非常に強い。でも経理関係はSHARPが強いようだ。

http://k-tai.casio.jp/faq/w61ca/venrikinou/venrikinou50.html
>質問 	電卓で「％」の計算方法は？
>回答 	「％」を付加した計算は次の通りです。
100の10％を計算･･･100×10％ （＝10）
100の10％増しを計算･･･100×10％＋ （＝110）
100の10％引きを計算･･･100×10％－ （＝90）
100は80の何％かを計算･･･100÷80％ （＝125）
***100は80の何％アップかを計算・・・100－80％ （＝25）***
原価が1200円の商品について､利益率を25％と見込んだ場合の売値を計算･･･1200＋25％ （＝1600）
原価が1200円の商品について､利益率を25％と見込んだ場合の利益を計算･･･1200＋25％－ （＝400）

#増減数
上記はすべて除算が伴うが、これは単純に引き算である。

英語では
number increases or decreases

https://eikaiwa.dmm.com/uknow/questions/33758/
>増減はincrease and decrease で大丈夫ですが、他の言い方もあります。
例えば、
数量・金額などの場合は"rise and fall"の方が良いです。
数量・程度などの場合は"increase and decrease"は使えます。

https://ameblo.jp/yokohamaoimachitie/entry-11525312227.html
また経理ではFluctuation Fluともいうようだ。

##式
新-古
設例では100-99=1(人)
となる
##特徴
実数の増減数がわかる。これはたとえば博物館で入館料を取っているとする。これが1人500円だとする。すると設例では1人*500円で500円減少したことがわかる。また同じ1%の減少でも
10000人なら100人の減少で9900人の減少
100*x人ならx人の減少で、0.99x人減少となる。このように実数の規模がどれくらいかがわかる。
しかしこの欠点として、母数が大きいと数字がどんどん大きくなるため、どのくらいの割合なのかはわからない。また15桁以内でないとうまく計算できない。
###派生
####増減率(人口千対)
http://www.soumu.go.jp/main_sosiki/singi/toukei/meetings/kihon_56/siryou_1p.pdf
自然増減率(人口千対)
これは実際の増減数を1000人あたりいくらかに置き換えている。
> △21万9128人で、前年の△20万2260人より1万6868人減少し、自然増減率（人口千対）は△1.7で前年の△1.6を下回った。
これは単純な増減数では実数が大きすぎるため1000人当たりで表示している。強制的に単位をつけるなら△1.7千人ということになる。16868÷1000=/=1.7
しかし、実際は増減率と表示されているため、△1.7パーミルになるはずだ。

###増加率と減少率で表示する方法
http://kenkou888.com/category13/zennenehi.html
減少率=1-(新/古)
で定義している。
電池の売り上げでは増加率が別に定義されており、
増加率=(新/古)-1
と符号が変わると式を変えてプラスにして、名前を変えるという方法をとっている。
>同様に伸び率・増加率（減少率）　各々の言葉の定義について解説していきます。
実は伸び率と増加率は同じ意味です。前年比のように年ごとに比較するときもあれば、数年ごとに比較するときもあり、状況に応じて変化させます。
一方で、データが比較した後のデータの数が数値が小さいときは、減少率を使用します。

```vb
=IIF(A2>B2,Round((A2/B2)-1,3),Round(1-(A2/B2),3))
```


#実際に用語が混乱している例
「訪韓日本人が激減」本当なの？　「毎月数万人減少」記事のカラクリ
https://www.j-cast.com/2019/03/14352680.html?p=2

>前月比ではなく「前年同月比」で見ると...
   では、韓国観光公社の統計ではどうか。この統計によると、18年10月に日本から韓国を訪れたのは29万468人。11月は29万9978人、12月は25万8521人、19年1月は20万6526人と推移しており、夕刊フジの記事の説明と一致している。ただ、情勢にともなう増減を評価するためには、***「前年同月比」での比較が必要だ。17年10月に日本から韓国を訪れたのは17万9661人で、それ以降の月は21万3460人、19万3705人、16万7083人と推移している。17年についても「11月以後、毎月、数万人単位で減少」していたわけだ。***月ごとの伸び率をみると、それぞれ61.7%、40.5%、33.5%、23.6%と推移している。18年全体では***前年比27.6%増の***294万8527人だった。(略)

上記のように整理していくと、前年同月増減数の誤りではないかという疑問が出てくる。
また前年比127.6%増のあるいは、前年比率127.6%増のが正しい。しかし文脈上、増がついているので、100を超えるのは当たり前だから27.6%増としたともいえる。

##ただしこのような誤用は頭の良しあしとは関係がない
　これは「よく使われるものは必ず不規則な変化や派生語が生まれる。逆に派生語や不規則な変化をするものはよく使われている。」という外国語の教科書に書いていないどの言語にも共通する法則である。例えば英語のCome、日本語の来るはどちらも不規則な変化（変格活用）が起きる。これと同様に、よく使われる概念、今回の対前年比、増減率、これはよく使われるから変化、派生が起きるのである。これは逆もほとんど真であり、様々な表現があるのは、よく使われているからである、といえるのである。これを応用すると、どの言語でも基本をある程度習得したら先に変格活用される単語を優先的に抑えることである程度早くより上達して用いることができると結論できる。もっとも変格が変格であることを知るには基本がわかっていないといけないともいうが。

###こうした点はオールドメディアにネットメディアは敗北する
https://digital.asahi.com/articles/ASM4C5F6MM4CULFA01J.html
ローソン、店の増減ゼロへ　前年度の６６７店増から一転
神沢和敬 2019年4月11日17時00分
>　コンビニの増加に急ブレーキがかかる。国内３位のローソンは１１日、来年２月末までの２０１９年度、***前の年度と比べた店の増減がプラスマイナスでゼロ***になる、との計画を発表した。最大手のセブン―イレブン・ジャパンも、***増加数がほぼ４０年ぶりの低水準になる***計画を発表済みだ。
　チェーン全体の売り上げの増加と効率化を図る大量出店は、２４時間営業と並ぶコンビニのビジネスモデルの根幹。１９７０年代から続いてきた。だが、人手不足に伴うバイトの人件費高騰を背景に現場を担う店主たちが疲弊。「空白地帯」も減るなか、各社の戦略変更が鮮明になってきた。
　ローソンは２００３年度以来、増やし続けてきた。前の１８年度の増加数は６６７店だった。竹増貞信社長は１１日の記者会見で「無理に数字を追いかけない」と述べた。
　セブンは１９年度の増加数を１５０と見込む。前の年度の４分の１ほどだ。
　２位のファミリーマートは１９年度に１２６店増やす計画だ。前の年度までの２年間は、経営統合したサークルＫの店を含む不採算店を閉めるなど特殊要因で減らしていた。これを除くと１８年ぶりの低水準となる。
　国内のコンビニは中堅も含めて計５万５千店余り。郵便局の２倍以上だ。セブン、ファミマ、ローソンの大手３社で９割ほどを占める。（神沢和敬）
訂正しておわびします。
ローソン、店の増減ゼロへ　前年度の６６７店増から一転
　１１日配信の「ローソン、店の増減ゼロへ　前年度の６６７店増から一転」の記事で、ファミリーマートの２０１９年度計画での国内店の増加数が、特殊要因のあった１８、１７年度を除くと「３６年ぶりの低水準」とあるのは「１８年ぶりの低水準」の誤りでした。資料を読み誤りました。
https://digital.asahi.com/articles/ASM4F0071M4DUEHF00W.html?iref=pc_ss_date

　あしざまに言えばコンビニ業界の発表のコピペばかりともいえるが、間違うということは明らかに読み込んでいるということを意味しており、コピペばかりではないということがわかる。次に、コンビニ業界は今まで出店数が増加しかしていなかったので、増加数という単語も興味深い。J-castと違い、朝日の記者は「店の増減が増減がプラスマイナスでゼロ」と引用している。これは増減数でも増減率でもゼロであるため、あえて増減の後ろになにもつけていない。また郵便局の2倍以上という記述で、暗に現在のコンビニの店舗数は過剰であると印象付けている。非常に地味でわかりづらいが、用語を極めて慎重に使い分けており、オールドメディアの実力がどこにあるのかがわかる。

増える梅毒患者　千葉で昨年１６２人、過去２０年で最多
https://digital.asahi.com/articles/ASM1C4WRDM1CUBQU012.html
>　全国で梅毒患者の届け出数が４８年ぶりに６千人を超え、千葉県内でも患者の届け出数が増え続けている。県内の医療機関から届け出があった昨年の梅毒患者数は１６２人（暫定値、県まとめ）で、この２０年で最も多かった。男女とも若い患者の増加が目立っている。出産年齢の女性が知らない間に感染し治療を受けずにいると、赤ちゃんに影響が出る恐れもあり、県は注意を呼びかけている。
　国立感染症研究所や県疾病対策課によると、１９９９年以降の県内の届け出数は９９～２００８年は１～２３人で推移していたが、１０年に３９人へと急増。１１年は２５人に減ったが、１２年に３０人と再び増加に転じると、１４、１５年はともに８０人で、１６年には１００人を突破し１４０人に。１８年は１７年の１４１人を２１人上回った。
　***県内の届け出数が年１００人を超えた１６年以降をみると、男性が７割近くを占める。年代別で多いのは男性が２０～４０代、女性は２０～３０代。特に女性の約５割は２０代で、３０代を入れると約７割にのぼる。***
　妊婦が治療を受けず、胎盤を通して胎児に感染すると、死産や早産のほか、赤ちゃんの肝臓や後に耳などに障害が生じる「先天梅毒」になる恐れがある。感染研などによれば、１４年以降は全国で年１０人前後の先天梅毒の報告があるという。
　感染拡大を防ぐには、早期の診断や治療が欠かせない。県は２０日午前１０時～午後４時、ＪＲ新浦安駅前の浦安市民プラザＷａｖｅ１０１で「休日街頭ＨＩＶ抗体検査」（予約不要、無料）を実施し、希望者を対象に梅毒の血液検査も受け付ける。結果は約１時間後に分かるという。問い合わせは県疾病対策課
梅毒に関するQ&A - 厚生労働省
https://www.mhlw.go.jp/seisakunitsuite/bunya/kenkou_iryou/kenkou/kekkaku-kansenshou/seikansenshou/qanda2.html
http://www.cick.jp/column/archives/65#outline__6
http://www.fukushihoken.metro.tokyo.jp/iryo/kansen/syphilis.html
男性版PDF
http://www.fukushihoken.metro.tokyo.jp/iryo/kansen/syphilis.files/mosikasite-m.pdf
高校生用PDF
http://www.fukushihoken.metro.tokyo.jp/iryo/kansen/syphilis.files/baidokoukou.pdf
https://ja.wikipedia.org/wiki/%E6%A2%85%E6%AF%92

この記事はグラフが添えてあり、増減率は書かず、人数のみで書いている。強調した文章は男性も女性も7割が出てくるが、まず届け出をした人の男女比は男性が7割、女性が3割で、女性の3割のうち、（妊娠可能でありかつ人口再生産にな影響を占める）20代と30代で7割を占めるということになる。これは参考サイトの構成比(率)になる。しかしこれも構成比とも構成率という表現もないため、割合だけで構成比（率）と示している。科学的にはツッコミどころがかもしれないが、これは主眼が女性に置かれていることを意味しているため、あまり問題はない。1942年にペニシリンが実用化（なお軍用であり民生用は1945年以降)するまで、まともな治療方法はなく、感染力が高く事実上治療方法のない病気であり、しかも容貌に激烈な変化を起こし、赤ちゃんに感染するため戦前から梅毒は女性の問題だっためである。（男性も感染するけど）ペニシリンは抗菌剤という概念を作り出し、人類の運命、文化を変えたのである。ただし梅毒トレポネーマは培養ができないという無敵の属性を備え、さらに初期症状は他の病気と区別がつかないという極めて厄介な性質を持っている。また早期発見早期治療が重要だが、それでも最短で2か月程度はかかる。イメージと違い接触感染であるため、キスでも感染する。高校生用PDFはコンドームで防げるとしているが、しないよりましだが、それでは防げない。

#まとめ
このように単語にはあいまいな点や、業界、歴史を反映しているケースがある。しかし、重要なことは、比、なのか率、なのか数なのか、自身が意識して用語を使い分け、数式を使い分ける基準をもっておくということである。そして「増減警察」になるのではなく、なぜそのような用語を使うのか、業界の事情や歴史的な背景を知るきっかけにする、という態度をとるべきである。

#参考
[前年比計算と昨対比計算方法と意味 LANDGATHER](https://landgather.com/comparsion)