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を使った並び替えも
比較的簡単に作ることができますので、
知っておくといいのかもしれませんね。

2/26/2018

Excel。散布図をアレンジしたPPMカテゴリー4散布図を作ってみよう。【Scatter plot】

Excel。散布図をアレンジしたPPMカテゴリー4散布図を作ってみよう。

<散布図(PPM)>

次のデータがあります。

来店回数と購入金額との関係は、散布図を使うと、
2つの数値からそのアイテムが全体のどこのポジションにあるのかが
わかりやすくなりますよね。

ただ、散布図を作るだけはわかりにくいので、
4つのカテゴリーにしてあげると、さらにわかりやすくなるそうでして、
それが、PPM(プロダクト・ポートフォリオ・マネジメント)

その4つのカテゴリーとは、
「花形(Star)」
「問題児「Question Mark)」
「負け犬(Dog)」
「カネのなる木(Cash Cow)」。

確かに、状況を把握するにはよさそうですね。

そこで、散布図にこの4つのカテゴリーわけをした情報を
追加したグラフを作ってみましょう。

次のグラフが今回作成する、散布図を使ったPPM(カテゴリー4)グラフです。

プロットエリアを自力で、図形を使ってカテゴリーを塗り分けるとしたら、
グラフの大きさが変わるたびに色々変更しないといけないので、不便です。

それでは、最初は、グラフを作るための表を作っていきましょう。

B13:C15のデータは、プロットエリアをカテゴリー分けするためのデータです。

まずは、散布図を作っていきますので、
B1:C11を範囲選択して、挿入から散布図を挿入していきます。

しっかりした散布図を作るのが先で、カテゴリー分けはその後に行うという流れです。

散布図が挿入されましたね。

グラフタイトルを変更して、縦軸と横軸の最高値を設定しておきましょう。

縦軸をクリックして書式タブのグラフ要素を縦軸にして、
選択対象の書式設定をクリックするか、縦軸をダブルクリックして、
軸の書式設定作業ウィンドウを表示したら、
軸のオプションから境界値の最大値を1000。
目盛間隔の目盛を200にします。

同じように、横軸も修正します。

横軸は、最大値を10。目盛は2としております。
続いて、軸ラベルを表示していきましょう。

グラフの要素に軸ラベルをプラスすると、
縦軸・横軸それぞれの軸ラベルが表示されます。

直接入力して変更してもいいのですが、表の見出しを使うので、
横軸の軸ラベルをクリックして、数式バーに”=”を入力して、
B1をクリックしましょう。

その後、横軸ラベルをクリックして確定させます。

こうすることで、B1の見出しを変更すると、
グラフの横軸のラベルも連動して変わります。

同じ方法で、縦軸も変更します。

ただ、縦軸の文字が横になっているので、縦書きに変更しましょう。

軸ラベルの書式設定作業ウィンドウを表示して、
タイトルのオプションの配置にある、文字列の方向を「縦書き」にします。

次に、散布図のマーカーが誰なのかわかりませんので、
マーカーのラベルを表示していきます。

グラフ要素のデータラベルにチェックをいれて、
その他のオプションをクリックします。

データラベルの書式設定作業ウィンドウのラベルオプションにある、
ラベルの内容の「セルの値」にチェックマークをいれると、
データラベル範囲ダイアログボックスが表示されるので、
A2:A11を範囲選択して、OKボタンをクリックします。

あとは、ラベルオプションの「Y値」のチェックマークを外しましょう。

グラフはこのようになりましたね。

これで、散布図は完成しましたので、
いよいよカテゴリー分けをしていきましょう。

【カテゴリー分け】

B13:C15を範囲選択して、コピーボタンをクリックします。

連続して、グラフをクリックして、貼り付けボタンの下側をクリックして、
「形式を選択して貼り付け」をクリックします。


形式を選択して貼り付けダイアログボックスが表示されます。


貼り付け方法は、「新しい系列」を選択して、
「先頭行を系列名として使用する」にチェックマークをつけます。

「先頭列~」のチェックマークは外しましょう。

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

