エクセル雑感 | プログラミングとは | 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」問題 への同意と反論
「Excel3ステップ理論」3階層システムの応用
「ポケモンを確実に見つける方法」をExcelで数学してみた
エクセルのマクロで何ができるか?
エクセル関連ツイート
プログラミングについて
エクセルの日付のお話

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

SUMIFの間違いによるパフォーマンスの低下について|エクセル関数超技(6月17日)
条件式のいろいろな書き方:TrueとFalseの判定とは|ExcelマクロVBA技術解説(6月15日)
空白セルを正しく判定する方法2|ExcelマクロVBA技術解説(5月6日)
フルパスをディレクトリ、ファイル名、拡張子に分ける|ExcelマクロVBA技術解説(4月15日)
テキストボックスの各種イベント|Excelユーザーフォーム入門(4月9日)
フォルダ(サブフォルダも全て)削除する、Optionでファイルのみ削除|ExcelマクロVBAサンプル集(4月4日)
最後の空白(や指定文字)以降の文字を取り出す|エクセル関数超技(3月26日)
先頭の数値、最後の数値を取り出す|エクセル関数超技(3月26日)
Excelファイルを開かずにシート名をチェック|ExcelマクロVBAサンプル集(3月23日)
数式の参照しているセルを取得する|ExcelマクロVBAサンプル集(3月18日)

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

1.最終行の取得(End,Rows.Count)|ExcelマクロVBA入門
2.RangeとCellsの使い方|ExcelマクロVBA入門
3.徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)|エクセル関数超技
4.Range以外の指定方法(Cells,Rows,Columns)|ExcelマクロVBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.セルのコピー&値の貼り付け(PasteSpecial)|ExcelマクロVBA入門
7.セルの参照範囲を可変にする(OFFSET,COUNTA,MATCH)|エクセル関数超技
8.ひらがな⇔カタカナの変換|エクセル基本操作
9.定数と型宣言文字(Const)|ExcelマクロVBA入門
10.CSVの読み込み方法|ExcelマクロVBAサンプル集



  • >
  • >
  • >
  • プログラミングとは

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


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

    ↑ PAGE TOP