7/31/2018

Excel。シート間のデータの違いを見つけて、マークをつけたい【Difference in data】

Excel。シート間のデータの違いを見つけて、マークをつけたい

<条件付き書式とIF+SUMPRODUCT関数>

訂正前というシートに次のようなデータがあります。

そして、訂正後というシートに次のようなデータがあります。

訂正前と訂正後で、どのレコードが修正されたのかが、
わかるように、H列に「修正あり」と表示したいとします。

その場合はどのようにしたらいいのでしょうか?

当然、目視で確認するというのでは、大変なことになります。

数値ならば、別シートなどに、
例えば、=訂正前!C2-訂正後!C2 という数式を作り、
その結果が、0(ゼロ)だったならば、
修正していないということがわかりますが、

文字の場合だと、IF関数を使わないといけないといけませんし、
データ量が膨大になると、数式のコピーも大変な作業となってしまいます。

そこで、次のようにしていくには、どのようにしたらいいのでしょうか?

H列に「修正あり」と表示することができました。

こうすることで、オートフィルターなどで、
「修正あり」という文字だけを抽出してあげれば、
どのデータが変わったのかが分かりやすくなります。

では、H2の数式はどのようになっているのかを先にご紹介します。

=IF(SUMPRODUCT((訂正前!C2:G2=訂正後!C2:G2)*1)=5,"","修正あり")

IF+SUMPRODUCT関数のネストになっています。

SUMPRODUCT関数は、
掛け算をして、その合計を算出する関数ですが、
この数式がどのような動きをしているのかを確認したいので、
4行目に空白行を用意して、
合計しないで掛け算だけを算出するPRODUCT関数を使って、算出してみます。

C4の数式は、
=PRODUCT(訂正前!C3=訂正後!C3)

合致していると、TRUEなので、1を返します。
合致しないとFALSEなので0を返します。

この算出された数値を合算すると、4になりますよね。

全部合致していれば、5なので、4と算出されていれば、
合致していない箇所。

すなわち、「修正あり」ということがわかるという仕組みです。

なので、掛け算と合計を求める、SUMPRODUCT関数を使っています。

そして、条件式が一つで、掛け算の値を合計しないで、
セルの数を数える場合は、×1とすると、
0と1の数値に変換した数式を作成する必要がありますので、×1しています。

=IF(SUMPRODUCT((訂正前!C2:G2=訂正後!C2:G2)*1)=5,"","修正あり")

という数式を使うことで、比較することができます。

なお、視覚的にわかるようにするだけならば、
条件付き書式を使うと、簡単に比較することが出来ますよ。

C2:G5を範囲選択して、条件付き書式の新しいルールを選択します。

数式を使用して、書式設定をするセルを決定をクリックして、
数式には、
=訂正前!C2<>訂正後!C2
として、書式を設定してOKボタンをクリックしましょう。

このように、変更したセルを見つけたい場合には、
条件付き書式を使うといいですね。

7/30/2018

Excel Technique_BLOG Categoryに追加しました。2018/07/30

Excel Technique_BLOG Categoryに追加しました

<目次サイト>

このBLOGの記事を、

カテゴリー分けにした【Excel Technique_BLOG Category】に追加しました。


条件付き書式 ~データバーの応用スキル 数値に重ねない~
https://infoyandssblog.blogspot.com/2013/06/excel.html


有名な一行おきに色をつける、条件付き書式+ROW+MOD
https://infoyandssblog.blogspot.com/2013/06/excelrowmod.html


月末の日を自動的に判断する関数。EOMONTH関数とEDATE関数
https://infoyandssblog.blogspot.com/2013/06/excelemonthedate.html


日付を曜日に変える方法。関数編 MID関数+WEEKDAY関数
https://infoyandssblog.blogspot.com/2013/06/excel_23.html


データが増えたら自動で罫線が引けるワザ。 ISNUMBER
https://infoyandssblog.blogspot.com/2013/06/excel_26.html

7/29/2018

今週のFacebookページの投稿 2018/07/23-2018/07/29

今週のFacebookページの投稿 2018/07/23-2018/07/29

<Facebookページ>

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

7月23日
Excel。
sumproduct関数は複数の範囲の積を算出関数です。

7月24日
Excel。
quotient関数は割り算関数です。

7月25日
Excel。
mod関数は割り算のあまり関数です。

7月26日
Excel。
frequency関数は頻度集計・頻度分布関数です。

7月27日
Excel。
int関数は整数化関数です。

7月28日
Excel。
trunc関数は負数時の小数点以下切り捨て関数です。
ちなみにintと結果がことなります。