グラフにダミーデータが貼り付きましたね。
このデータのグラフは第2軸を使用した100%積み上げ縦棒に変更しますので、
デザインタブのグラフの変更をクリックしましょう。

グラフの種類の変更ダイアログボックスが表示されますので、
組み合わせにして、色下側を第2軸に先にチェックマークをいれてから、
グラフの種類を100%積み上げ縦棒に変更します。

同じように色上側も変更してOKボタンをクリックしましょう。

100%積み上げ縦棒グラフをクリックして、
データ系列の書式作業ウィンドウの「系列のオプション」にある
要素の間隔を0%にしましょう。

それぞれの色を変えてあげると、グラフはこのようになりました。

第2軸の縦軸が不要なので見えなくしましょう。

Excel2013以降では、削除すると、
100%積み上げ縦棒グラフも削除されてしまうので、注意しましょう。

第2軸縦棒の軸の書式設定作業ウィンドウを表示しましょう。

軸のオプションの目盛にある。
目盛の種類を「なし」にして、ラベルの、ラベルの位置も「なし」にします。

最後に、「花形」などの文字を表示させていきます。

テキストボックスを使うのではなくて、
1と表示されているデータラベルの表示形式をアレンジしていきます。

花形と表示するデータラベルのみを選択して、
データラベルの書式設定作業ウィンドウを表示します。

ラベルオプションの表示形式のカテゴリを「ユーザー設定」にして、
表示形式コードに、
"花形";;;(セミコロン×3)にして、追加ボタンをクリックします。

こうすることで、"花形"という文字だけを表示することができます。

同じ手順で、
"問題児";;;
"金のなる木";;;
"負け犬";;;
と追加していきましょう。

そして、完成したのが、散布図を使ったPPM(カテゴリー4)グラフです。

色々なテクニックを織り込んでいますが、
機会がありましたら、作ってみてはいかがでしょうか?

2/25/2018

今週のFacebookページの投稿 2018/02/19-2018/02/25

今週のFacebookページの投稿 2018/02/19-2018/02/25

<Facebookページ>

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

2月19日
Excel。ショートカット。
Ctrl+1で、セルの書式設定ダイアログボックスを表示できます。
とてもよく使用しますね。

2月20日
Excel。ショートカット。
Ctrl+2で、太字の設定/解除をすることができますね。

2月21日
Excel。ショートカット。
Ctrl+3で、斜体の設定/解除をすることができますね。

2月22日
Excel。ショートカット。
Ctrl+4で、下線の設定/解除をすることができますね。

2月23日
Excel。ショートカット。
Ctrl+5で、取り消し線の設定/解除をすることができますね。

2月24日
Excel。ショートカット。
Shiftキー+Altキー+=キーで、なんと、SUM関数が挿入されます。
確かにΣのオートSUMボタンを押すよりかは早いけど…

2月25日
Excel。ショートカット。
Ctrlキー+PageDownキーで、次のシートに移動できます。

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

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

2/23/2018

Excel。条件分岐の新しい関数。IFS関数は多分岐だけじゃなくて、とっても便利

Excel。条件分岐の新しい関数。IFS関数は多分岐だけじゃなくて、とっても便利

<IFS関数>

Office365のExcel2016に加わった、新しい関数。【IFS関数】。

この関数は、今までのIF関数に”S”を付いただけでなく、
とっても便利な関数なので、今回はIFS関数をご紹介していきます。

次の表があります。

点数が80点以上ならばA。それ以外ならば、Bというようにするならば、
IF関数を使いますよね。

では、
点数が80点以上ならばA。
点数が60点以上ならばB。
点数が40点以上ならばC。
点数が20点以上ならばD。
それ以外は、E。

というように条件分岐をする場合は、どのようにするのでしょうか?

このような場合、IF関数しかなかった時には、
IF関数の中にIF関数をいれるネストで数式を構成していきますよね。

しかし、IF+IF関数のネストぐらいならばいいのですが、
今回のように、5分岐させるとしたら、数式はどのようになるのでしょうか?

C2に数式を作ると次のようになりますね。

=IF(B2>=80,"A",IF(B2>=60,"B",IF(B2>=40,"C",IF(B2>=20,"D","E"))))

