3/09/2018

Access。誕生日から年齢を算出するって聞くけど、どうやるの?【age】

Access。誕生日から年齢を算出するって聞くけど、どうやるの?

<IIF+DATEDIFF関数+DATE関数+Format関数>

次のテーブルがあります。

Accessのテキストにはよく、単価×数量=金額などの計算は、
演算フィールドをクエリで作って算出しますとか記載されていて、
さらに、誕生日などの日付から、
満年齢や所属年数を算出すると記載されているのですが、
なかなか、年齢を算出する方法が掲載されていないので、
今回は、このテーブルにある誕生日フィールドを使って、
Accessではどのようにして、
年齢を算出したらいいのかというのをご紹介していきます。

確認ですが、Excelでは、どのように満年齢を算出するか、覚えていますか?

『DATEDIF関数』を使って算出するということでしたね。

ちなみにこのDATEDIF関数は、
手入力でないと作成することができない関数でしたね。

AccessにもこのDATEDIF関数と同じような、
DateDiff関数というのがあります。

まずここでの注意点ですが、最後に”f”が追加されています。
Iif関数と混在してしまうのですが、”i”が2個ではなくて、”f”が2個です。

ただ、この関数だけでは、Accessで年齢を算出することが難しいのですが…

それでは、クエリを作ってみましょう。
※Date関数を使用しておりますが、
この資料を作成しているのは2017年12月26日です。

年齢というフィールドを次のように作りました。

年齢: DateDiff("yyyy",[誕生日],Date())

では、確認してみましょう。

このように、年齢を算出してくれます。

Date()は今日を表します。

“yyyy”は、Accessでは、”年”を算出してくれます。”y”だと、
誕生日から今日までの日数を算出してしまいます。

”d”の日を算出するのと同じ結果を算出します。

ところが、よく見ると、年齢がきちんと算出されていません。

今日は2017年12月26日なので、
大久保さんは、まだ誕生日を迎えていないので、36歳のはず。

実は、ここが最大の問題点がありまして、
テキストではなかなか年齢を算出することを紹介していないわけです。

なぜこのようなことが起こってしまうのかというと、
DateDiff関数は、その期間中にある1月1日をカウントした結果を
算出しているからなのです。

”数え年”のような方法で算出しているわけですね。

なので、12月31日でも、すでに誕生日を迎えた年齢を算出しまっているのです。

そのため、年齢を算出するための演算フィールドは、
次のように修正する必要があります。

年齢2: IIf(Format([誕生日],"mm/dd")>Format(Date(),"mm/dd"),DateDiff("yyyy",[誕生日],Date())-1,DateDiff("yyyy",[誕生日],Date()))

とりあえず、結果を見てみましょう。

このように、12月31日の大久保さんだけは、
36歳のままになっていますよね。

これで、誕生日から年齢を算出することができました。

この演算フィールドを説明すると、
もし、誕生日が今日よりも大きければ、算出した結果-1をします。

そうでなければ、年齢を算出。という処理をしております。

Fomat関数を使って表示形式で、月日にして比べております。

このように、満年齢や就業年数をAccessで算出するには、
ひと手間かかりますので、Excelにエクスポートして、
DATEDIF関数を使って算出するほうが楽なのかもしれませんね。

3/07/2018

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

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

<目次サイト>

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


郵便番号のハイフンを挿入したり、削除したりするにはどうしたいいの?その2
https://infoyandssblog.blogspot.jp/2016/06/excelzip2.html


三重ドーナツグラフって作れるのですか?というご質問にお答えして
https://infoyandssblog.blogspot.jp/2016/06/excel-triple-donut.html


表示形式で日付を”曜日”に変えるとつくかつかないかで、”曜”だけつけるには?
https://infoyandssblog.blogspot.jp/2016/06/exceldisplay-format.html


半円グラフを作ったら、データラベルのパーセントの値が変?というご質問
https://infoyandssblog.blogspot.jp/2016/06/excelsemicircle-graph.html

3/06/2018

Excel。条件付き最大値を求めることが出来る関数がoffice365のExcel2016で登場【MAXIFS】

