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

ExcelマクロVBAの実用サンプル、エクセルVBA集と解説
最終更新日: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 ・・・新着記事一覧を見る

抜けている数値を探せ|エクセル雑感(2022-07-01)
.Net FrameworkのSystem.Collectionsを利用|VBA技術解説(2022-06-29)
迷路ネコが影分身の術を体得したら…|エクセル雑感(2022-06-27)
迷路にネコが挑戦したら、どうなるかな…|エクセル雑感(2022-06-26)
サロゲートペアに対応した自作関数(Len,Left,Mid,Right)|エクセル雑感(2022-06-24)
「マクロの登録」で登録できないプロシージャーは?|エクセル雑感(2022-06-23)
オブジェクトのByRef、ByVal、Variant|エクセル雑感(2022-06-22)
コメントから特定形式の年月を取り出す|エクセル雑感(2022-06-19)
4,9を使わない連番作成|エクセル雑感(2022-06-17)
連番を折り返して出力|エクセル雑感(2022-06-16)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Excelショートカットキー一覧|Excelリファレンス
7.マクロって何?VBAって何?|VBA入門
8.並べ替え(Sort)|VBA入門
9.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
10.エクセルVBAでのシート指定方法|VBA技術解説




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


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



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