3日がかりのその仕事、3分で終わらせる方法教えます!
パソコンスキルの心技体

日付から曜日を取得して書き出すマクロ

2011年11月18日
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

エクセルマクロ・VBA達人養成塾 小川です。

キューバ旅行記、その31です。

ハバナでの、2日目のお昼どき。

Malecon通り、Hotel Meria Cohiba 近くのデパート内で買い物を終えてたところです。

エクセルマクロ達人養成塾塾長ブログ-三輪モータータクシー、宿に帰る。

PCを置きに、いったん宿に戻ることにしました。
三輪モータータクシーで、 Calle Zapata にある Casa Particular (個人経営の民宿)へ。

エクセルマクロ達人養成塾塾長ブログ-Calle Zapata あたりの街並み。

こんな感じのところを通っていきます。
たぶん、ハバナでも、高級住宅街(?)のようなところではなかろうか。

エクセルマクロ達人養成塾塾長ブログ-さっき入っていろいろ観察していたデパート。

再び、Hotel Meria Cohibaの近くに戻ってきた。
この写真は、さっき入っていろいろ観察していたデパート。左奥にあるやや濃い灰色のものはエレベータなのですが、経済封鎖の影響か、動いていなかったです。

塾長のキューバ旅行記、最初から読みたい方はこちらから


ひとつ上の行にある日付から曜日を取得して書き出すマクロ

さいきん、原田隆史先生の「原田式目標達成術」系にメチャメチャハマっています。

原田先生を知ったのは、今年の始め。
1.5日くらいの内容で、「原田式」の目標設定、計画立て、準備、行動、行動振り返りのノウハウを徹底的にたたき込まれました。

ただ、その後、1週間くらいで挫折してしまい… (^^;

原田先生のノウハウはなかなか実践できん… (´・ω・` )

と思っていました。

なんですが。

やはり、人には時があり、物には場合がある、ということで。

先月中ごろから再開して、今度は順調…とまではいかないですが、「原田式」のやり方である程度継続できています。

『順調…とまではいかないですが』
『ある程度継続できています』

と、茶を濁したような書き方をしていますが。

それは、どういうことかというと。

「原田式」のノウハウは実践できているのですが、僕自身が、まだ、際だった成果を出せる体制にないからです (^^;

▼今日も、計画どおりにいかなかった… orz
▼そもそもの目標設定がメチャメチャすぎたか orz
▼日課をぜんぶこなす前に、寝ちまった~ orz
▼あとで忙しくなるって分かってたのに、先回りして仕事しておかなかったからこうなってしまったのか orz

と、今のところ、そんなことのくり返しでして。

改めて、目標設定、計画立て、準備、行動、振り返り、というプロセスを確立させることによって、
これまで、いかに自分が場の状況に脊髄反射的に反応して生きていたのか、ということを思い知らされている感じです。

○一日で出来ることを正確に見積もり
○きっちりと気分を切り替えて個々の行動を行い
○粛々と、淡々と、君子の心持ちで、仕事なり、人生なりを歩む

そんな自分になるための心の中の整理をさせられているというところでしょうか。

以前、挫折したときの自分は、そういうことを考えられる状態ですらなかったんだな、と、そういうことも実感 ヾ(´ー`)ノ

さてさて、そんなわけで。

ようやく、本題。

さいきん20秒くらいで書いた、ひとつ上の行にある日付から曜日を取得して書き出すマクロをご紹介。

原田式のツールに「目標達成のためのルーティンチェック表」というものがあります。

詳しくは、原田先生のいろいろ出ている著書に載っているので紹介は省略しますが。

こんなフォーマットです(一部だけ、ご紹介)。

エクセルマクロ達人養成塾塾長ブログ-原田式ルーティンチェック表

これは、日々のルーティンですべき行動についてチェックする表でして。

毎日、やった行動については、チェックを入れていきます。

さいきん、ほぼ毎朝ブログを書けています。
メールマガジンもまとまって書きためるのではなく、日々、新しい記事をひとつは追加できています。

それはどうしてかというと、実はこれも、ルーティンチェック表の効果でして。

このチェック表に○がついていないと、気持ち悪くて、ついつい行動してしまいます。
(原田先生は、人をそういう感じにするための目標設定とか、行動に向けてのモチベーションアップがうまいです)

ただ、このフォーマット。
セミナーで受け取ったものや書籍に入っているものはちょっと使いにくいので。

自分で、エクセルで複製品を作りました。

そして、それを使っています。

3行目、右方向に、日付が続いていきます。
そして、4行目は、曜日を記入。

で。

3行目は、セルF3に日付を入れ。
G3以降の右方向のセルには、「すぐ左のセル + 1 」という感じで式を入れ、コピー。
(30日分、AI列まで)

そして、曜日を記入するため、セルF4~AI4を選択してから、以下のマクロを実行しました。

Sub main()
    Dim r As Range
    For Each r In Selection
        r.Value = WeekdayName(Weekday(r.Offset(-1).Value), True)
    Next
End Sub

書きあげて動作確認完了するまでにかかったのは、1分くらいかと思います。

解説すると…。

[1]
For Each 構文でコレクションを指定する部分を、
「Selection」で済ませてしまうのが高速化のコツ。

律儀に、Ra
nge(“F4:AI4”) とか書いてもいいんですけど、
そうすると、書くこと多くなってしまいますし、
「どこからどこまでのセル範囲を指定するのか」ということを、
脳内で文字列として処理しなおさなくてはなりません。
面倒くさい。

どうせこんなマクロは使い捨てなのですから、
律儀にやる必要はありません。「Selection」と書いて、
ショートカットキーでセルF4~AI4を選択すれば十分。
(例えば、セルF4にカーソルを置いてから、[Shift] + [→] )

[2]
Weekday関数は、指定された日付に相当する曜日を数値で返してくれます。
日曜なら0、月曜なら1、という具合。

[3]
WeekdayName関数は、指定された数値を曜日の文字列に直してくれます。
第2引数にTrueを指定すると、曜日を表す一文字の文字を返してくれます。

例えば

WeekdayName(3) -> 火曜日
WeekdayName(3, True) -> 火

ということで、この場合は、Trueを指定。

あとは、Offset(-1)で、個々のセルのひとつ上のセルを指定するようにして、できあがりです。

1分とまでは言わないまでも、このくらいなら、3分もあれば書けるようになりたいですね。

キーワード

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

最新の記事

人気記事

最新記事

カテゴリ

最新コメント

タグクラウド