• ベストアンサー

Excelの一般機能で数毒解法に挑戦

Excelの一般機能で数毒解法に挑戦 私は別添図のようなものを考えました 1~9ブロックはあらかじめ青で塗りつぶし 解答入力ブロックをセル参照しています そして数字が入力されればピンクになるよう条件付き書式を設定しておきます 解答入力ブロックに問題入力 例えば1のブロックで1が入った小ブロックおよび行・列をピンクで塗りつぶします そこまでやったのが添付図です そこで各ブロックの小ブロックおよび行・列で1つだけ残った青のセルにはそのブロックの数字を解答ブロックに入力 これだと難度の低い問題は良いのですが 難度が高くなった場合 キーとなるセルを発見できません このキーとなるセルの発見方法について何かヒントでもいただければと思っての質問です よろしくお願いします

noname#140567
noname#140567

質問者が選んだベストアンサー

  • ベストアンサー
  • u-bot
  • ベストアンサー率58% (1736/2988)
回答No.2

期待されている回答かどうか判りませんので見当違いならスルーして下さい。 質問者さんのおっしゃる「キーとなるセル」がどのようなものか判りませんが、 私の考える「キーとなるセル」とは ・そのセルの数値を確定することで他のセルに入る可能性のある数字の総数がもっとも少なくなるセル と考えます。 となるとプログラムとしては ・あるセルに設定可能な数値を一つ入れてみて、他のセルに入れることができる数値の総数を計算 ・全てのセルに対して上記処理を繰り返し、一番総数が少ないものをキーとなるセルとする ・ただし全く数値が入ることができないセルが一つでも存在したら最初に設定した数値は無効とする ということになります。 しかし難しい数独の場合は簡単にセルに入る数値が決定できないように考えられています。 そのため上記処理を繰り返して2、3手先、下手したら10手先まで考えた上で一番良いセルを探すことが必要です。 これをまともに計算すると処理量が莫大になるため、処理の途中でキーセルになり得だろうセルについては計算から除外する必要があります。 この考え方は結果が不明な状況で最善手を探す将棋や囲碁と同じです。 上記のような処理がエクセルの標準機能だけで実現できるかどうかは不明ですが、参考になれば幸いです。

noname#140567
質問者

お礼

ありがとうございました 良く理解できない部分もありますがおぼろげながら手掛かりをいただいたように思います 「キーとなるセル」とはうまく説明できませんが 回答いただいたことと多分同じことだと思いますが あるセルの数字が確定すると次々と連鎖的に他のセルの数字も確定していくようなセルのことです

その他の回答 (1)

noname#119360
noname#119360
回答No.1

ブロック内、たて列内、よこ列内で、おなじ組み合わせ数字の予約マスを検出し、ほかのマスに埋める候補数字から予約マスに入れる組み合わせ数字を除外する手順を組み込んでみてください。 たとえば、同ブロック内の2つのマスに4か8しか入らない予約マスが見つかったら、同ブロック内の残りの空きマスに埋まる候補数字から4と8は除外できます。

noname#140567
質問者

お礼

ありがとうございました