7月29日
Excel。round関数は四捨五入関数です。

Excelテクニック and  MS-Office recommended by PC training
https://www.facebook.com/exceltechniqueandmsoffice/

Excelのショートカット一覧はこちらで書いております。
http://yandss.p2.weblife.me/shortcutkey.html

7/28/2018

Access。クエリで空白スペースと何もないNullは違うので、未入力の抽出条件はこうなります。【NUll】

Access。クエリで空白スペースと何もないNullは違うので、未入力の抽出条件はこうなります。

<Access:Nz関数+Trim関数>

次のテーブルをご覧ください。

店舗IDの2と3の電話番号フィールドにはデータが入力されていません。

このようにデータが入力されていないレコードを抽出したいとします。

このようなケースは、ExcelからAccessにテーブルをインポートしてきた後に、
空白データだけを抽出して、入力作業を行いたい場合など、
空白のデータを抽出するケースに遭遇することになりますが、この空白。

そう簡単に空白を抽出して…とはいかないのです。

【Is Nullではダメ】

空白データを抽出するには、
Is Nullを抽出条件としてクエリを作ってみればいいわけですので、
次のようにクエリを作っていきます。

電話番号フィールドが空白かどうか?ということなので、
抽出条件に、「Is Null」と入力して実行してみましょう。

このように、店舗IDが2のレコードしか抽出されませんでした。

なぜ、このような結果になってしまったのかというと、
店舗IDの3のレコードの電話番号には、何もデータが入っていない、
いわゆる、未入力なのではなく、空白のスペースが”入力”されていたために、
Is Nullという条件では抽出することができなかった訳です。

では、どのようにしたらいいのでしょうか?

【Nz関数とTrim関数で未入力は抽出する】

未入力のNullとスペースという文字が入力されているのが、
原因なので、考え方としては、
どちらかに統一してあげるようにすればいいわけです。

そこで、Nullの時に別の内容で表示することができる、
Nz関数を使って、Nullをスペースに変換させて、
そのスペース=空白をTrim関数で取り除くようにすれば、
問題は解決しますので、クエリを次のように修正します。

電話番号: Trim(Nz([T空白処理].[電話番号]," "))

Trim+Nz関数のネストですね。