これだけでも、ネストの回数が多い感じがしますが、
10分岐とかなれば、IF関数を使うとしたら、想像しただけでも、
頭が痛くなりそうですよね。

そうなると、VLOOKUP関数を使ったり、
あるいは、CHOOSE関数を使ったりする方法がありますよね。

ただ、VLOOKUP関数はリストを作らないといけないし、
CHOOSE関数は、どうやったら、
1という数値を導き出せるかを考えなければいけません。

今回のように20ずつの差を考えると、
CHOOSE関数を使うのは難しいでしょう。

そこで、今回登場したIFS関数が便利なんです。

では、C2をクリックして、IFS関数ダイアログボックスを表示しましょう。

論理テスト1に、B2>=80
値が真の場合1に、”A”
と入力して、それを繰り返していきます。

通常のIF関数ならば、偽の場合に、IF関数をネストしますが、
IFS関数はネストしません。

最後の論理テスト5には、B2>=0でもいいのですが、
それ以外ということ、TRUEを入力します。
そして、値が真の場合5には、”E”と入力して、

OKボタンをクリックしましょう。

C2の数式は、
=IFS(B2>=80,"A",B2>=60,"B",B2>=40,"C",B2>=20,"D",TRUE,"E")

では、オートフィルで数式をコピーしてみましょう。

このように、算出することが出来ましたね。

数式自体、スリムでわかりやすいですね。

これならば、仮に条件分岐が10個あっても、
楽に数式を作ることができますよね。

でも、このIFS関数の真骨頂はココから。

次の表をご覧ください。

説明すると、E列に氏名の列があります。

G2に1と入力したら、氏名の1番目の内藤さんをH2に抽出するとしたら、
どのようにしたらいいでしょうか?

VLOOKUP関数を思い浮かべる人もいるかと思いますが、担当者番号などの通し番号。

すなわち主キーがありませんよね。
これでは、VLOOKUP関数は使えません。
ROW関数とかいろいろな関数のアイディアを
使わないといけないイメージがありますが、
このようなケースも、IFS関数で簡単に設定できるのです。

では、H2をクリックして、IFS関数ダイアログボックスを表示しましょう。

論理テスト1に、G2=1
値が真の場合1に、E2
として、繰り返していきます。

最後は、
論理テスト6に、G2=6
値が真の場合6に、E7
として、OKボタンをクリックしましょう。

数式は、
=IFS(G2=1,E2,G2=2,E3,G2=3,E4,G2=4,E5,G2=5,E6,G2=6,E7)

これで、出来ちゃうんです!

アイディア如何で色々なところで使えそうな感じがする、IFS関数。

機会があれば使ってみてください。

ただ、残念ながら、2018年1月1日時点で、
Office365のExcel2016にしか実装されていませんので注意が必要です。

通常のExcel2016には、ありませんので、ご注意のほど。

そうそう、注意が必要なのは、Excelのベテランさん。

Office365のExcel2016から勉強すると、IF+IF関数じゃなくて、
IFS関数を勉強してくるでしょうから、
現場で、IF+IF関数を読めない人が増えると思いますので、
教える準備を将来しておかないといけないのかもね。

2/21/2018

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

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

<Excel関数一覧>

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

PMT
ピーエムティー:ペイメント
ローンや投資の定期支払額を算出

PPMT 
ピーピーエムティー:プリンシプルペイメント
元利均等返済における指定期間の元金返済額を算出

IPMT
アイピーエムティー:インタレストペイメント
元利均等返済における指定期間の利息を算出

ISPMT 
アイエスピーエムティー:イズ・ペイメント
元利均等返済における指定期間の利息を算出:Lotus1-2-3互換性維持

CUMIPMT
キュムアイピーエムティー:キュミュラティブ・イントレスト・ペイメント
元利均等返済における指定期間の金利累計を算出

CUMPRINC
キュムプリンク:キュミュラティブ・プリンシプル
元利均等返済における指定期間の元金返済額累計を算出

RATE
レート
元利均等返済における利率を算出する

NPER
エヌパー:ナンバー・オブ・ピリオド
元利均等返済における支払回数を算出

