3/12/2021

Excel。そこに関係性はあるのか?ないのか?相関関係はCORREL関数で一発算出できます。【Correlation】

Excel。そこに関係性はあるのか?ないのか?相関関係はCORREL関数で一発算出できます。

<CORREL関数>

データを集めただけでは、ただの数字の情報にすぎません。

しかしながら、こちらの数値とあちらの数値には関係性があるなど、Excelには、ちょっとした関数をつかうことで、今まで見えなかった角度から、仮説をみつけることができたりもします。


例えば、次の資料をつかってみることにします。


B列のWritingの数値と、C列のListeningの数値には、例えば、Writingの数値が良ければ、Listeningの数値も良いなどの、関係性があるのでしょうか?


一目見ただけではわかりませんね。

この手の資料をみて、『直感』というのは、ビジネスではちょっと怖いですよね。


そこで、関係性。

つまり、相関関係があるのか、ないのか数値的な観点から判断したいわけです。


この相関関係を一発で算出してくれる関数が、Excelには用意されています。その関数は「CORREL関数」です。


F1にCORREL関数をつかって、相関関係を算出してきます。


CORREL関数の引数は、CORREL(配列1,配列2)となっていて、それぞれの数値の範囲なので、CORREL関数ダイアログボックスを表示せず、手入力で数式をつくっても、問題はないかと思われます。


F1の数式は、

=CORREL(B2:B11,C2:C11)


関数の数式としては、簡単に作成できます。

0.19457と相関係数は、算出されました。


算出はされたのですが、いったいどのようなことがわかったというのでしょうか?

相関係数は、「1」に近ければ、「正の相関」が強いと判断できます。

「-1」に近ければ「負の相関」が強いわけですが、「0(ゼロ)」に近いのであれば、「無関係」ということが判断できるようになっています。


今回は、0.19457ですから、「1」よりも「0(ゼロ)」に近いと判断できますので、「無関係」であると、仮説を立てることができるわけです。


Writingの数値と、Listeningの数値をそれぞれ降順にしてみたデータで、算出してみましょう。

 

全員のデータをWritingが大きければ、Listeningも大きいデータとしましたから、F1の相関係数は、0.93992と算出されました。


今回の結果は、「0(ゼロ)」よりも「1」に近いので、「関係性」があると判断できるわけですね。


なので、数値だけ集めただけの資料ではもったいなので、色々な角度から見てみるといいのかもしれませんね。


最後に、ちょっと注意しないといけないことがあって、CORREL関数をつかって簡単に算出することはできるのですが、『疑似相関』といって、隠れた要因があるために、相関関係があるように見えたりもします。


ただ、業務を改善したいなど、どこから考えたらいいのかわからない、つまりゼロから過程を建てるのは難しい場合は、CORREL関数をはじめとした、様々な関数をつかい、その結果から仮説を生んで、検討していくというのもいいのかもしれませんね。

3/11/2021

Excel関数辞典 VOL.44。ISPMT関数~KURT関数【dictionary】

Excel関数辞典 VOL.44。ISPMT関数~KURT関数

<Excel関数>

今回は、ISPMT関数~KURT関数までをご紹介しております。

ISPMT関数

アイエスピーエムティー:イズ・ペイメント

元利均等返済における指定期間の利息を算出:Lotus1-2-3互換性維持

ISPMT(利率,期,期間,現在価値)



ISREF関数

イズリファレンス

対象がセル参照の場合にTRUEを返す

ISREF(テストの対象)



ISTEXT関数

イズテキスト

対象が文字列の場合にTRUEを返す

ISTEXT(テストの対象)



JIS関数

ジス

半角文字を全角に変換する

JIS(文字列)



KURT関数

カート

データセットの尖度(せんど)を算出

KURT(数値1,[数値2]…)

3/09/2021

Excel。VBA。読み込んだデータで、月が替わる行に小計行を追加したい【The end of the month】

Excel。VBA。読み込んだデータで、月が替わる行に小計行を追加したい

<Excel VBA>

データを読み込んだら、ついでに、面倒な処理を自動的に行わせることができたら便利ですよね。


例えば、次のようなデータを読み込んだとします。


読み込んだ後に自動的に、月が替わったら、行を追加して、追加した行に月ごとの小計を算出したいとします。

こんな感じですね。


月が替わるところを見つけて、行を挿入して、さらに、月ごとの小計を算出するだけですが、イチイチこの作業を繰り返すのは面倒ですね。


