いとあはれ

オカネとカラダに投資する実践記録です。オカネの投資先は投資信託、株式投資型クラウドファンディング、暗号通貨に。カラダの投資はトライアスロンやトレーニング、メンテナンスをメインに 男力を上げるために綴ります。

エクセルで作成したスケジュールを開いた時に、当日のスケジュールを最上段に表示する方法

複数人で共有しなければならないスケジュール表や、日ごとの業務を管理するためにエクセルを活用されている方も多いと思います。

今日何をするべきかをひと目みて把握できますし、誰でも簡単に扱える(修正できる)のが理由だと思います。今回はエクセルでスケジュールを管理する時のちょっとしたtipsをご紹介します。
 


エクセルで作成したスケジュールを開いた時に、当日のスケジュールを最上段に表示する方法

年末になると次年度の予算策定をしている会社さんも多いのではないでしょうか。特にこの予算策定時期になるとコスト削減に繋がるような相談を受けることが増えてきます。

例えば分析の方法だったり、報告書の書き方だったり、スケジュールの管理方法だったり…
f:id:e310s:20171216004043j:plain


「PCを起動したら、その日の業務スケジュールを表示できないか」


この少し曖昧な要望をシステム開発会社に依頼するとしたら、もう少し具体的な要望に書き換える必要があります。言い換えると…


「PCを起動したら、エクセルで作成したスケジュールを自動で開いて、当日のスケジュールを最上段に表示できないか」


という要望になるのかな、たぶん。これを実現するためには、PCで実現させたい動きをいくつかに分割し、それを実現する機能をみつけて組合せるという作業が必要です。

すべての目標は実現するステップを分割することで実現できます。

1.PCを起動したらエクセルを開く
 →Windowsのスタートアップを利用する

2.エクセルを開いたらマクロを動かす
 →マクロのAuto_Openを利用する

3.マクロで今日をみつける
 →マクロのFindを利用する

4.対象行を上段に表示する(スクロールする)
 →マクロのApplication.Gotoを利用する

…とこんな感じです。

マクロを利用されない方が悩んでしまうのは、2~4の実現方法だと思います。

もしGoogle検索して訪問してくれた人がいたとしたら、関数やVBの知識はどうでも良くて、実際に使える、具体的な実現方法を知りたいのだと思います。

(わたしもその一人ですので)2~4はまとめてしまって

2. エクセルで作成したスケジュールを開いた時に、当日のスケジュールを最上段に表示する
ためのマクロの記述を載せておきます。それでは実演!

実演1. PCを起動したらエクセルを開く

これは簡単です。Windowsで用意されているスタートアップ機能を使います。

Windowsのスタート > すべてのプログラム > スタートアップを右クリック > エクスプローラーに開きたい資料のショートカットを保存
すれば解決です。

実演2.エクセルで作成したスケジュールを開いた時に、当日のスケジュールを最上段に表示する で作成したエクセルのショートカットを保存してください。

気をつけなければいけないのは、エクセルのファイル名です。年月などの日付を指定してしまうと、毎月ショートカットを変更する必要があるので、ファイル名は固定としてください。

BATファイルを作成しても良いですが、、メンテナンスや業務引き継ぎが大変になると思います。

実演2.エクセルで作成したスケジュールを開いた時に、当日のスケジュールを最上段に表示する

そもそもやりたいことがイメージし難いかもしれませんが、本日が12/13(水)であれば、12/13(水)までスクロールさせて、一番上に表示させたいということです。

このエクセルを開いた時に…
f:id:e310s:20171215232056p:plain

こうなって欲しいと。
f:id:e310s:20171215232128p:plain

これを実現するには、エクセルの下拵えが必要です。
・ウィンドウ枠の固定
・A列に日付を入力

ウィンドウ枠の固定

ワークシートの先頭行を表示したままで、他の部分をスクロールするには、「ウィンドウ枠の固定」を用います。
f:id:e310s:20171215232235p:plain
(補足)クイック アクセス ツールバーに、よく使う機能を並べています

日付設定

スケジュールの基本となる日付。
今回はA列を日付(2017/12/1)にしてマクロを作ります。"2017/12/1"という表示ではなくて、"12/01"や"1"と表示したい場合も、"2017/12/1"と入力してください。これは「セルの書式設定」で好きなように表示変更できます。
f:id:e310s:20171215232549p:plain