PV
ピーヴィ:プレズント・バリュー
現在の価値を算出

FV
エフヴイ:フューチャー・バリュー
将来の価値を算出する

RRI
アールアールアイ:レリバント・レート・オブ・インタレスト
将来の価値から利率を算出する

NPV
エヌピーヴイ: ネット・プレズント・バリュー
キャッシュフローに基づいた正味現在価値を算出

Officeソフトのスキルアップサイト
https://sites.google.com/view/infoyandss/ホーム

2/19/2018

Access。○ヶ月後を算出。ExcelはEDATE関数、ではAccessでは?さらに月末は?

Access。○ヶ月後を算出。ExcelはEDATE関数、ではAccessでは?さらに月末は?

<DateAdd関数とDateSerial関数>

この日付の1ヶ月後を求める場合、
Excelだったらば、EDATE関数を使うことで算出することができますよね。

それと同じことをAccessで行うとしたらどうしたらいいのか?ということで、
○ヶ月後を求める方法をご紹介していきます。


【○ヶ月後:DateAdd関数】

次のテーブルがあって、

この日付フィールドの1ヶ月後を求めていきますので、
挿入タブのクエリデザインで早速作っていきましょう。

1ヶ月後: DateAdd("m",1,[日付])

というフィールドを作ります。DateAdd関数を使い、
引数は、「”m”,1」は、1ヶ月という意味です。

数値を2にすれば、2ヶ月後とすることができます。
これだけで、日付の1ヶ月後を算出することができます。

【○週間後】

このDateAdd関数は、ExcelのEDATE関数よりも小回りが利くというか、
便利な点もあります。例えば、日付の2週間後を算出しようとしたら、
EDATE関数では求めることができませんので、
今日から2週間ならば、TODAY()+14のように関数を変えて対応しますが、
AccessはこのDateAdd関数で対応できちゃいます。

“m”を”ww”として、次のように変えてみましょう。

2週間後: DateAdd("ww",2,[日付])

では、データシートビューで確認してみましょう。

御覧のように、1ヶ月後と2週間後が算出できていますね。

ところで、
”m”は月のmonthの”m”ということだろうとは推察されるかと思いますが、
”ww”。なぜ、wが2個なのか?

それは、四半期を算出するときにご紹介した区分けと同じだからなのです。

改めてご紹介すると、”m”のところを次のように変更すれば、
DateAdd関数だけで算出することが可能になります。

yyyy ○年後を算出
m ○月後を算出
ww ○週後を算出
d ○日後を算出

1年後: DateAdd("yyyy",1,[日付])というフィールドを作るとこのようになります。

きちんと、1年後を算出することができましたね。

さて、○ヶ月後は求めることをご紹介しましたので、
今月末を求める方法もご紹介してきましょう。


【月末を算出:DateSerial関数】

月末を算出するには、Excelでは、
EOMONTH関数を使用すれば算出できることはご存じだと思います。

では、Accessではどのようにしたらいいのでしょうか?
そこで、登場するのは、『DateSerial関数』です。

では、次のフィールドを作っていきましょう。
月末: DateSerial(Year([日付]),Month([日付])+1,0)

データシートビューで確認してみましょう。

きちんと、月末が算出できていますね。
DateSerial関数はExcelのEOMONTH関数と考え方が異なる点があります。

DateSerial(Year([日付]),Month([日付])+1,0)
引数のYearは、年だとわかりますよね。

次の、Monthですが、+1(プラス1)していて、
さらに、Dayには、0(ゼロ)

どのようになっているのかというと、2018/1/15の場合、
2018年2月0日という日付を作ります。

当然、0日なんてものは、ないので、その前日。

つまり、前月の末日という意味になるのです。

これで、うるう年であろうが、31日だろうが、
関係なく、月末を算出することが可能になるわけなんですね。

このように、Excel関数同様に、
Access関数にも日付をコントロールする関数はありますが、
Excelと少し違うところがありますので、知っておくといいかもしれませんね。

2/18/2018

今週のFacebookページの投稿 2018/02/12-2018/02/18

今週のFacebookページの投稿 2018/02/12-2018/02/18

<Facebookページ>

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

