ExcelマクロVBAサンプル集 | ナンバーリンクを解くVBAのパフォーマンス改善2 | ExcelマクロVBAの実用サンプル、エクセルVBA集と解説



最終更新日:2017-11-26

ナンバーリンクを解くVBAのパフォーマンス改善2


細かい解説は省きます、結構難しいプログラムとなってしまいましたので。

プロシージャーの概要のみ記載しておきます。


main
入り口となるメインのプロシードャー
getStart
開始位置を取得するプロシージャー
getEnd
終了位置を取得するプロシージャー
chkEnd
指定位置が終了位置かを判断するプロシージャー
RowColAjust
行・列の数値を指定範囲内に収めつつ、次の位置へ進むためのプロシージャー
getAdvance
進む先を決めるプロシージャー、中核となるプロシージャーです。
dispCell
配列をシートに表示するプロシージャー
chkAdvance
次の進む先の候補が、進んでよいかどうかを判断します。
chkRoute
今処理中の数値より先の数値の開始位置を見つけます。
chkRoute2
chkRoutより渡された数値の開始と終了が空白セルでつながっているかを判断
再帰呼び出しで、次々に空白セルを辿ります。
chkClose
次の候補位置に進んだとしたら、その周りの空白領域に出口が無くなっていないか判断
chkClose2
指定位置の空白領域に出口(他の数値が)があるかどうかを判断します
再帰呼び出しで、次々に空白セルを辿ります。から呼び出す
chkClose3
小さな袋小路かどうかの判断
getBeforeCell
指定位置にくる直前の位置を取得、dispCellから呼び出す
getAfterCell
指定位置が進んだ直後のを取得、dispCellから呼び出す


ここまでは、前作で作成したプロシージャーです。

これらの内容も修正を加えています。

そして、新規に追加したプロシージャーです。

chkClose4
四辺の一つとなりに達したとき、辺との隙間の1セルを通過できる数値のは一つの数値のみなので、
2つ以上のの数値が通過しなければならない状態かを判定
chkClose5
一つのみ空白セルとして取り残されている場合、隣のセルが同一数値が存在しなければ、
その空白セルは使用できないので、これを判定
chkUsed
すでに使用されている数値かの判定
chkAry91
chkClose4で作成した数値の配列を基に、
空白領域内に出て行く必要のある数値が複数ある場合にエラーとする
chkAry92
chkClose4で作成した数値の配列を基に、
空白領域内に同一数値が存在していない場合はエラーとする


重複してチェックされているパターンもありそうですが、

問題パターンが無限に存在するので、

とにかく考えられるパターンを片っ端から組み込んだ漢字になってます。


では、完成したVBAコードです。

3へ続きます。


ナンバーリンクを解くVBAのパフォーマンス改善 : 1 2 3


こちらの最終完成版のダウンロード




同じテーマ「マクロVBAサンプル集」の記事

エクセルでファイル一覧を作成
アメブロの記事本文をVBAでバックアップする1
数独(ナンプレ)を解くVBAに挑戦1
数独(ナンプレ)を解くアルゴリズムの要点とパフォーマンスの検証1
ナンバーリンク(パズル)を解くVBAに挑戦1
オセロを作りながらマクロVBAを学ぼう

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

複数条件判定を行う時のコツ|ExcelマクロVBA技術解説(7月11日)
For Next の使い方いろいろ|VBA技術解説(6月14日)
VBAを定型文で覚えよう|ExcelマクロVBA技術解説(3月26日)
VBAスタンダード試験対策まとめ|MOS VBAエキスパート対策(3月16日)
ユーザーフォームとメニューの操作|MOS VBAエキスパート対策(3月14日)
ファイルの操作|MOS VBAエキスパート対策(3月14日)
ユーザーフォームの各種イベント|Excelユーザーフォーム(3月13日)
レジストリの操作|MOS VBAエキスパート対策(3月12日)
変数と配列|MOS VBAエキスパート対策(3月12日)
Colorプロパティの設定値一覧|VBA技術解説(3月12日)

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

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



  • >
  • >
  • >
  • ナンバーリンクを解くVBAのパフォーマンス改善2

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


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





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

    本文下部へ

    ↑ PAGE TOP