こんにちは! 健史です。
これからプログラミングを学ぼうとしており「どの言語がいいかなぁっ?」と思っている方おりませんか?
ネットにも「おすすめの言語何選」とかあります。
複数の言語を示されても、どれから始めればいいのか判断するのが難しいと思います。
パソコンにExcelが入っているのなら、おすすめの言語はExcel-VBAです。
Excel-VBAをおすすめする理由
現在私は転職を考えていませんが、転職以外の項目は私が実感したことです。
プログラムを作成・実行するための環境設定が不要
プログラムを作成し実行するためのツールなどを新たにダウンロードしてセットアップする必要はありません。
プログラムを作成するためのエディタは備わっています。
Excelを起動後、Altキーを押した状態でF8キーを押せばエディタが起動し、プログラムを書いた後すぐに実行できます。
言語がシンプルで分かりやすくネットにも多くの記事がある
基礎的なことを修得する必要はありますが、ちょっと学べば別の人が作成したプログラムを追跡できるようになるでしょう。
If文や計算式などはシンプルな記述で、プログラムを書きやすいし読みやすいと思います。
データをExcel上に作成でき確認しやすい
プログラミングは、一般的にはデータを処理するものが殆どです。
プログラミング言語の基礎を習得する過程においても、データを作成したり確認しやすいほうが効率的です。
Excelであればデータ作成が楽で、データを見ながら作成できるのでプログラム動作のイメージが湧きやすいです。
Excel-VBAを習得すれば仕事で活かせる
単純で時間のかかる面倒な手作業は即改善できます。
しかも1度作成すれば繰り返し使えます。
その結果、業務が人に依存しない自動化された安定した作業に変わるため、業務品質とスピードを飛躍的に向上できます
能力がアップすればIT業界への転職も見えてくる
仕事での活用により外部で通用する能力が身についてくれば、IT業界への転職も視野に入ることでしょう。
最初はちょっとした改善でも積み重ねていくことで力がつき、「大量のデータを連続処理する」といった課題にも対応していけば実戦的な応用力を習得できます。
その結果、転職を考えている方で、Excel-VBAにてプログラマの適性を確認でき将来性に自信を持てたなら、さらに転職で求められる言語を自宅で習得すれば、IT業界への転職の可能性はより高まります。
Excel-VBAでプログラミングを始めてみるなら
手っ取り早く使い始めてみたい方は、以下の記事から見て頂き理解していって頂ければと思います。
Excel-VBAの起動方法、プログラムでのExcelシートやセルの扱い方の説明を載せています。
記事はすべてコピーして貼り付ければ動作するプログラムになっています。
最初の方の記事では難しい関数や多くの種類の関数は使わず、簡単で数少ない関数でのプログラムに努めました。
記事の順番が後ろになっていくに従い、徐々に関数の種類を増やしていますが、補足説明を加えています。
中には「仕事では使いそうにない」プログラムもありますが、それでも応用の奥幅を広げるきっかけやヒントになればと思います。
記事の説明でわからないところは、ご自身で調べて頂ければと思います。
VBAに限らずネットでキーワードを入力すれば解消方法は見つかるでしょうから「調べる癖」は普段からつけることをお勧めします。
人に聞くより早いことが多々あります。
プログラミングで最も重要なことはフローを設計すること
プログラミングで最初に行う最も重要な作業は処理ロジックを考えることです。
すなわちフローチャート、プログラムの設計図を作成することで、手書きでも頭のなかでも処理を組み立てることです。
フローチャートというと図形と線を使って紙などに記載しますが、正式な図形などに拘る必要はなく文章でもいいんです、処理ロジックを確認できればいいんです。
処理が複雑になれば、文章よりも絵であるフローチャートの方が分かりやすいです。
慣れてくれば、簡単なものは頭の中だけでフローを作成できるようになるでしょう。
そして設計した処理ロジックをプログラミング言語のルールに則って書いていきます。
「処理ロジックを考えられなければ」「処理手順がなければ」、プログラミング言語だけ習得しても何の役にも立ちません。
正確に設計された設計書であるフローチャートで作成した処理ロジックがあってプログラミングが成立するのです。
別の人が作成したロジックをプログラミング言語に変換するのは「コーダー」といいプログラマではありません。
設計図がなく「こんな感じかな」とコーディングし始め、動作を確認しつつ少しずつ処理を追加・修正しながら完成させたプログラムは「とにかく動けば良い」的なプログラムになりやすいです。
家に例えると、基礎となる土台があるようなないような状況で、木材を釘で固定していき雨漏りや穴があいているところが見つかると塞ぐためにさらに木材を貼り付けるようなことになります。
そのようなプログラムでは、簡単な処理も複雑な内容になったり、追跡しにくく正常に動作しないミスが潜在してしまう可能性があります。ちなみにプログラムのミスを「バグ」(虫)と言います。
すでに作成されたプログラムを修正する場合も同じです。
修正する前にプログラムの構造、すなわち処理ロジックを理解した上で、プログラム構造変更の必要がある修正なのかどうかを見極めてから修正しなければなりません。
ここでのプログラム構造とは、1階建ての家を2階建てに変更するようなイメージです。2階建てにしたけど階段を付けなかったのでは使えません。
実際に修正が加わり過ぎてプログラムを解析できなくなることもあります。
そんな場合は、既存プログラムに修正を加えるより処理ロジックをゼロベースで作り直した方が良いこともあります。
小手先の修正では、処理ロジックを複雑にするだけでエラーを潜在させてしまう可能性があります。
プログラミングする題材は職場に転がっている
プログラミングを習得するために、フローチャート作成や言語のVBAの基礎は習得したけれど、
・さらに能力を向上させるためにどうすればよいのか?
・基礎を習得しただけで使うシーンがない
・したがって、折角覚えても忘れてしまうし、だったら習得しない方がよい
とか、言語を習得中の方でも
・さらに実戦的な課題で応用したいが題材がない!
・もっと難しいプログラミングにチャンレンジしたい!
と思われるでしょうか。
日々の業務の中でExcelを使っている方であれば、「題材は仕事の中にある」可能性は高く、業務内容にもよりますが少なからず1つや2つはあると思います。
手作業で行っているExcelでの業務、メールや他の部署から提供されるテキストデータのチェック・抽出などで
・面倒だな!
・楽をしたいな!
と思うものがあれば、そこには題材があるはずです。
もしくは、改善意識を持ち日々やっている手作業を「面倒だな!、楽をしたいな!」と思うことで見つかります。
そして更に他のメンバーの作業にも目を向け、課題、題材を見つけます。
Excel-VBAで自動化できるようになると、あなたに「相談しよう」「お願いしよう」となることも考えられます。
頼られるようになれば飛躍的に能力を向上させるチャンスです。
難題にも「どうすればExcel-VBAで自動化できるだろう?」「全工程の作業でなく一部でも自動できないかな?」と一度は考えてみることです。
例えば、やっていることが
「(日々)テキスト形式で提供されるデータから、同じところにある数字を確認し、Excelデータに転記している」
とか
「(日々)Excel形式で提供されるデータから、ある区分ごとに並び替え、区分ごとの数量や金額を集計している」
などです。
「やったことないから無理です、できません」と断ってしまうのは勿体ないです。
副産物として「一目置かれる存在」になることもあるでしょう。
面倒な作業も
・1日掛かる作業が、プログミング化したことで数秒で処理できる
・2~3日掛かることが1時間ででき、コンピュータが処理している間は別の作業ができる
こともあります。
何度か繰り返していくうちに、どんどん思考が広がります。
処理ロジック設計をチャレンジをしてみたい方へ
練習用としての題材をいくつかピックアップしてみました。
繰り返し、ループ処理で設計する練習題材です。
処理ロジックを設計し、Excel-VBAで実際にやって見て頂ければと思います。
「できなければダメ」ということではありませんし、チャレンジしてみたい内容があれば取り組んで頂ければと思います。
・ソート
セルA1からA10に格納されている10個のランダムな数字を小さい順にソートする
最も簡単な
・1番目の値を2番目~10番目までの数字と比較し小さければ入れ替え
・2番目の値を3番目~10番目までの数字と比較し小さければ入れ替え
・・・
・9番目の値を10番目の数字と比較し小さければ入れ替え
という内容をループ処理で作成
・素数を求める
求めた素数をセルA1,A2・・・と格納する
①2から10個の素数を求めて、
2,3,5,7,11,13,17,19,23,29
②100までの間の素数を求める
2,3,5・・・83,89,97
・1~5の数字から3個抽出する組み合わせを求める
求めた組み合わせをセル[A1,A2,A3]、[B1,B2,B3]・・・と格納する
1,2,3
1,2,4
・・・
・カレンダを1月、2月・・・と作成する
最初、縦または横に1月、2月と作成
1月
2月
次に3ヵ月単位に横に並べて作成
1月、2月、3月
4月、5月、6月
1月1日の曜日は、コンピュータがもつ値から求めてよいですし、予め調べておいて使ってもよいでしょう。
コメント