たとえば、"12/01"としたい場合は、該当セルを選択 > 右クリック > セルの書式設定を選択し、ユーザー定義にmm/ddとすることで実現できます。サンプル欄をみてください。
f:id:e310s:20171215232339p:plain

同様に、"01"としたければdd、"1"としたければd とする事で表現できます。曜日はaaaで表現できます。

タレメンがよく使う書式は、mm/dd(aaa)です。これを入力すると12/14(木)というように表示できます。
f:id:e310s:20171215232614p:plain

SQLをかじったことがあると抵抗感がないのだと思いますが、mはMONTH、dはDAYの頭文字です。お察しの通り、yはYEARです。

システム屋さんと会話する時、日付の書式を表すのに、yyyy/mm/ddとすると、2017/12/15 の事なんだ!となります。覚えておいて損はないです。

ちなみに曜日がなぜaなのかは知りません笑
知らなくても使えるか、疑問に思ってエクセルを毛嫌いするかはあなた次第です。


これで下拵えは完了です。そして本題。


スケジュールをどのように管理するのかを確認し忘れました…。1シートに1ヶ月分を管理して、複数シートを月毎に管理したいのか、1ファイルは1シート1ヵ月分のみの管理でよいのか…。

こんな時は両方考えてしまえばいいや ということで、複数シート用と単一シート用を作成。複数シート用は、別の月のシートをアクティブにしている状態で保存したとしても、該当月のシートの当日のスケジュールが最上段に表示されます。

ともにVisual Basicを使って標準モジュールに記載することで実現しています。実際の記述は以下の通りです。

複数シート用のマクロの記述

Sub Auto_Open()
 Dim wsh As Worksheet
 Dim rng As Range

 Application.ScreenUpdating = False '描画抑止

 For Each wsh In Worksheets
  wsh.Activate
  Set rng = wsh.Cells.Find(what:=Date)
  If Not (rng Is Nothing) Then
   Application.Goto rng, True '選択セルを左上に表示
  Exit For
 End If
 Next wsh

 Application.ScreenUpdating = True '描画抑止解除
End Sub

単一シート用のマクロの記述

Sub Auto_Open()

 Dim i As Long
 Application.ScreenUpdating = False '描画抑止

 For i = 1 To 200
  If Cells(i, 1) = Date Then
   Application.Goto Cells(i, 1), True '選択セルを左上に表示
   Exit For
  End If
 Next i

 Application.ScreenUpdating = True '描画抑止解除
End Sub

 


VBやマクロって聞いたことはあるけど、わからないよ…という方へ

VBやマクロって聞いたことはあるけど、よくわからない…

でも、エクセルで作成したスケジュールを開いた時に、当日のスケジュールを最上段に表示させたい!と思っている人もいると思いますので、簡単な流れをまとめておきます。

「開発タブ」の表示

Excel2007以降、マクロの実行や作成には「開発タブ」が必要です。この「開発タブ」初期状態では表示されていないのです。

この時点で面倒…って思いますが、以下の手順で「開発タブ」を表示させてみてください。

1.エクセルを起動
2.左上のファイル > オプション > リボンのユーザー設定 をクリック
3.メインタブの「開発」にチェックを入れ「OK」
これだけです。これで、「開発タブ」が表示されます。
f:id:e310s:20171216105230j:plain

そして…

標準モジュールの追加

1.さきほど追加した「開発タブ」から一番左の「Visual Basic」を選択
2.Sheet1(Sheet1)が選択されていますので、その空白のところで右クリック > 挿入 > 標準モジュール を選択
f:id:e310s:20171216001856p:plain
3.開いたウィンドウに、「複数シート用のマクロの記述」または「単一シート用のマクロの記述」の文字をコピー&ペースト
4.マクロ有効ブック(*.xlsm)で保存
5.保存したエクセルを開いてみる

エクセルで作成したスケジュールを開いた時に、当日のスケジュールを最上段に表示する方法
を紹介してみました。その心は…このブログは「オカネとカラダの投資」ブログであり、仕事の効率・生産性をあげることも「オカネの投資」にあたると考えたからです。

いかがでしょうか。VBとかマクロって聞くだけで拒否反応を起こす方もいらっしゃると思いますが是非活用して、業務改善に役立ててみてください。