Excel。条件付き最大値を求めることが出来る関数がoffice365のExcel2016で登場

<MAXIFS関数・MINIFS関数>

Excelで、最大値や最小値を算出するには、
MAX関数とMIN関数を基本的に使っていますね。

オートSUMボタンにあるぐらいに、
ビジネスでは頻度が高く使用していると思いますが、
このMAX関数やMIN関数は、
条件をつけた途端に使えなくなってしまう関数だったのですが、
MAXIFS関数・MINIFS関数というのが登場しました。

ただ残念ながら、office365のExcel2016に追加されたので、
通常のExcel2016には追加されておりませんので注意してください。

【MAXIFS関数】

次の表があります。

B列には店舗名。C列は東京か神奈川のブロック名。
D列は大型店なら○。E列は売上高という表ですね。

H3に大型店でブロックが東京の売上高の最大値を算出したいという表です。

このような条件に対応しようとすると、
オートフィルターを使うなど、アレコレ考えないといけなかったわけですが、
office365のExcel2016に追加された『MAXIFS関数』を使えば
とても簡単に算出することが出来てしますのです。

H3をクリックして、MAXIFS関数ダイアログボックスを表示しましょう。

最大値には、$E$2:$E$11
ここには、最大値を見つけたい範囲を設定します。

H4の神奈川もオートフィルで数式をコピーして算出させるので、
絶対参照を設定しています。

条件範囲1には、$C$2:$C$11
順番は前後して構いませんが、ここでは、東京かどうかを判断させますので、
ブロック名を範囲選択しています。
ここも絶対参照を設定しています。

条件1には、G3。
G3には東京と入力されています。
特にオートフィルで数式をコピーしないようならば、
直接”東京”と入力してもOKですね。

条件範囲2には、$D$2:$D$11
大型店かどうかを判断するための範囲選択ですね。
ここも絶対参照を設定しておきます。

条件2には、”○”
○があるセルを検索するということですね。

あとは、OKボタンをクリックして、
オートフィルで数式をコピーしてみましょう。

簡単に算出することが出来ましたね。

ちなみにH3の数式は、
=MAXIFS($E$2:$E$11,$C$2:$C$11,G3,$D$2:$D$11,"○")
なお、この引数の条件数は、最大126個まで設定できますが…126個って。

形としては、SUMIFSとかの~IFSと同じような引数をもっていますので、
わかりやすい関数ですね。

続いて、MINIFS関数も確認しておきましょう。

【MINIFS関数】

I3をクリックして、MINIFS関数ダイアログボックスを表示しましょう。

引数は同じですので、MAXIFS関数がMINIFS関数に変わっただけですね。

しかしなぁ~、引数。
最大値じゃなくて、MINIFSだから、最小値なんだろうけどね。

まぁ、office365のExcel2016なので、
今後修正されるかもしれませんね。

ということで、I3の数式は、
=MINIFS($E$2:$E$11,$C$2:$C$11,G3,$D$2:$D$11,"○")

オートフィルで数式をコピーすると、完成しましたね。

Office365のExcel2016に他にも、
新しい関数が追加されていますので、確認しておくといいかもしれませんね。

3/04/2018

今週のFacebookページの投稿 2018/02/26-2018/03/04

今週のFacebookページの投稿 2018/02/26-2018/03/04

<Facebookページ>

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

2月26日
Excel。グラフ。
グラフが表示されているところのサイズを調整したい時は、
プロットエリアでサイズ変更ハンドルで調整できますね。

2月27日
Excel。グラフ。
Excel2010では11種類のグラフを作ることができますね。

2月28日
Excel。グラフ。
棒グラフは、項目ごとに値の大きさを比較するときに使うと便利ですね。

3月01日
Excel。グラフ。
積み上げ棒グラフは、
項目ごとに積み上げた値を比較するときに使うといいですね。

3月02日
Excel。グラフ。
100%積み上げ棒グラフは、
棒グラフ全体を100として値を割合で表示したものですね。
ニュースで政党支持率とかで使う場合が多いですね。