しかも、月ごとのデータの件数が異なっていれば、SUM関数などの引数の範囲をその都度設定するのは、さらに面倒です。


そこで、Excel VBAでマクロを作ってしまうと、大幅に時短できますし、何より楽ができます。


色々なプログラム文があるとは思いますが、次のように作ってみました。


Sub 月別小計()

    Dim i As Long

    Dim mon As Integer

    Dim n_mon As Integer

    Dim sub_t As Long

        

    i = 2

    mon = Month(Range("a2"))

    sub_t = 0

    

    Do While Cells(i, "a") <> ""

       n_mon = Month(Cells(i, "a"))

       

       If mon = n_mon Then

            sub_t = sub_t + Cells(i, "b")

       Else

            Cells(i, "a").EntireRow.Insert

            Cells(i, "a").Value = mon & "月合計"

            Cells(i, "b").Value = sub_t

            sub_t = 0

            mon = n_mon

       End If


       i = i + 1

       

       If Cells(i, "a") = "" Then

            Cells(i, "a").Value = mon & "月合計"

            Cells(i, "b").Value = sub_t

            i = i + 1

       End If

    Loop

End Sub


それでは、説明していきます。

お馴染みの変数宣言の文からスタートですね。

Dim i As Long

Dim mon As Integer

Dim n_mon As Integer

Dim sub_t As Long


monは、今月の値をいれる変数です。

n_monは、次のデータの月をいれる変数です。

sub_tは、月ごとの小計を算出する時に使う変数です。


初期値を設定します。

i = 2

mon = Month(Range("a2"))

sub_t = 0

    

mon = Month(Range("a2")) は、最初のデータの月を代入しています。


Do While Cells(i, "a") <> "" ~ Loop をつかって繰り返し処理をしています。


Do While Cells(i, "a") <> "" は、A列の値が空白でないという意味ですね。

つまり、データが無くなるまで繰り返し処理を行いたいわけです。


繰り返し処理のDo Whileの中を確認していきましょう。


n_mon = Month(Cells(i, "a")) は、次のデータの月の値を代入しています。


月替わりしたかどうかを確認するために、If~Then~Else~End Ifで条件分岐させた処理をします。


If mon = n_mon Then で、今までの月の値と、このデータの月の値を比べます。


もしも、同じだったらば、

sub_t = sub_t + Cells(i, "b") で、小計の合計値に、このデータの売上高のデータを追加していきます。


Else で、月の値に違いが発生している場合、つまり月が替わった時の処理を行います。

Cells(i, "a").EntireRow.Insert で、該当のセルの下側に空白行を追加することができます。


Cells(i, "a").Value = mon & "月合計" は、追加した行に、「○月合計」という見出しを入力させています。


Cells(i, "b").Value = sub_t は、月ごとの合計値を入力しています。


次の2行は、月が替わったので、初期化の作業をしています。

sub_t = 0

mon = n_mon


次の行のデータを参照させるための作業が、i = i + 1 です。


これで、メインのプログラムは終わっているのですが、このまま実行すると、空白行まで繰り返すという処理なので、最終月。

今回は、12月にあたりますが、その合計値の行を表示する作業を行わないで終了してしまいます。


そこで、次のプログラム文をいれました。

If Cells(i, "a") = "" Then

    Cells(i, "a").Value = mon & "月合計"

    Cells(i, "b").Value = sub_t

    i = i + 1

End If


これで、月が替わった時に、自動的に空白行を追加してその追加した行に月ごとの合計値を算出することができました。


このように、ちょっとしたプログラム文でも作業効率を改善できるかもしれませんので、Excel VBAで対応できそうなところがあれば、少しずつでも移行していくといいのかもしれませんね。

3/08/2021

今週のFacebookページの投稿 2021/3/1-2021/3/7【one thing】

今週のFacebookページの投稿 2021/3/1-2021/3/7

<Facebookページ>

Facebookページで【書いてみた】ワンポイントです。


3月1日

Excel。VARA関数。

読み方は、バリアンスエーで、全データを標本データとみなした不偏分散を算出


3月2日

Excel。VARP関数。

読み方は、バリアンスピーで、数値群を母集団全体とみなした分散を算出


3月3日

Excel。VARPA関数。

読み方は、バリアンスピーエーで、全データを母集団全体とみなした分散を算出


3月4日

Excel。VAR.P関数。

読み方は、バリアンス・ピーで、数値群を母集団全体とみなした分散を算出。2010より登場


