この記事はSpreadsheets/Excel Advent Calendar 2019の24日目の記事です。昨日はぼくの以下の記事でした。
今日の朝やったことを書きます。先日yamlファイルを作るシートを作っていたのですが、これを使って作ったファイルにソッコーでミスが出ました。関数の動作は問題なかったのですが、使った人間(ぼくです)が愚かだったので、コピペする際に1要素前の作成時の要素が残ってしまっていました。
ぼくが愚かなのは変えられないので、防ぐ仕組みを入れておきます。さっと考えつく手段としては以下2つ。
- 記入内容をクリアするボタンを付けて、前回の内容を消しやすいようにする
- 各セルの記入された日時を記録しておいて、ブレが大きかったら警告する
後者のほうがかっこいい気がしましたが、明らかに得られるバリューに対してめんどくさすぎるのでやめました。というわけでクリアするボタンをつけます。やり方的には以下。
という感じでやろうと思ったんですが、いつもこうやっているのも進歩がないなとおもってマクロを使いました。
性格の問題なのですが、普段はマクロあんまり好きじゃなくて、GASを手作りしたい派。なんかGASでやったほうがミスがない気がするじゃないですか?ちゃんと使ったことなかったので、ボタンにスクリプト割当どうやるのかと思っていたら、GASのスクリプトができているのでそれを使えとのことだった。
- マクロを記録する
- ボタンを図形描画から挿入する
- スクリプトエディタを開いてfunction名を確認する(何事もないとmyFunctionになっているけど、気に入らなかったら変更する)
- ボタンにスクリプトを割り当てる
無事仕上がりました。ちないに仕事でやった方のやつは、検証していると1セル意図通りの挙動をしていなかったので、マクロで作られたスクリプトをちょっとだけ手で修正した。ざっとつくるところまでをマクロに任せて、ちょちょっと手直しを自分でやる感じで、案外これは体験が良かった。
さて、これにてSpreadsheets/Excel Advent Calendar 2019も終了です。今年はぼくが書く本数多くて、小説の方も進みが悪かったのでどうやってネタを絞り出そうかと悩んでいたのですが、当日そういう気持ちを抱えながら仕事をしていると「あ、これ書けるじゃん」ということに気づく。つまり毎日とはいわないものの高い頻度で日々スプレッドシートの新しい気づきを得ていたのだった。それに自覚的になるためにもブログみたいにアウトプットの場所を用意しておくのは非常に大事だし、アドベントカレンダーはいいイベントだと思う。
今年も沢山の人が参加してくれて、Spreadsheet/Excelアドベントカレンダーはいい感じに仕上がりました。 特にやばいなーと思っていたところ、2記事以上登録していただいたことりちゅん (id:Kotori-ChunChun)さん、id:kamocycさん大変ありがとうございました。
本当に助かったし、ぼくが普段書かないExcel方面を色々書いてもらえて大変勉強になりました。
Spreadsheet/Excelアドベントカレンダーは昨年はじめていて、正直今年は途中で心が折れかけて、「もう来年はぜってーやんねー」と今朝までは思っていたのですが、こうやってブログ書いていると「よかったんじゃないか、来年もやるべきだ」という気持ちになってきたのでたぶん来年もやります。
それではまた来年お会いしましょう。
※ところで結局Excelの話をほぼまともにしていない今年の小説ですが、アドベントカレンダー終わっても書き続ける予定なので、よければカクヨムでフォローしてください。面白かったらレビューしてください。