覆面算をExcelのマクロ機能で表したいのですが、以下のような問題がとける方、マクロ部分の回答をお願いします。
○ 問題
(文字にあらゆる数字を順に入れて、正解を探す。)
ただし、ルールの1~3を満足するプログラムとすること。
c a b
+) b a c
----------
d a b a
答えなどは次のように表示するようにプログラミングする。
² 一番初めに、アクティブシート(Sheet1)の中のすべての
セルの内容をクリアする。
² 次にセルA1に「覆面算の答え」の文字列を、A2~G2に、
a, b, c, d, x, y, zの文字を記入する。
² プログラムの実行(ルール1~3を考慮した、繰り返し文)に
より、最初に覆面算を満足するよう得られたa, b, c, d,
x, y, z(整数)をA3~G3に記入する。
² 複数の答えがある場合には、以降に得られたa, b, c, d,
x, y, zをA4~G4、A5~G5、¢ ¢ ¢ に順に記入するよう
にする。
² 最後に、答えの記されている次の行のA列目のセルに「答
えは」、C列目のセルに「通り」、B列目のセルに実際の答
えの数(何通りか)を記すようにしてプログラムを終える。
※ 上の文中で文字列を囲っている「」のセル中への表示は不要。
loop(繰り返し処理)文やfor next 文を使う。
ここからは参考までに。
a b
+)b a
--------
a a c
² 覆面算のルール
ルール1 : 文字はそれぞれの桁の文字を表す。
ルール2 : 異なる文字は異なる数字を表し、同じ文字は同じ
数字を表す。
ルール3 : 左端の数字は0ではない。
ルール4 : (パズルとしては)答えが1つになる。
このルールに従うと、上記の覆面算の答えは次のようになる。
1 9
+)9 1
--------
1 1 0
○ 覆面算を力技で解く。
(文字にあらゆる数字を順に入れて、正解を探す。)
例えば
a b b
+)d d c
----------
a a a d
の覆面算を解くことを考える。
覆面算中に現れる3桁(また4桁)の数値は次のように考える。
上記の3桁abbは、a¤100+b¤10+b と考え、これをxとす
る。同様にddc をy、aaad をz としたときx+y=zとなる、
a,b,c,dをループを利用して探す。(結果が得られたならそれが
覆面算の答えになっていることを確認する。)
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
マクロのアルゴリズムについて、質問したいと言うことでしょうか。
(違っていたら、ごめんなさい)最初の問題について、
> ただし、ルールの1~3を満足するプログラムとすること。
とありますが、そのルール1~3とは、後述の問題にある、
>² 覆面算のルール
ルール1 : 文字はそれぞれの桁の文字を表す。
ルール2 : 異なる文字は異なる数字を表し、同じ文字は同じ
数字を表す。
ルール3 : 左端の数字は0ではない。
ルール4 : (パズルとしては)答えが1つになる。
を指しているのでしょうか。(定義は先に提示しましょうね)
また、セルの番地を示されても、ちょっと、わからないですよ。要は、
c a b
+) b a c
----------
d a b a
の答えを見つけ出すマクロを作れたらよい、と想像して以下に書きます。
●下ごしらえ
・変数abcdの値を設定するセルをそれぞれ用意する。
・cab、bac、dabaの三桁、四桁の数字を作る関数を用意。
例えば、cabなら、(c*100)+(a*10)+b
(注意:変数は、式にするときは該当のセルを指定するのは言うまでもなし)
●マクロの流れ
・abcdに、順に0~9の数字が入るようなマクロを作る(しらみ潰しに答えを求めることを前提にしています。このマクロは組めますよね?)
・bcdには、0を飛ばす設定を入れる(ルール3により。しかし、マクロが複雑になるだけなので、この設定は必ずしも入れなくてよし)
変数abcdの値が変わるたびに、cabの値のセルと、bacの値のセルとを足した結果が、dabaの値のセルと同じになるかどうかをチェックする。「=」が成り立ったら、ループを中断(終了)させる。
ループは、For文を使ったほうが、変数にパラメータをそのままぶち込めるので、やりやすいかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/06/15 14:11
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Java Java 南京錠 2 2023/02/04 11:46
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Excel(エクセル) エクセルのセルの書式設定・ユーザー定義の条件設定について 1 2022/08/17 21:56
- Visual Basic(VBA) 先頭と末尾を指定して連続した数字を入力 1 2022/09/14 13:12
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/15 08:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
ExcelVBAを使って、値...
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel】指定したセルの名前で...
-
指定した条件で行セルを非表示...
-
DataGridViewのセル編集完了後...
-
Excelで指定した日付から過去の...
-
VBA コピーして次の値まで貼り...
-
Excel VBA、 別ブックの最終行...
-
エクセルVBAでコピーして順...
-
ExcelのVBAで数字と文字列をマ...
-
screenupdatingが機能しなくて...
-
特定行の色を変えたい(FlexGrid)
-
連続する複数のセル値がすべて0...
-
Excel vbaについて知恵もしくは...
-
Excel ユーザーフォームをモー...
-
【EXCEL VBA】Range("A:A").Fi...
-
プロムラミングが得意な人助け...
-
excelで置換をしたいんですが
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
TODAY()で設定したセルの日付...
-
EXCELで変数をペーストしたい
-
Excel VBA、 別ブックの最終行...
-
Excelのプルダウンで2列分の情...
-
VBA コピーして次の値まで貼り...
-
screenupdatingが機能しなくて...
-
エクセルVBAでコピーして順...
-
VBA初心者です。結合セルを保持...
-
セル色なしの行一括削除
-
VBAでセルをクリックする回...
-
Excel vbaで特定の文字以外が入...
-
DataGridViewの各セル幅を自由...
-
特定の文字を条件に行挿入とそ...
-
【VBA】指定したセルと同じ値で...
おすすめ情報