3月5日

Excel。VAR.S関数。

読み方は、バリアンス・エスで、数値群を標本データとみなした不偏分散を算出。

2010より登場


3月6日

Excel。VDB関数。

読み方は、ヴィディービーで、減価償却の概算を新定率法で算出する Variable Declining Balanceの略


3月7日

Excel。VLOOKUP関数。

読み方は、ブイルックアップで、縦方向の表からデータを検索して抽出する

3/06/2021

Excel。100%積み上げ横棒グラフのデータラベルに、値とパーセントを表示したい【Data label】

Excel。100%積み上げ横棒グラフのデータラベルに、値とパーセントを表示したい

<100%積み上げ横棒グラフ>

それぞれのデータが全体のうちどのぐらいの割合を占めているのかがわかる、100%積み上げ横棒グラフ。

資料としてよくつかうのですが、ちょっと困ったことがあるわけです。

Youtubeでも紹介・説明しております。

次のような100%積み上げ横棒グラフをつくってみたいとします。


別に問題はなさそうにみえるのですが、表示されているデータラベルに問題というか、ちょっと困ってしまうのです。


試しに100%積み上げ横棒グラフを作っていきますので、表を用意します。


A1:D4を範囲選択して、挿入タブの「縦棒/横棒グラフの挿入」にある「100%積み上げ横棒」をクリックします。


100%積み上げ横棒グラフが表示されます。


なお、グラフを大きく表示したい都合上、グラフタイトルは削除して、グラフ全体を大きくしております。


店舗が何パーセント占めているのか、つまり、構成比のグラフが、100%積み上げ横棒グラフなわけです。


構成比な訳ですから、データラベルにそれぞれ、何パーセントなのか表示していきましょう。


系列の全てに、データラベルを表示したいので、グラフ全体をアクティブにした状態で、グラフのデザインタブにある「グラフ要素を追加」の「データラベル」から中央をクリックしてみましょう。

構成比なので、それぞれの比率である、パーセントで表示されると思ったら、値で表示されています。


今回は、値ではなくて、パーセントで表示したいので、新宿店のデータラベルをクリックして、書式タブの「選択対象の書式設定」をクリックします。


右側に、データラベルの書式設定作業ウィンドウが表示されます。


ラベルオプションのラベルの内容を見るとわかるのですが、「値」というのは用意されていますが、「パーセント」というのがありません。

つまり、構成比のグラフである、100%積み上げ横棒グラフは、構成比率での表示ができないようになっているわけです。


そのため、構成比率を算出した表を別で用意します。


構成比が表示されている表を基に、新たにグラフを作り直してもいいのですが、せっかく作ったグラフを消すのも、もったいないですし、効率もよくありません。


そこで、データラベルの書式設定作業ウィンドウのラベルの内容にある「セルの値」を使って置換していきます。


系列ごとにしかできませんので、例として新宿店のデータラベルをクリックして、ラベルオプションの「値」のチェックマークを外し、「セルの値」のチェック―マークをオンにします。


データラベル範囲ダイアログボックスが表示されます。


データラベル範囲の選択のボックスに、該当のデータを選択します。

今回は、B8:D8を設定します。

設定後OKボタンをクリックします。


これを、系列分繰り返し設定します。


データラベルに構成比率を表示することができました。


あとは、見栄えを調整して完成ですね。


また、表を次のように変えてみます。


B17の数式を設定しています。

=B2&"("&TEXT(B8,"0.0%")&")"

こうすることで、元の値と、構成比率を表示することができますので、この算出結果を使えば、値も構成比率もデータラベルに表示することができます。


このように、基本的なグラフであっても、色々アイディアを加えることで、ほしい資料をつくることができるかもしれませんね。

3/05/2021

2021年2月の閲覧数TOP10をご紹介【Feb 2021 ranking】

2021年2月の閲覧数TOP10をご紹介

<TOP10>

皆様に閲覧していただいた項目の2021年2月TOP10をご紹介させていただきます

1位

Excel。結合したセルの値をまとめた一覧表を作りたいけど、コピペじゃ大変なんです。

https://infoyandssblog.blogspot.com/2021/02/excelmerged-cells.html

セルの結合は設定するのが簡単なのですが、結合したセルの値を別のセルにコピーするとか、一覧表を作る場合、意外と大変というか、困ってしまうことがあります。


2位

Excel。VBA。セル内のカタカナだけを全角にしたいけど、どうしたらいいの?