3月03日
Excel。グラフ。
折れ線グラフは、時間の経過に伴う変化や傾向を表すのに向いていますね。

3月04日
Excel。グラフ。
面グラフは、データとデータの差がハッキリわかりやすいグラフですね。

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

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

3/03/2018

Excel。事務職のデータ分析その18。中央値や標準偏差をまとめて出力する分析ツール【Analysis tool】

Excel。事務職のデータ分析その18。中央値や標準偏差をまとめて出力する分析ツール

<基本統計量と分析ツール>

次の表がありまして、

こちらのデータを使って、平均値や標準偏差などの基本的な統計量を、
それぞれ算出するのもいいのですが、それはそれで、面倒ですね。

そこで、分析ツールの「基本統計量」を使うと、
アッという間に算出することができますので、確認していきましょう。

まず、データタブに、データ分析があるかどうかの確認が必要ですね。

このように、ない場合は、アドインで追加する必要があります。

ファイルタブのオプションから
Excelのオプションダイアログボックスを表示します。

アドインをクリックして、
「分析ツール」を選択して、設定ボタンをクリックします。

アドインダイアログボックスが表示しますので、
分析ツールにチェックマークをつけてOKボタンをクリックしましょう。

データタブに「データ分析」が表示されましたね。

これで、分析ツールを使うことができます。

では、早速、データ分析をクリックしましょう。

データ分析ダイアログボックスが表示されますので、
ヒストグラムとか移動平均とかありますが、
この中から「基本統計量」を選択して、OKボタンをクリックしましょう。

基本統計量ダイアログボックスが表示されます。

入力範囲には、$C$1:$D$11

表のデータのところですね。ここでは、見出し行も追加した範囲になります。

先頭行をラベルとして使用にチェックマークを付けます。
このために、先ほどの入力範囲に見出し行も含めて選択しているわけですね。

出力先ですが、今回は同じシート上に表示させますので、$F$1と入力します。

最後に、統計情報からK番目に小さな値まで、
今回は表示させたいので、チェックマークをつけておきます。

ちなみに、K番目に大きな値を2にすると、2番目という意味ですね。

これは、LARGE関数と考えるとわかりやすいですね。
小さいほうは、SMALL関数ですね。

では、OKボタンをクリックしてみましょう。

基本統計量が表示されてきますので、列幅を自動調整で広げておきましょう。

このように、分析ツールを使うことで、
簡単に、「基本統計量」を算出することができましたね。

平均や標準偏差など、確かに関数を使って算出することはできますが、
この項目数を自分自身で算出させていく時間は結構かかりますよね。

この基本統計量の項目を見てみると、最小と最大がありますので、
先ほどのK番目は1でないほうがいいですよね。

重複しちゃっていますので、もったいないですね。

会議の資料に平均や中央値程度だけでしたら、
分析ツールの基本統計量を使ってみるというのもいいかもしれませんね。

3/02/2018

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

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

<TOP10>

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

1位
Excel。Graph。縦棒グラフに自動的に平均値の線を引くにはどうしたらいい?
https://infoyandssblog.blogspot.jp/2015/03/excelgraph.html

2位
Excel。折れ線グラフを交点0からスタートさせるには?
https://infoyandssblog.blogspot.jp/2013/07/excel0.html

3位
Excel。折れ線グラフの間を塗りつぶしたいけど、どうしたらいいの?
https://infoyandssblog.blogspot.jp/2015/12/excelgraph.html

4位
Excel。B/S(貸借対照表)をグラフで作ってみよう!
https://infoyandssblog.blogspot.jp/2013/07/excelbs.html

5位
Excel。一日のタイムスケジュールを管理する24時間横棒グラフを作ってみる
https://infoyandssblog.blogspot.jp/2016/03/excel24hour-schedule24.html

6位
Excel。円グラフを使って1日のスケジュールを作りたい
https://infoyandssblog.blogspot.jp/2016/07/excelpie-chart1.html

7位
Excel。出勤時間を自動で塗りつぶす日勤シフト表を作ってみる。
https://infoyandssblog.blogspot.jp/2015/05/excelroster.html

