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

ExcelマクロVBAとエクセル関数についての私的雑感
公開日:2016-07-21 最終更新日: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マクロを書くのに○○力は必用か?

マクロを書くのに英語力は必要かどうか? はっきり言って、必要です…ガーン それでは話が終わってしまいますね、最低限の、英語というか英単語は知らないとキツイと思います。しかし、TOEICで高得点をとるような英語力は必要ないです。何より、私はTOEICは受けた事がないし、受けても、惨憺たる結果は見えています。
「offsetまとめ」検索ワードで非常に多いoffset
サイト内の比率としては、VBAのOffsetプロパティが非常に多く使われています、シートのOFFSET関数も、参照範囲の可変化で必須となっています。offsetを抜きにして、Excelは語れないというほど重要です。OFFSET関数Offsetプロパティの主要記事の一覧です。
Excelのリンクの管理について
Excelファイルの入っているフォルダごと移動した時に、リンク切れを起こして困っていることが多いようです、そもそもExcelのリンクは、相対参照なのか絶対参照なのかといった根本から考えておかないと、このような事態になってしまいます。他のブックを参照する数式を入れたとき、その参照は、相対参照・絶対参照のどちらで格納さ…
プログラミングとは
「ネ申Excel」問題 への同意と反論
「ネ申Excel」、私は流行に疎いので、ネ申の意味が最初分からなかった、どうやら、「神Excel」のことのようです、大学教授が書いた、Excelの問題点と解決策の提案がかかれた論文です、この論文に対する、私なりの同意と反論です。Excelを論ずるのに、なぜネ申などという言葉を使ったのか、私には少々理解しがたい部分も…
「Excel3ステップ理論」3階層システムの応用
エクセルでシステムを作成する時に、念頭に置くべき3階層の考え方になります、本来はExcelに限った事ではなく、システム作成では常に3階層を考えて設計しますが、さらに考えを推し進めて3ステップとして考えます、つまり、「Excel3ステップ理論」です。データを入力するシートで、さらに集計し、さらに印刷までやろうとしたら、
「ポケモンを確実に見つける方法」をExcelで数学してみた
ポケモンGO関連の記事をみていたら、【ポケモンGO】かくれているポケモンを確実に見つける方法、という記事を読んだ。普通にそうだなという感想なのですが、もっとまじめに数学したら、もっと良い方法があるのではないかと。元記事はあちこちで見た気がするが、多分これでしょ 「【ポケモンGO】かくれているポケモンを確実に見つける…
エクセルで「もういくつ寝るとお正月」
今日は2020年1月31日です。早いもので1月が終わろうとしています。つまり、2020年も12分の1がすでに終わろうとしています。この調子では、あっという間に今年(2020年)も終わってしまいそうです。
エクセルで連立方程式を解く(MINVERSE,MMULT)
とつぜん連立方程式を解くことになりました。なぜ連立方程式を解くことになったのか、そして、どうやって答えを導き出したのか… これらを自身の覚え書きの意味も含めて記事にしておきます。ただし、行列の難しい説明は抜かして、どうやって解決したかの経緯の説明が中心になります。
VBAが消えてしまった!マクロが壊れて動かない!
2020年4月15日に配信されたWindows10用セキュリティ更新プログラムの不具合で、なんと、VBAが全て消えてしまうという事が発生しています。今後もあり得る事なので、このような場合の対策について記しておきます。VBAが消えてしまうとはどんな状態なのか エクセルファイルを開くと、以下のようなメッセージが出力され…
スピらない スピル数式 スピらせる
タイトルというのはなかなか難しい。当初思ったお題は、・スピらぬなら壊してしまえスピル数式 ・スピらぬならスピらせてみようスピル数式 ・スピらぬならスピルまで待とうスピル数式 もちろん、壊してしまう訳には行かないし、待っていたってスピルする訳ないし… 当然「スピらぬならスピらせてみようスピル数式」と言う事になる。


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

正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.並べ替え(Sort)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門




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


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


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