https://infoyandssblog.blogspot.com/2021/02/excelvbafull-width-katakana.html

アルファベットは、半角大文字。

「カタカナ」は全角にしたい。

「ひらがな」は、そのままとするには、どうしたらいいのでしょうか?



3位

Excel。曜日ごとの最新の最大値を算出するにはどうしたらいいの?

https://infoyandssblog.blogspot.com/2021/02/excelby-day-of-week.html

曜日別に最大値を算出したいとします。

しかも、最大値が同じ場合は、新しい日付を優先して算出させたいわけです。


4位

Excel。日付が入力されているセルがいくつあるのか、算出するにはどうしたらいいの?

https://infoyandssblog.blogspot.com/2021/02/excelcount.html



5位

Excel。VBA。読み込んだデータに001のような「0(ゼロ)」付き連番を楽してつくりたい

https://infoyandssblog.blogspot.com/2021/02/excelvba0010with-zero.html



6位

Excel。前回よりも数値がいい件数を求めるのに簡単な方法はないの?

https://infoyandssblog.blogspot.com/2021/02/excelsumproduct.html



7位

Excel。料金量がわかりやすい階段グラフの作り方

https://infoyandssblog.blogspot.com/2017/09/excelstaircase-graph.html



8位

Excel。一日のタイムスケジュールを管理する24時間横棒グラフを作ってみる

https://infoyandssblog.blogspot.com/2016/03/excel24hour-schedule24.html



9位

Excel。折れ線グラフの間を塗りつぶしたいけど、どうしたらいいの?

https://infoyandssblog.blogspot.com/2015/12/excelgraph.html



10位

Excel。一行おきの数値の合計を簡単に算出したいけどどうしたらいいの?

https://infoyandssblog.blogspot.com/2020/12/exceltotal-every-other-line.html

3/03/2021

Excel。偏差値って意外と簡単に算出することが出来るんです。【Deviation value】

Excel。偏差値って意外と簡単に算出することが出来るんです。

<AVERAGE関数&STDEV.P関数>

偏差値と聞くと、どうやって算出しているのか?

算出するには、とても難しいイメージがしますが、Excelをつかうと、比較的容易に算出することができるので、ご紹介していきます。


次のデータを用意しました。

B列のWritingとC列のListeningの点数が入力されている表です。


WritingとListeningは同じ試験であるはずもなく、同じ点数を取ったとしても、難易度が異なっているので、その点数が、科目内での良し悪しは、単純にはわからないわけですね。


データの見た目から、Writingの点数がListening全体的に低い感じがしますね。


というか、見た目で判断するのはよくありません。

折角Excelというツールがあるわけですから、平均値から算出してきます。


F2の数式は、

=AVERAGE(B2:B11)

オートフィルで数式をコピーして、G2のListeningの平均も算出します。

最低限、平均値は算出したいところですね。

これで、Listeningのほうが20ポイントWritingより高いことがわかりました。


平均値は算出しましたが、WritingとListeningのそれぞれの中で、データの「ばらつき」も考える必要があります。


要するに、平均値は、平均値よりも離れた極端な値があると、極端に影響を受けてしまうからです。


この「ばらつき」を表すのが「標準偏差」です。


この標準偏差も、STDEV.P関数をつかえば、算出することができます。


F3の数式は、

=STDEV.P(B2:B11)

標準偏差は、値が大きいほど、「ばらつき」がありますので、今回のデータでは、Listeningよりも、Writingのほうが得点に差がある。


つまり「ばらつき」があることがわかりました。


平均値と標準偏差を算出することができれば、偏差値を算出するには、公式に当てはめてあげればいいわけです。


偏差値の公式は、

偏差値=(データ-平均点)÷標準偏差×10+50

で求めることができます。


それぞれの偏差値を算出しますので、列を増やしておきます。

D2の数式は、

=(B2-H$2)/H$3*10+50

複合参照をつかっていますが、これは、オートフィルで数式をコピーするために複合参照をつかっておりますが、わかりにくい場合は、絶対参照にして、列ごとに算出するといいですね。


データ内で、どこに位置しているのかがわかるようになります。


例えば、Writingでは、67点で、Listeningが78点と、Listeningのほうが点数自体は高いのですが、そのグループの中では、Listeningのほうが低い位置にあることがわかるわけですね。


むしろ力を入れないといけないのは、Listeningのほうだったわけです。


数値は、見た目のイメージだけで、優劣をつけてしまいがちなので、注意したいところですね。