関連するQ&A

  • エクセル関数を使いこの様なことができますか?

    こんにちは エクセルのあるセルに数式(又は関数)を入力し、別のセルに数字を入力したら、セルの塗りつぶしの色が設定しておいた色に変わるようなことはできないでしょうか? (例えば、C1には当初は何も入力されておらず、そのC1にある数字を入力するとA1のセルの色が赤に変わるようなことを考えています。なお、色を変えたいセル自身には数字が入力されている場合といない場合と二通りあるため、いずれの場合も対応できるようにしたいのです。 つまり、初期状態では、A列(色を変えたいセル列)には数字が入ったセル、入っていないセルが混在しており、C列(ここに数字が入力されるたびにA列の対応する行のセルの色を変えたい)には何も入力されていない。この状態で、任意のC列のあるセルに数字を入力すると同じ行にあるA列のセルの色を変えたい、ということをしたいのです。) 具体的にA列にどの様な数式を入力すればよいかを教えて下さい。 (或いは、そのようなことをするための式(関数)はA,C以外の列のセルに入れる必要があるかもしれませんが(例えばB列)、それでもかまいません) よろしくお願いします。

  • エクセルでの表検索&比較です。

    図1のような表があります。 やりたいことは次の(1)~(3)です。 (1) 黄色の部分に適当な数字を入力します。(今仮に25000とします。この部分は変数です。) (2) 図1の表の中から最も近い値を緑の部分に表示するとともに、その数字のセルを赤でマークします。(行6-列7の25100になります) (3) (1)と(2)の差をピンクの部分に表示します。(絶対値で)(100になります) これを自動でやりたいのですがどうしてもできません。 関数や、テーブル検索のプログラムでもかまいませんので、ご存知の方どうかお知恵をお貸しください。 これができると、大変助かります。 よろしくお願いいたします。

  • エクセルで

    エクセルで数字の計算の作業をしているときに、縦の一つ一つのセルにどんどん数字を打ち込んでいき(enterで下のセルに移動しますよね)、その行の入力が終了後、横の次の行のセルの先頭にenterキー一つで行くようにするにはどのようにしたらよいのでしょうか?

  • エクセルの表示について

    1行目:セルA1+セルB1= C1 2行目:セルA2+セルB2= C2  ・  ・  ・ という計算式を、50行作成します。 C列に、(=A1+B1)という計算式を入れて、1行目のC1とドラグ&ドロップし、50行目まで計算式を入力するとき、 B列に数字が入力されていないときに、計算式の入った C列にも何も表示されないようにしたいんです。 今の状態だと、A列に数字が入っていると、自動的にC列にも数字が入ってしまうので困っています。 当方はエクセル初心者なので、できれば、マクロなど複雑な方法を用いず、解決したいのですが・・・ どなたか御存知の方、アドバイスお願いします。

  • エクセルのセルの並び替え

    A列の1~100行まで値(数字)が入力されていると仮定して、 A列の100行目のセルの値をB列の1行目のセルへ、 A列の99行目のセルの値をB列の2行目のセルへ、 というように並び替える方法を教えていただけないでしょうか? また、この時の各セルの値の大きさは関係ないです。 よろしくお願いします。

  • エクセルにて

    A列には日付が入力してあります。(2001/7/17) その日付から3日間経過してもC列のその行に何も入力されなければ、 B列のそのセルを黄色に表示する。 更に7日間経過しても入力なければ赤に表示するようにしたいのですが!? C列に入力されればB列のそのセルは青色表示にしたいのですが!     A      B     C 1 2000/7/10   赤 2 2000/7/11   青   2001/7/16 2 2001/7/13   黄   

  • エクセルの入力について教えてください。

    エクセルのひとつのセルに入力する際、下の数桁だけ違った数字を入力したい場合、下の桁数だけ入力すればいいような設定や、または簡単になる入力方法ってありますか? 例えば、ひとつのセルに下4桁だけ数字を変えて入力したい場合       (1列目)   (2列目) (1行目)12345601234 123456 (2行目)12345601235 234567 (3行目)12345601345 345678 (4行目)12345601346 456789 のように頭の1234560は固定で、下4桁だけを変えて入力していきたいのですが、この1列目の1234560が固定なので、ベタ入力をするのではなくて、もっと簡単にできないものかなぁと思っています。 ちなみに辞書ツールの使い方は知っているので、それ以外で何かやり方をご存知名でしたら教えてください。 エクセルは2003を使っています。 質問の表現が下手でわかりにくかったらすみません。

  • MOUS一般(Word)について詳しい方に質問

    先程も投稿させて頂いた者ですが… またまた教えてください~(T-T) ------------- 表の3行目の上に1行挿入し、 次のデータを挿入しなさい。 1列目に「○○」 3列目に「△△」 ------------- こんな感じの問題↑があったのですけど… その表の別のセルに同じデータ(○○や△△) があるんです! …そんな場合は、そのセル のデータを、[Ctrl]+ドラッグで 持って来ても、大丈夫でしょうか?? ( これ↑の方が早いし簡単。) 問題文が「次のデータを入力しなさい」 だったら、ちゃんと入力するんですが、 「挿入しなさい」とあるので、とにかく 指示通りのデータが入れられれば、やり方は 何でもいいのかな?なんて思った次第… けど、【解答】には『1列目に「○○」、 2列目に「△△」と入力する』と書いてありました。 でも入力が めんどい…(ぉぃ) もし、このような問題が本番でも出て、 …んで、([Ctrl]+ドラッグでも構わないのに ) いちいち入力してたせいで時間切れになり、 最後の問題を解けなかったー!!…なんてことに ならないためにも、ゼヒ知っておきたいです。 やっぱり、ちゃんと入力しないと 不正解になるんでしょうか??? MOUSに詳しい方、宜しくお願いします!m(_ _)m

  • エクセルでこんな事出来ます?

    エクセル2000で教えて下さい。 ABCDの列に任意の数字が入ります。 例えば     A   B   C   D 1  -10 -20 -30  60 2   50 -30  0  -20 3   10  30 -25 -15 のように同じ行で4つのセルをプラスマイナスすると等しくなります。 数値の入力は小さい数字(マイナスの大きい数字)から順番に入力されていきます。 最後に一番大きい数字が入るように式を入れたいのです。 例で言うと1行目ではD1、2行目ではA2、3行目ではB3の答えが自動で入るようにしたいのです。 列は4列のみです。マイナスの数値は最低でも1つ入ります。   

  • エクセルのマクロについて

    エクセルのシートに A列の10行目から60009行めまで数字が入力されてます。 10行目から110行までの109行目までの100行のなかで 一番小さい数字から8番目に小さい数字までの8個の数値の右横のセル(B列)に 「a」というマークをつけたいのです。 同様に110行目から209行、210行から309行 というふうに59910行目~60009目 までやりたいのですがどうのようにすれば良いでしょうか? 関数で出来るならそれでも良いです。 教えていただけませんでしょうか? よろしくお願いします。