来月の「マクロ検定」に関するご質問への補足なんですが、
初級マクロの基本というものは、
・セルからデータを取得や書き出しする
・ループを回す
・分岐処理をする
この3つですが、それもこれらも基本は
「マクロの記録」のうまい活用法というのが身についているか否か
(この3つを素早くそこに追加修正できること)それ如何でありますので、
それでマクロ作りのスピードは全然違ってくる思います。
できるだけ短時間で効率よく作る為に「マクロの記録」は必要不可欠です。
いちいちネットや本で調べて・・・ なんて面倒をやっていたのでは、
時間掛かって仕方ありませんわけですから、
業務効率化(時短)の為に作るマクロを、そんなダラダラと時間を掛けて
作っていたのでは、本末転倒!元も子もありませんですね。
だから、処理の正確さもさることながら、素早く作れるということも、
非常にこれは重要であるわけです。そのための検定制限時間60分です。
とりわけ、プロのプログラマーの場合には誰しも、常に納期に追われて
仕事をしていますので、プログラミング作業の効率化を最も重視して
います。
これ読んでる皆さんは多分(!?)素人プログラマーさんと思いますから、
マクロ作りする時に納期という概念はないかとは思いますが、
(上司から明日の昼までに○○のマクロ作れ!とか言われるような・・・)
けど、何か面倒なExcelデータがあった場合に、その時間の掛かる処理に
マクロを作らずに手作業で延々とそれやり続けるのか?
はたまた、少々マクロ作る為の時間を割いてを、以後自動で楽しよう
と考えるか?
その判断の分かれ目いうのはやはり、どれだけスピーディーにマクロが
作れるか否かに掛かってくる思いますから、
効率よく短時間で作れる方法というのを身に付けておく ということは
非常に、非常にこれは重要事ですね。
ここのサイトに載っている
以下の出典元:http://vbae.odyssey-com.co.jp/study/sample_es.html
「
プロシージャの中で文字列型のデータを3つ使いたい。
要素数3の配列を宣言するとき、【 1 】に入る適切な命令を解答欄に入力しなさい。
ただし、配列の名前は「myArray」とする。
【 1 】 As String
」
この問題、正解を見てみると答えは、「 Dim myArray(2) 」
となっています。
けど、これ Dim myAray(2) だと不正解なのか?
スペルチェックにオプション入れろ言って機械任せにすること
奨励してる所なのに、試験でのスペルミスは絶対に許さないの??
しかも、わざわざ間違えやすい名前使わせてるし。。。(笑)
更には、
これは、Dim myArray(3) では×なのか?
今時のPCであれば、大きい分には Dim myArray(100)でも (10000)でも、
何の問題もないのだから、大きけりゃ何でも正解でしょここは。
私がこの問題の作り手であるならば
あえてこの正解を求めるのであれば、
「要素数3の配列を宣言するとき」
↓
要素数3の(4つ以上は絶対ダメ!)配列を宣言するとき
としますから、(笑)
このような出題者の見え透いた出題意図が、何とも嫌らしく
貧しく残念に感じてしまいますですね。
いずれにしても、これは国内唯一のVBA試験なんですから、
もう少しその自覚と責任を持って、是非よく考えて問題作り
やっていただけたら、と思います。頑張ってください。
先日、こんなに天気良いのに、こんなにほぼ誰もいない?!
信州のスキー場に行ってきました。
わたし、スキー暦はかれこれもう35年ですが、今シーズン、
実に15年振りのスキーです。。
さて、
感動と涙の連続だった平昌オリンピックもいよいよ終盤戦
残りわずかとなってきましたですが、、
それで、五輪の聖火の炎を見て、ふと思った事があるんですが、、
人類は、火を使いこなすことで文明を進化させてきたわけですが、
しかし、
「あのメラメラと赤く燃える炎が何で出来ているのか?」
って、知ってる人っていますか?
人が火の性質や仕組みについてよく理解できているのかというと、
「考えた事も無かった・・・。」という人が大半かと思います。
でも、
それでも、毎日作る料理から、冬場の暖房用のストーブや暖炉、
夏休みのキャンプファイヤーに至るまで、
ありとあらゆる場面で我々人間は日々、火を使いこなしている
というわけですね。
これは、マクロの場合でもまったく同じだと思います。
まさにそれこそが、
たまに日曜大工的に作るアマチュアプログラマーの方でも、
難なくマクロを組み使いこなしているという人にはよく見られる
共通する特長だと感じています。
仕組みを理解するに越したことはないわけですけれど、
でも、それには多大な勉強時間を要するわけですし、
一度理解したと思っても、ながらプログラマーですから時間が経てば
どうせすぐ、必ず忘れます。
(特に、年齢的に40~50過ぎたらせっかく苦労して覚えた事って、
すぐ抜けますよね。私もです!(笑))
なので、
我々人間が火の仕組みを何も知らずに使いこなしている
というのと同様に、マクロの性質なんて理解する必要はなく、
使いこなす方を優先して勉強する、
それに貴重、且つ、忙しいあなたの有限な時間を使うべきである。
と、そう常々から私は強くお薦めをしている次第です。
特にVBAの世界では、火の燃える仕組みを知らないで
夏のキャンプファイヤーなんて出来っこないよ・・・、
そのような間違った事を言ってる人というのが多く居て、、
それが、未経験者を阻む大きな壁になってしまってる、
皆が楽しめるはずのキャンプファイヤーを誰も楽しめなく
なっているという事が、大変残念に思います。
って言う人が居りますが、、
私なんかで言えば、エクセルのすべて、全部です。(笑)
エクセルは、マクロで編集した結果のデータを
ただ眺めて見るだけの道具になっていますから、
難しい、七面倒臭い、Excelの操作は(ピボットとか・・・)
一切覚える必要がありませんので知りませんし、
覚える必要性もまったくありません。
「マクロの記録」時に、ちょっとネットで調べて操作方法見ながら
一度操作を記録すればいいだけですから、
Excel操作なんてものは覚える必要も、参考書も、
一切必要はありません!
だから、マクロが出来れば非常に、非常に、楽
ですよ。ぜひ、お試しを!
[検定課題 初級 ] 制限時間:60分 (2017年10月 実施)
下記のサンプルデータ「test1.xlsx」において、以下の仕様(条件)を
よく読んで、これらを全て満たす為のマクロを完成させなさい。
「test1.xlsx」のデータ例(※受験者は事前にダウンロードができます。)
1. シート"Sheet1"にあるデータで、姓(A列)と名(B列)をくっ付けた
氏名をE列に表示させる。
なお、その際に姓と名の間に空白(半角ブランク)を1文字入れること。
2. また、上記の名(B列)欄には空欄(欠損データ)がありうるものとし、
もし、その空欄があった場合には該当のセル(B列)を黄色く塗りつぶす
こと。(姓の欄(A列)には欠損箇所はないものとする。)
3. 次に、身長(C列)の降順(高い順)に、全データを並び替える。
4. なお、上記処理仕様の条件として、以下の項目を満たすこと。
・上記1.~3.の処理を、1度のマクロ実行で出来る。
・データ数は、可変(その都度変わる)に対応する。
・データは2行目以降に最低1人以上のデータが存在するものとする。
(最大数は不特定で、1行目は見出し行である。)
[補足]
※テストデータは[bkup]シートにも同じデータが入っています。
(実行して戻せなくなった時用です。[bkup]シートからコピッペして
元に戻す用に利用ください。)
※問題に対する質問等は受け付けません。万が一、不明点等ある場合は
自分が最適と考える解釈で問いてください。
※解答時間は開始60分です。
時間管理は自己責任にて、時計やタイマー等準備して臨んでください。
※カンニングは自由です。何を参照しても構いません。
また、上記を満たす限りプログラムの書き方(コードのきれいさや
コメント等)についての良し悪しは一切問いません。
以上