2月12日
Excel。合計を一瞬で求める方法。
ご存知ですか?合計する数値が入力されているセルと、
合計を表示するセルを選択して、オートSUMボタンをクリックすると、
あら不思議。計算してくれます。

2月13日
Excel。合計を一瞬で求める方法。
ご存知ですか?合計を表示したいセル範囲を選択して、
オートSUMボタンをクリックすると、あら不思議。計算してくれます。

2月14日
Excel。
色や表示形式や線がすでにあるときに、オートフィルを使用したら、
書式なしコピーを忘れずに。せっかくの設定がパーになっちゃいますね。

2月15日
Excel。表示形式。
通貨表示形式のボタンは、通貨記号¥を付けて表示できますね。

2月16日
Excel。表示形式。
通貨表示形式のボタンの▼をクリックすると、$や€など選ぶことができますね。

2月17日
Excel。表示形式。
%ボタン。のパーセントスタイルは、
100倍して、パーセントの記号を付けます。1が100%です。

2月18日
Excel。表示形式。
数字には、,の桁区切りスタイルをつけて、表示した方が、分かりやすいですよね。

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

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

2/16/2018

Excel。事務職のデータ分析その17。平均線付勝敗スパークラインを作ってみよう【Spark line】

Excel。事務職のデータ分析その17。平均線付勝敗スパークラインを作ってみよう

<スパークライン>

Excel2007から登場した、『スパークライン』ですが、数多くの研修先などでよく、
「これ便利そうなんだけど、ただ折れ線グラフが表示されるだけで…」
ということを耳にします。

そこで今回は、スパークラインに少しアイディアを加えるだけで、
平均以上なのか以下なのかがわかる、
基準線付勝敗スパークライン】を紹介していきます。

なお、今回の基準線は、平均値を使いますので、
平均線付勝敗スパークライン】ということになるのかもしれませんね。

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

上半期の売上表で、平均値を算出している表ですね。

各店舗の状況をH列のスパークラインにまずは、表示してみると。

H2:H6を範囲選択して挿入タブのスパークラインにある、
”折れ線”をクリックすると、
スパークラインの作成ダイアログボックスが表示されます。

データ範囲に、B2:G6と入力をして、OKボタンをクリックしましょう。

折れ線のスパークラインが挿入されましたね。

テキストに掲載されているスパークラインの説明だとこれで、
終わるわけなのですが、これをどうやって、現場で使ったらいいのかが、
わかりにくいわけですね。

たとえば、スパークラインの種類を”縦棒”に変更しても

“勝敗”にスパークラインの種類を変えても、
だからどうしたらいいの?という感じですね。

そこで、せっかく平均値があるので、
これを基準として、平均以上か以下がわかるようなスパークラインにしていきます。

表を次のように変更します。

B8の数式は、=$B2-B$7
平均値との差を算出しています。

これを、オートフィルで、G12まで数式をコピーしています。

スパークラインのデータ範囲を変更します。

スパークラインツールのデータの編集をクリックして、
スパークラインの編集ダイアログボックスを表示します。

データ範囲を、B8:G12に変更して、OKボタンをクリックします。

軸を表示しますので、設定を変更していきますので、
スパークラインツールのデザインタブにある、軸をクリックします。

軸の表示と縦軸の最小値のオプションと最大値のオプションの両方とも、
”すべてのスパークラインで同じ値”にチェックをつけましょう。

スパークラインはこのようになっていますね。

最後に、マイナスの値の色を変更しますので、
表示の”負のポイント”にチェックを入れると、負のデータの色が変わります。

もし変わらない場合には、マーカーの色を変えてあげるといいでしょう。

さて、8行目から12行目までのデータは不要なので、
表示形式を変更して、見えなくしちゃいましょう。

A8:G12を範囲選択して、セルの書式設定ダイアログボックスを表示しましょう。

表示形式のユーザー定義を,;;;(セミコロン×3)としてOKボタンをクリックします。

これで、完成しました。

なお、スパークラインの種類を縦棒に変えてもいいですね。

このように、少しアイディアをプラスして、
現場でのツールとして使ってみてはいかがでしょうか?