Nz([T空白処理].[電話番号]," "
で、Nullを半角スペースで表示する。

まぁ置換するわけですね。

そうすれば、Nullはなくなりますので、
Trim関数でスペースを取り除く作業をするわけですね。

そして、忘れてはいけないのは、
抽出条件に「””」というダブルコーテーション×2を入力しておきます。

ExcelのIF関数でエラーを表示しないようにするときに、
「””」=空白という意味で使っていますが、

細かい説明をすると、Trim関数でスペースを取り除くと書きましたが、
『0バイトの文字列』に置換したというのが、正しいようで、
抽出条件に「””」を入れるということは、
0バイトの文字列を抽出するという意味になります。

この0バイトの文字列というのは、
文字列だけど文字を含まない
というデータというとわかりやすくなるかもしれませんね。

だから、Excelのエラーを表示させないように、
IF関数で、「””」=空白と使っていますが、
「文字列だけど文字を含まない」文字列を表示しているわけなので、
ExcelでCOUNTA関数を使うと、見た目が空白でも数えてしまうわけですね。

では、クエリを実行してみましょう。

このように、抽出することができました。

Null(ヌル)値と空白(スペース)の違いは、
AccessでもExcelでもついて回りますので、
少し知っているといいかもしれませんね。

7/27/2018

Excel関数一覧表にアイテムを追加しました。【function:2018/07/27】

Excel関数一覧表にアイテムを追加しました。

<Excel関数一覧>

「Excelテクニック and MS-Office recommended by PC training」の
目次サイト
Officeソフトのスキルアップサイト」のExcel関数一覧表に
次のアイテムを追加しました。

CHAR キャラクター
文字コードを文字に変換する

CODE コード
文字を文字コードに変換する

UNICHAR ユニコードキャラクター
数値で指定したUnicode番号の文字に変換

UNICODE ユニコード
文字列の最初の文字のUnicode番号を返す

NUMBERVALUE ナンバーバリュー
特定の地域に依存しない方法で文字列を数値に変換する

EXACT イグザクト
英字の大文字と小文字を区別して文字列が一致するか比較する

CLEAN クリーン
文字列中に含まれる制御文字を取り除く

TRIM トリム
不要なスペースを削除する

REPT リピート
文字列を指定回数だけ繰り返して表示する

文字列の関数ですね。意外と「NUMBERVALUE関数」をよく使っているよ
という外資系の人っていますよね。

7/25/2018

Excel。表が悪いと、グラフの横軸が1・2・3と変わってしまうのでどうしたらいい?Office365対応【Horizontal axis】

Excel。表が悪いと、グラフの横軸が1・2・3と変わってしまうのでどうしたらいい?Office365対応

<グラフ:横軸(Office365)>

Excelのグラフは、元になる表がないと、グラフを作ることができません。

ところが、その元になる表が、表としては成立していても、
グラフとしては、う~ん。というケースがあります。

そこで、今回は、グラフを作ってみたら、
横軸が、1・2・3と変わってしまうケースの対策方法をご紹介していきます。

まずは、次の表があります。

この表は、表として成立していますが、このデータを使って、
集合縦棒グラフを挿入してみましょう。

A1:B5を範囲選択して、

挿入タブの縦棒/横棒グラフの挿入から、集合縦棒を選択しましょう。

すると、集合縦棒グラフが挿入されるのですが、何か変です。

横軸の項目が1~4になっていて、棒グラフは、売上高だけなのに、
なぜか”年”という棒グラフが表示されています。

種明かしをすると、元の表に原因があって、
A列の年が、2015年ではなくて、2015となっています。

つまり、数値として、Excelが判断してしまったのです。

ExcelはA列とB列を数値のデータと判断したため、横軸の項目名がないので、
1~4という項目名をいれた集合縦棒グラフを挿入してきたわけです。

これは、集合縦棒グラフだから発生したわけではありません。

横棒グラフでも、折れ線グラフでも、発生してしますのです。

元の表を2015年と入力し直せばいいのですが、グラフを直す方が早いので、
修正をしていきましょう。

グラフツールのデザインタブにある、データの選択をクリックします。

すると、データソースの選択ダイアログボックスが表示されます。

凡例項目(系列)にある、年を選択して、
削除ボタンをクリックして、年を削除します。

年の棒グラフは不要なための処理ですね。

そして、横(項目)軸ラベルの編集ボタンをクリックします。

軸ラベルダイアログボックスが表示されますので、
軸ラベルの範囲を、マウスを使って、A2:A5を範囲選択します。

=横軸123!$A$2:$A$5
のように、変わりますので、OKボタンをクリックしましょう。

データソースの選択ダイアログボックスに戻りますので、
OKボタンをクリックしましょう。

これで、グラフの横軸が修正することができました。

些細なことなのですが、結構面倒な処理でしたね。

ところが、この作業が必要なのは、Excel2010までで、
Excel2013以降はちゃんと、
横軸が2015のように数値であってもグラフを挿入してくれます。

そのやり方も合わせてご紹介しておきましょう。

【すべてのグラフを表示ボタンを使う】

A1:B5を範囲選択して、
挿入タブのグラフにある、「すべてのグラフを表示」ボタンをクリックします。

グラフの挿入ダイアログボックスが表示されます。

その中から、集合縦棒を選択して、OKボタンをクリックします。

このように、編集をしなくても、一発で横軸の項目が数値であっても、
グラフを挿入することができました。

もしかしたら、今後、教える時には、
この「すべてのグラフを表示」ボタンを
先に紹介することになるのかもしれませんね。

7/23/2018

今週のFacebookページの投稿 2018/07/16-2018/07/22

今週のFacebookページの投稿 2018/07/16-2018/07/22

<Facebookページ>

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

7月16日
Excel。max関数は最大値関数です。

7月17日
Excel。min関数は最小値関数です。

7月18日
Excel。large関数は○番目に大きい値を算出関数です。

7月19日
Excel。small関数は○番目に小さい値を算出関数です。

7月20日
Excel。
precentile.exc関数は上位下位○%の位置にある値を算出関数です。

7月21日
Excel。
precentile.inc関数は上位下位○%の位置にある値を算出関数です。
ちなみに引数に1を指定すると最大値になります。

7月22日
Excel。product関数は掛け算関数です。

Excelテクニック and  MS-Office recommended by PC training
https://www.facebook.com/exceltechniqueandmsoffice/

Excelのショートカット一覧はこちらで書いております。
http://yandss.p2.weblife.me/shortcutkey.html

7/22/2018

Excel。事務職のデータ分析26。相関関係!データとデータに関係性はあるのか?【Correlation】

Excel。事務職のデータ分析26。相関関係!データとデータに関係性はあるのか?

<相関関係:CORREL関数>

データ。ただの数値も集まれば、そこから何かが読み取れたりしますが、
今回は、相関関係というのをご紹介していきます。

相関関係というのがどういうものなのかというと、例として。
気温が高いと、アイスクリームが売れる。
なんてものがあります。

気温というデータと、
売上数、または、売上金額というデータの間に関係性はあるのかどうなのか?
ということで、見た目とか、経験値とか、そういうアバウトな感覚ではなくて、
数値(相関係数)として見ることが出来れば、
社内にある様々なデータから、
色々読み取れる一因を見つけることが出来る可能性があります。

【CORREL関数で算出】

相関関係は、CORREL関数を使うことで、
あっさり簡単に相関係数を算出することが出来ます。

分析系の数値を算出するには、
関数を使うと比較的容易に算出することができるというのが、
不思議なところですね。

では、次のデータを使っていきます。

草野球の成績表なのですが、勝率と得点。勝率と失点。

勝率と防御率。勝率と盗塁に、何らかしらの関係があるのかを確認するために、
相関係数を求めていきます。

では、G8の数式はどのようになっているのか、確認してみましょう。

CORREL関数を使って相関係数を算出しています。

配列1には、勝率なので、$F$2:$F$7。
数式をオートフィルでコピーしますので、絶対参照を設定しておきます。

配列2には、G2:G7。
得点は勝率と関係性があるのかどうなのか?ということを知りたいわけですから、
G2:G7と設定しています。

G8の数式は、
=CORREL($F$2:$F$7,G2:G7)

そして、算出された相関係数はそれぞれ、
得点が0.735561477
失点が-0.949527094
防御率が-0.981589095
盗塁が0.150038332
と算出できました。

しかしこれでは、何が何だかわかりませんよね。
相関係数は、
1に近ければ、「正の相関」が強い
-1に近ければ、「負の相関」が強い
0に近ければ、「無関係
ということを意味しています。

なお、正の相関とは、
一方が増えれば他方も増えるという関係のことをいいます。

負の相関とは、
一方が増えれば他方は減るという関係のことをいいます。

得点は、0.735561477なので、1に近いですが、
失点は、-0.949527094のほうが-1に近いので、
得点を多くとるよりも、失点を抑制するほうが、
勝率にはいい影響があるようにみえます。

なので、防御率が、-0.981589095と、
失点と連動している数値がより-1に近いので、
失点しないようにしていくほうがいいのでは?というのが見えてくる感じですね。

ほとんど関係がない。無関係なのが、「盗塁」ですね。
盗塁は、0.150038332と0(ゼロ)に近いですよね。
ということで、盗塁は、勝率には、あまり影響力がないように見えます。

【相関関係≠因果関係】

今回ご紹介した、「相関関係」ですが、この相関関係は、
あくまでも、何らかの関係があるというもので、
「因果関係」があるとは限りません。

隠れた要因があるために、
相関官営があるように見えることを『疑似相関』といいます。

今回ご紹介した、CORREL関数を使えば、
このようなデータどうしに関係性があるのか?ないのか?見えてきますので、
使ってみると面白いですよ。

ただし、因果関係ではあるとは限りませんので、注意しましょう。

7/21/2018

Officeソフトのスキルアップに追加しました。2018/07/21

Officeソフトのスキルアップに追加しました。

<目次サイト>

このBLOGの記事を、
目次サイトの【Officeソフトのスキルアップ】に追加しました。


横縞を条件付き書式とMOD&ROW関数のコラボで設定してみよう。
https://infoyandssblog.blogspot.com/2015/11/excelsortmod.html


だからシマシマの設定はやるなっていったのにということを聞きまして。
https://infoyandssblog.blogspot.com/2015/11/excelsort_20.html


並び替え。よく引っかかる罠にご注意ください。
https://infoyandssblog.blogspot.com/2015/11/excelsort.html


マクロ01。いちいち、入力欄を削除するのが面倒!そこで、マクロを使ってみよう
前編
https://infoyandssblog.blogspot.com/2015/11/excelmacro01.html


マクロ02。いちいち、入力欄を削除するのが面倒!そこで、マクロを使ってみよう
中編
https://infoyandssblog.blogspot.com/2015/11/excelmacro02.html


マクロ03。いちいち、入力欄を削除するのが面倒!そこで、マクロを使ってみよう
後編
https://infoyandssblog.blogspot.com/2015/11/excelmacro03.html

7/19/2018

Excel。マクロ031。最初から非表示列をスパークラインでプロットするにはマクロでやる【Spark line】

Excel。マクロ031。最初から非表示列をスパークラインでプロットするにはマクロでやる

<Excel VBA:スパークライン>

Excel2010から登場した新機能『スパークライン』。

大量のデータを折れ線グラフで動向を確認しようとすると、
何が何だか分からなくなってしまうので、大量のデータを確認するときに、
スパークラインを使うといいわけですが、このスパークライン。

ちょっとしたことで、プラスアルファをしないといけないことがありまして、
それは、非表示列を含めてスパークラインを挿入すると、
ちょっと困ったことになります。

では、C列からF列を非表示にしてみましょう。

一目瞭然ですが、スパークラインは、
可視できるデータのみを使ってプロットする特性があります。

このような場合は、
非表示データも含めてプロットするように指示する必要が生じます。

非表示列も含めて、プロットするには、スパークラインツールのデザインタブにある、
データの編集から、非表示および空白のセルをクリックします。

非表示および空白のセルの設定ダイアログボックスが表示されますので、
「非表示の行と列のデータを表示する」にチェックマークをつけて、
OKボタンをクリックしましょう。

このような処理をすることで、
非表示のデータも含めてプロットすることができますが、
スパークラインを挿入する最初から列が非表示な場合は、
表示することが出来ません。

そこで、一度、プロットしてからでもいいのですが、
Excel VBAでマクロを作ってあげることで、列が非表示であっても、
最初から非常時データを含めた状態でプロットした
スパークラインを挿入することが出来ます。

【Exce VBAでスパークラインを挿入してみる】

まず、単純にスパークラインを挿入するには、
次のようなExcel VBAの構文で挿入することが出来ます。

Sub スパークライン挿入()
    Range("h9:h12").SparklineGroups.Add Type:=xlSparkLine, SourceData:="b9:g12"
End Sub

簡単に説明をすると、
Range("h9:h12").SparklineGroups.Add は、
H9:H12に、SparklineGroups.Add。

つまり、スパークラインを追加するということですね。

それで、折れ線グラフなのか?棒グラフなのか?というのを、
Type:=xlSparkLine で設定するわけですね。

xlSparkLine は、折れ線グラフです。

最後の、SourceData:="b9:g12"は、SourceDataとあるように、
元のデータ範囲ということですね。

では、実行してみましょう。

確かにスパークラインを挿入することはできましたが、
非表示列のデータはプロットされていませんね。

そこで、次のようにExcel VBAの構文をアレンジします。

Sub スパークライン非表示対応()
    Range("h9:h12").SparklineGroups.Add Type:=xlSparkLine, SourceData:="b9:g12"
    Range("h9:h12").SparklineGroups(1).DisplayHidden = True
End Sub

1行目は、同じですので、説明は省略します。

2行目の、
Range("h9:h12").SparklineGroups(1).DisplayHidden = True
について、説明していくと、

H9:H12のスパークラインを、
DisplayHidden = True DisplayHiddenプロシージャーをTrueにすると、
非表示列のデータも含めてプロットしてくれます。

では実行してみましょう。

このように、非表示列のデータも含めて、プロットしてくれました。

データの動向を把握しやすいスパークラインとマクロのコンビネーションは、
相性が比較的いいようですので、使ってみるといいかもしれませんね。

7/18/2018

Excel Technique_BLOG Categoryに追加しました。2018/07/18

Excel Technique_BLOG Categoryに追加しました

<目次サイト>

このBLOGの記事を、
カテゴリー分けにした【Excel Technique_BLOG Category】に追加しました。


曜日を表示するには、ユーザー定義書式
https://infoyandssblog.blogspot.com/2013/05/excel.html


累積を求めるときには、sum関数の範囲をアレンジ。
https://infoyandssblog.blogspot.com/2013/05/excelsum.html


RANK関数。RANK.EQ とRANK.AVGの違い。
https://infoyandssblog.blogspot.com/2013/05/excelrankrankeq-rankave.html


AVERAGE関数とMEDIAN関数
https://infoyandssblog.blogspot.com/2013/05/excelaveragemedian.html


Excel。おなじみ、VLOOKUP関数。範囲って何?列番号ってどれ?
https://infoyandssblog.blogspot.com/2013/05/excelvlookup.html


VLOOKUP関数。応用編。2つの表から検索するには?
https://infoyandssblog.blogspot.com/2013/05/excelvlookup_22.html


Excel。Phonetic関数はふりがなの関数です。
https://infoyandssblog.blogspot.com/2013/05/excelphonetic.html


Excel。足し算。和算はSUM関数を使うことをお勧めします。
https://infoyandssblog.blogspot.com/2013/05/excelsum_27.html


Excel。3D集計(串刺し)をつかってみよう!
https://infoyandssblog.blogspot.com/2013/05/excel3d.html