VBAサンプル集
ナンバーリンクを解くVBAのパフォーマンス改善№1

ExcelマクロVBAの実用サンプル、エクセルVBA集と解説
公開日:2014-05-28 最終更新日:2017-11-26

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


ナンバーリンク(パズル)を解くVBAに挑戦」で作成したVBAでナンバーリンクを解く事には成功しました、

ナンバーリンクというパズルがあります、これをエクセルVBAで解いてみようと思います、数独(ナンプレ)に続くパズルVBA解法の第二弾です。ナンバーリンクをご存じない方は、、ウィキペディア ナンバーリンクのおためし問題 このあたりをお読みください。

しかし、

10×10なら数分で解けるものの、

10×18でやったところ、4時間半もかかってしまいました。

12×12では、待ちきれずに途中で止めてしまいました。

これでは、ちょっと実用に耐えません。


取り急ぎ時間を短縮するなら、表示タイミングを減らせばよく、

Call dispCell(

において、見る必要のない場所は、False指定にします。

具体的には、

行き場所がなくなり、順次戻る部分は表示を止めても、見た目は違和感を感じません。
tryCnt = tryCnt - 1
Call dispCell(True,



ここをFalse指定にします、getAdvance内に2箇所存在します。


ただ、確かに時間は半減しますが、

10×10なら、これで良い気もしますが、

10×18では、やはり時間がかかりすぎています。


全体を見直し、無駄な記述も確認しつつ、

新たに、ダメな進路パターンの判定を加えていきます。

ここからは、まさに時間との勝負です。

クイズが解けるまでの時間と、自身の費やす時間との勝負です。

№2へ続きます。


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



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



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

数独(ナンプレ)を解くVBAに挑戦№1

数独は、一般に「ナンバープレース(ナンプレ)」と呼ばれ、外国では「sudoku」と呼ばれているようです、この数独をExcelマクロVBAで解いてみようと言う事です。解き方は、とにかく片っ端から数字を当てはめていくという、なんとも芸の無い方法です。
数独(ナンプレ)を解くアルゴリズムの要点とパフォーマンスの検証№1
数独(ナンプレ)を解くアルゴリズムを例に、アルゴリズムの要点と、それによるパフォーマンスを検証します、数独(ナンプレ)を解くVBAに挑戦 ここでは、とにかく全ての数字を当てはめていくという、いわば全数チェックでの解法を使いました。考察するまでもなく、かなりの無駄がある事は明白です。
ナンバーリンク(パズル)を解くVBAに挑戦№1
ナンバーリンクというパズルがあります、これをエクセルVBAで解いてみようと思います、数独(ナンプレ)に続くパズルVBA解法の第二弾です。ナンバーリンクをご存じない方は、、ウィキペディア ナンバーリンクのおためし問題 このあたりをお読みください。
ナンバーリンクを解くVBAのパフォーマンス改善№1
オセロを作りながらマクロVBAを学ぼう
ExcelマクロVBAでオセロ(リバーシ)を作っていきながら、マクロVBAを学んで行きましょう。目的は、マクロVBAの学習であり、思考を整理しVBAでプログラミングする学習です。従って、強いソフトを作ることが目的ではありませんので、最近流行のAIなんちゃら…なんていうのは考えるつもりはありません。
他ブックへのリンクエラーを探し解除
リンクエラーが見つけられない… 「リンクの編集」で、「リンクの解除」を選択してもリンクが削除できない… こんな経験をした人は多いのではないでしょうか。エクセルをいろいろと操作していると、意図せずに参照先が別ブックになってしまい、かつ、その参照先のブックが無くなってしまっている… こんな場合に、リンクエラーとなります。
Excelシートの複雑な計算式を解析するVBA
・複雑な計算式を解析するVBAの概要 ・複雑な計算式を解析する全VBAコード ・複雑な計算式を解析した結果の表示 ・最後に
Excel将棋:マクロVBAの学習用(№1)
・Excel将棋の要件定義 ・Excel将棋のシート作成 ・Excel将棋の目次
Excel囲碁:万波奈穂先生に捧ぐ
・Excel囲碁の動作 ・全体の処理流れ ・Excel囲碁の全VBAコード ・Excel囲碁のダウンロード
Excel囲碁:再起動後も続けて打てるように改造
・Excel囲碁の今回の改造のきっかけ ・Excel囲碁の今回の改造点 ・Excel囲碁の全VBAコード ・Excel囲碁のダウンロード
エクセルVBAで15パズルを作ってみた
・Excel 15パズルの動作 ・Excel囲碁の全VBAコード ・Excel 15パズルのダウンロード


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

無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)
スピらない スピル数式 スピらせる|エクセル雑感(2023-12-06)
イータ縮小ラムダ(eta reduced lambda)|エクセル入門(2023-11-20)
PIVOTBY関数(縦軸と横軸でグループ化して集計)|エクセル入門(2023-11-19)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.セルのクリア(Clear,ClearContents)|VBA入門




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


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



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