エクセル雑感
プログラミングとは

ExcelマクロVBAとエクセル関数についての私的雑感
最終更新日:2016-07-21

プログラミングとは


コンピューター(PC)は、こと計算については天才的な能力を持つが、その他の事については一般人の常識が通用しない子供のような存在です、
人間で言うなら、サヴァン症候群でしょう、
サヴァン症候群のPCに対して何かをしてもらいたい時に、それを文章で伝えるものがプログラムです。


従って、
プログラミングでは、あなたの常識は一切通用しないと思ってください。

サヴァン症候群はともかくとしても、小学生でもわかる文章を書くつもりにならなければなりません。
見れば分かるでしょう
なんとなく分かるでしょう

そんなことは通用しません。
ましてや、
自分で判断してよ
なんてことが通用するはずもないのです。

以下では、極めて単純化した具体例で説明します。

「発注」シートに、
商品CD、商品名、発注数、単価、金額

「マスタ」シートに、
商品CD、商品名、単価


このようなシート構成になっていて、

この時、「発注」シートに商品CDを入れたら
商品名、単価、金額が自動的に出るようにする。



上記の文章では、サヴァン症候群のPCには理解してもらえません。
(賢い小学生なら理解するかもしれませんが・・・)

「発注」シートの商品CDを「マスタ」シートの商品CDから見つける。
「マスタ」シートに商品CDが見つかったら、同じ行にある商品名と単価を「発注」シートの商品名と単価に入れる。
「発注」シートに商品名と単価が入ったら、「発注」シートの発注数×単価を計算して金額に入れる。
これを、「発注」シートの商品CDが入っている全ての行について行う。


プログラムを書くという事は、このくらいの文章を書くという事です。
最初は、とにかく日本語で書いてみましょう。
ただし、簡潔明瞭に書きましょう。
だらだらした長文は、かえって分かりずらいものです。
書いた日本語の文章を読んで、小学生でもわかる文章かどうか見直してください。
この文章が書ければ、プログラムはほぼ完成したと言っても過言ではありません。

後は、プログラミング言語に翻訳すれば良いだけです。
もちろん、この翻訳作業には言語の知識(文法、単語、慣用句等々)が必要ですし、翻訳作業に対する慣れも必要です。
しかし、基本的な文法さえ知っていれば、単語や慣用句は書籍やネットで調べれば大抵は直ぐに見つかります。
(ネットでこれらを見つける時には、当サイトも検索でヒットすることがあると思います。)

では、先のような文章を書くときに気を付けることは何でしょうか。

固有名詞や主語を省略しない

これを省略した文章は、日本人には多いように思います。

商品名と単価を取得

これしか書かない場合が多いのです。

「シート見れば分かるでしょ!」
「文脈で分かるでしょ!」


いやいや、サヴァン症候群のPCには理解してもらえないのです。
何を使ってどこから取得するのか、省略せずにちゃんと書きましょう。


このような文章が書けたら、この文章をプログラミング言語に翻訳します。
せっかく書いた日本語の文章なので、コピペでエディターに貼付けてコメントに使いましょう
このコメントを見ながらプログラムを書き進められますし、
この段階で文章の不備(つまりは処理内容の不備)が見つかることも多々あります。

実際にプログラムコードを書き始めると、
・・・「マスタ」シートの商品CDから見つけて・・・
これを翻訳する時、FindなのかMatchなのか、はたまたVlookupなのか・・・
このような事ばかり気にしてしまい人が多いように感じます。
どれでも良いのです。
今あなたが使える技術で書けば良いのです。
時々、このような場合に「どれが良いですか?」と聞かれることがありますが、
どれでも良いです、あなたが書きやすいもので書いてください。
このような事は、微々たる問題です。
その微々たる問題で悩んで時間を費やすより、さっさと書き進めて下さい。
最後まで書いて、正しく動かすことを優先してください。
プログラムは、正しく動かなければ、ただの落書きと言われても返す言葉がありません。

正しく動くことを確認したら、必ず見直してください。
日本語の文章だって推敲するでしょう、プログラミングも同じことです。
書きっぱなしでは絶対にダメです。
もしこの時点で、
Findで書いたけどMatchの方が良いのでは・・・
そう感じたら、
正しく動いたプログラムコードはしっかりと保存した上で書き直してみましょう。、
決して、書き直しすることを面倒がってはいけません。
納得いくまで書き直してください。

この書き直しは、あなたのプログラミングのスキルを確実に向上させます。
ただし実業務で使うプログラムの場合は、納期の範囲内で行い費用対効果を考慮するのは言うまでもありませんが。


※本記事は、
プログラミングを始めたが、なかなか上達しないという方に向けた助言になります。
ExcelマクロVBAで、サクッと自動化しようとしたときに、この文章化が必須という事ではありません。
頭の中で考えたことを、そのままVBAで記述できるなら、それで構いません。
私も、受注したシステム開発でなければ、いきなりVBAを書き始めますので。

※上記の文章は、
話の例として単純なものをより詳しく文章にしたものです。
実際には、格段に複雑な処理になりますので、ここまで詳細に書かなくてもよいでしょう。

※システム開発における工程
このような文章は、システム開発における工程では「詳細設計」にあたります。
システム開発に携わる人にとっては、当たり前の話であることを申し添えておきます。



同じテーマ「エクセル雑感」の記事

Excelマクロを書くのに○○力は必用か?
「offsetまとめ」検索ワードで非常に多いoffset
Excelのリンクの管理について
プログラミングとは
「ネ申Excel」問題 への同意と反論
「Excel3ステップ理論」3階層システムの応用
「ポケモンを確実に見つける方法」をExcelで数学してみた
エクセルで「もういくつ寝るとお正月」
エクセルで連立方程式を解く(MINVERSE,MMULT)
VBAが消えてしまった!マクロが壊れて動かない!
エクセル関連ツイート


新着記事NEW ・・・新着記事一覧を見る

将棋とプログラミングについて~そこには型がある~|エクセル雑感(11月22日)
VBA100本ノック 30本目:名札作成(段組み)|VBA練習問題(11月22日)
VBA100本ノック 29本目:画像の挿入|VBA練習問題(11月21日)
VBA100本ノック 28本目:シートをブックに分割|VBA練習問題(11月19日)
VBA100本ノック 27本目:ハイパーリンクのURL|VBA練習問題(11月18日)
VBA100本ノック 26本目:ファイル一覧作成|VBA練習問題(11月17日)
VBA100本ノック 25本目:マトリック表をDB形式に変換|VBA練習問題(11月15日)
VBA100本ノック 24本目:全角英数のみ半角|VBA練習問題(11月14日)
VBA100本ノック 23本目:シート構成の一致確認|VBA練習問題(11月13日)
VBA100本ノック 22本目:FizzBuzz発展問題|VBA練習問題(11月12日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.マクロって何?VBAって何?|VBA入門
6.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