8位
Excel。アンケート結果を年代別で集計する方法
https://infoyandssblog.blogspot.jp/2013/12/excel-rounddowncountif.html

9位
Excel。散布図をアレンジしたPPMカテゴリー4散布図を作ってみよう。
https://infoyandssblog.blogspot.jp/2018/02/excelppm4scatter-plot.html

10位
Excel。横棒グラフの塗りつぶしを、条件で自動的に色分けしたい。
https://infoyandssblog.blogspot.jp/2016/10/excelgraph.html

2/28/2018

Excel。マクロ023。オリジナルの基準で並び替えを実施したい【Sort】

Excel。マクロ023。オリジナルの基準で並び替えを実施したい

<Excel VBA>

次の表があります。

この表を担当順に並び替えを行いたいのですが、
池辺,大崎,品川,渋谷の順に並び替えを行いたいとします。

まずは、Excelの機能である昇順の並び替えを実行してみましょう。

B1をクリックして、データタブの昇順をクリックすると、
次のように並び替えを行いました。

並び変わったのですが、順番が、渋谷,大崎,池部,品川の順になっていますね。

今回は、池辺,大崎,品川,渋谷の順にしたいのですが、
なっていないわけでして、このような場合、Excelの機能だけで行うとしたら、
Excelのオプションにある、
詳細設定の「ユーザー設定リストの編集」に追加することで、
オリジナルの並び替えを行うことはできますよね。

しかし、いちいち登録するのも大変ですね。
そこで、Excel VBAを使ってみると、非常に短い構文で作ることができます。

Sub オリジナル並び替え()
    With ActiveSheet.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("b1"), CustomOrder:="池辺,大崎,品川,渋谷"
        .SetRange Range("a1").CurrentRegion
        .Header = xlYes
        .Apply
    End With
End Sub

Withステートメントを使っていますが、
これで、池辺,大崎,品川,渋谷の順で並び替えを行うことができます。

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

このように、並び替えを行うことができましたね。

では、構文を確認しておきましょう。

With ActiveSheet.Sort
アクティブシートの並び替えに関する処理を記述するという意味ですね。
End With
で、Withステートメントを終了しますので、忘れずに記述しましょう。

.SortFields.Clear
並び替えが実施されているかもしれないので、一度並び替えの条件をクリアーしておきます。

.SortFields.Add Key:=Range("b1"), CustomOrder:="池辺,大崎,品川,渋谷"
Key:=Range("b1") B1をキーとして、
CustomOrder オリジナルの"池辺,大崎,品川,渋谷"という順番を
指定してあげます。

.SetRange Range("a1").CurrentRegion
A1を含む表全体を並び替えの範囲とします。

.Header = xlYes
見出し行。すなわち1行目を見出し行としますか?ということなので、xlYes。
つまり、1行目を見出し行としますので、並び替えに混ぜないようにします。

.Apply
並び替えを実行するという意味ですね。

このようにすれば、
ユーザー設定リストの編集を加筆修正する必要はありませんね。

ついでに、NOフィールドを昇順で並び替えをして
最初の状態にするマクロを作ってみましょう。

Sub ナンバー並び替え()
    With ActiveSheet.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("a1"), SortOn:=xlSortOnValues, Order:=xlAscending
        .SetRange Range("a1").CurrentRegion
        .Header = xlYes
        .Apply
    End With
End Sub

実行してみると、最初の状態に戻りましたね。

大きく変わったのは、次の一文だけですね。
.SortFields.Add Key:=Range("a1"), SortOn:=xlSortOnValues, Order:=xlAscending

説明をすると、
SortOn:=xlSortOnValues
SortOnで、並び替えのキーをxlSortOnValues。
値で並び替えをするように指示をしております。

Order:=xlAscending
xlAscendingは、昇順のことですね。降順は、xlDescendingを使います。
あとは、ほぼ同じですね。

このように、Excel VBAを使った並び替えも
比較的簡単に作ることができますので、
知っておくといいのかもしれませんね。