明日MGCなのでExcelで1kmごとのタイムを計測するExcelマクロを作成した話

さっきこのツイートを投稿しました。


 

明日、東京オリンピックのマラソンの代表選手を決めるMGC(Marathon Grand Championship)があります。
なので、このような1kmごとのタイムをクリックだけで記録するExcelを作ってみました。
ツイートにあるように、マクロの記録機能で作っていて、それほど難しいテクニックは使っていなく、割と簡単に作れます。
しかも、マクロの記録のポイントとなる2つのテクニックを使っていますので、作り方とその動作の解説をします。

作り方

まず、次のように入力します。
A列には、1から42まで、さらに42.195を入力します。
4行目はウィンドウ枠の固定をするとよいでしょう。

セルB5の1つ目の通過時間のセルをクリックします。

ここで、表示タブのマクロの記録をします。マクロ名を「記録」とします。

それから、今回のポイントですが、表示タブの中の「相対参照で記録」をクリックします。何がポイントは後から説明します。

今アクティブセルになっているセルB5には現在時刻が入りますので、NOW関数で現在時刻を入れましょう。ここでまたポイントなのですが、数式の確定は、Enterではなく数式バーの隣のレ点で確定します。

すると、アクティブセルが下に移動せず、そのまま確定になります。
以後の確定はすべてこのレ点を使ってください。

次に、セルB5をコピーします。

そしてそのままセルB5を右クリックして、貼り付けのオプションの中の値をクリックします。ここもポイントです。

セルC5をクリックし、「=B5-$B$5」と入力し確定します。

セルD5をクリックし、「=C5/A5」と入力し確定します。

セルB6をクリックします。

これでマクロの記録を終了します。

記録の図形を作って3行目までのエリアに配置して、図形を右クリックして記録マクロを登録します。

現在の状態から、記録ボタンを押すたびにどんどん記録されます。

今回のポイントの解説

今回のポイントは2つでした。

  • マクロを「相対参照で記録」したこと
  • レ点で確定したこと
  • 貼り付けのオプションの中の値をクリックしたこと

なぜ相対参照にしたか、ですが、この相対参照というのがなかなか理解しにくいもので、使ったことがないという方も多いのではないでしょうか。
今回、セルB5からスタートし、まず日時を入力、その右のセルに経過時間の計算式、その右に1kmごとのタイムを計算する計算式と入力し、左に2つ下に1つのセルをアクティブにする、という流れです。

次は、そのセルから同じ動きをします。
スタートのセルからどんな位置のセルに処理をしていくか、それが初めのアクティブセルに対する位置からの相対的な動きになるので、相対参照で記録なのです。
相対参照で記録しなければずっと5行目に記録するところでした。

次にレ点で確定した理由ですが、Enterすれば、アクティブセルは下に移動します。移動してしまうと、せっかく相対参照で記録しているのが無駄になりそうな気がしませんか?それが嫌だったので、確定するだけでアクティブセルを移動させないレ点を使って確定しました。
実際には今回はレ点で確定しなくてEnterでアクティブセルの位置が変わっても相対的に場所は変わってくれるので問題はありませんが、特に相対参照で記録の場合、アクティブセルが変わるような操作はどこかのセルを選ぶという操作になるので避けた方がよいでしょう。
相対参照で記録に限らず、マクロ記録中の確定はレ点で行うように意識しています。

最後に、貼り付けのオプションの中の値をクリックしたことですが、NOW関数は、次の操作があると自動再計算し、現在時刻に変わります。
せっかく1回1回記録した現在時刻も、NOW関数のままではすべて同じ時刻になってしまうのです。
記録は、マクロが動いたタイミングでの時刻を記録したいので、NOW関数の結果の時刻を値として記録しなければないのです。
だから、NOW関数を入れたそのままのセルに値に変換するという意味で値貼り付けしています。
このテクニックは特にTODAY関数やNOW関数の処理で使います。

サトウヨシヒロ

Excelを中心としたMicrosoft Officeの魔法使い。
仙台市在住のフリーランスのパソコンインストラクターです。
1969年1月生まれ。
Excelを黎明期から30年近く使っています。Wordも使えます。
出版社様と一緒にExcelの情報発信もしています。
最近は羊に夢中です。
2019年はRPAと業務効率化を勉強しています。

Twitterでも業務で使える便利なOffice技をめっちゃつぶやくツイッタラーです。@yosatonet

コメントを残す

メールアドレスが公開されることはありません。