VBAサンプル集
ナンバーリンク(パズル)を解くVBAに挑戦№1

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

ナンバーリンク(パズル)を解くVBAに挑戦№1


ナンバーリンクというパズルがあります、


これをエクセルVBAで解いてみようと思います、

数独(ナンプレ)に続くパズルVBA解法の第二弾です。
数独は、一般に「ナンバープレース(ナンプレ)」と呼ばれ、外国では「sudoku」と呼ばれているようです、この数独をExcelマクロVBAで解いてみようと言う事です。解き方は、とにかく片っ端から数字を当てはめていくという、なんとも芸の無い方法です。

ナンバーリンクをご存じない方は、、

ウィキペディア
ナンバーリンクのおためし問題

このあたりをお読みください。

なお、サンプルで掲載した問題は、ナンバーリンクのおためし問題の問題1からお借りしました。

こちらでは、回答も掲載されているので、ネタばれにならないと思いましたので。
※もし、著作権等の問題があれば、サンプルは直ちに削除いたします。

ナンバーリンク問題
マクロ VBA サンプル画像

ナンバーリンクは、ルール上の制限が少ないので、

縦横の枠数に制限はないと思われます。

今回は、初心者向きの10×10を使用します。


ルール

・盤面にある同じ数字同士を線でつなぐ。
・線は縦横に引き、斜めには引かない(斜めに接したマス同士を直接線で結ばない)。
・線は交差や枝分かれをしない。また、1つのマスに2本以上の線が入ることも無い。

回答結果

マクロ VBA サンプル画像


つまり、問題の表から、回答結果の表を作成するVBAを作成することになります。


パズルに限らず仕事でも同じです。

問題・課題が与えられたら、その問題・課題の本質を見極め、解決へのアプローチ方法を模索します。

この時、いきなり複雑なことを考えず、少しずつ掘り下げていきます。

このナンバーリンクを解くために必要な機能を考えます。

・未処理開始セルの検索
 ・開始セルは、左上から数値セルを探す
 ・終了セルは、数値を指定して右下から探す
 →未処理開始セルが無くなったら終了
・線を伸ばせるセルの検索
 →線を伸ばせるセルが無くなったら、一つ手前に戻る
 →終了セル(同一数値)に達したら次の開始セルに進む

私は、このように考えてみました。

開始位置の選択は、数値の小さい順等も考えられますが、

ルールからして、数値の大小は意味を成しませんので、左上から処理すればよいはずです。

では、これらのVBAコード書いてみましょう。

№2へ続きます。


ナンバーリンク(パズル)を解くVBAに挑戦 : №1 №2 №3 №4 №5 №6 №7 №8



ナンバーリンクを解くVBAのパフォーマンス改善
「ナンバーリンク(パズル)を解くVBAに挑戦」で作成したVBAでナンバーリンクを解く事には成功しました、しかし、10×10なら数分で解けるものの、10×18でやったところ、4時間半もかかってしまいました。12×12では、待ちきれずに途中で止めてしまいました。
こちらの最終完成版のダウンロード



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

アメブロの記事本文をVBAでバックアップする№1

後日追記 アメブロの仕様変更が度々あり、ここで紹介しているコードで取得できないものもあります、いつ仕様変更されるかわかりませんので、都度変更するのは結構大変です。あくまで、WEBページの取得技術方法として参考にしてください。アメブロにはバックアップ機能がありません。
数独(ナンプレ)を解くVBAに挑戦№1
数独は、一般に「ナンバープレース(ナンプレ)」と呼ばれ、外国では「sudoku」と呼ばれているようです、この数独をExcelマクロVBAで解いてみようと言う事です。解き方は、とにかく片っ端から数字を当てはめていくという、なんとも芸の無い方法です。
数独(ナンプレ)を解くアルゴリズムの要点とパフォーマンスの検証№1
数独(ナンプレ)を解くアルゴリズムを例に、アルゴリズムの要点と、それによるパフォーマンスを検証します、数独(ナンプレ)を解くVBAに挑戦 ここでは、とにかく全ての数字を当てはめていくという、いわば全数チェックでの解法を使いました。考察するまでもなく、かなりの無駄がある事は明白です。
ナンバーリンク(パズル)を解くVBAに挑戦№1
ナンバーリンクを解くVBAのパフォーマンス改善№1
「ナンバーリンク(パズル)を解くVBAに挑戦」で作成したVBAでナンバーリンクを解く事には成功しました、しかし、10×10なら数分で解けるものの、10×18でやったところ、4時間半もかかってしまいました。12×12では、待ちきれずに途中で止めてしまいました。
オセロを作りながらマクロ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囲碁のダウンロード


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

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




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


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



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