• ベストアンサー

セルへの入力を簡単にしたい

エクセル2002で12x12=144マスに1から144までの数字を入れて迷路を作っています。A列にデータを144入れて、1と表示のマスに”=A1", 2のマスに”=A2", 3のマス”=A3" となるようにしたいのです。最初から”=A1"と打っていけば済むことですが、144もあるので数字だけの方が入力が楽なのです。マクロの記録を使うと列も変わってしまいます。138は”=A138"になってほしいのです。138のセル位置を読取ることができればいいのですが。いろいろと調べて試してみましたがどれもうまくいきません。よい方法があれば教えてください。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

マクロで Public Sub addA() Dim x As Range For Each x In Selection x.FormulaLocal = "=A" & x.Value Next End Sub のようなプロシジャーを作成して、 12×12のマスを選択してから、マクロの実行からマクロを実行する。

ei60
質問者

お礼

早速のご回答ありがとうございました。BLUEPIXYさんの書かれた通りにしたらうまく変換できました。私にはまだこのプロシジャーがよくわかりませんが、ちょっと本やネットには載っていない内容ですごく助かりましたし勉強になりました。これまでやっていた入力が大幅に楽になります。もし、よければどんな本で勉強すればよいか教えてもらえませんか。本当に助かりました。ありがとうございました。

その他の回答 (4)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

#3>よければどんな本で勉強すればよいか マクロに関する本ですよね。 私は、Excel97 の時にマクロ事例集みたいな本を買いました。 なので、現在のどんな本を買えばいいかみたいなアドバイスはできないのですが、 基本的な文法と、事例集みたいな本がよろしいのではないかと思います。 だいたい、全てを網羅するような本はほとんどないと思いますが、 全てを網羅するような本は、あったとしても、読む気力が読む前になくなってしまいますので、「自分がこういうことをしたい」という方面の事例がなるべくたくさんの載っている本が良いのではないかと思います。 本に網羅されない部分は、多かれ少なかれあると思いますが エクセルのVBE画面でコード入力時にどのようなプロパティやメソッドがあるのかが表示されます、それをF1キーでヘルプを見ることができますので、そうしたヘルプを活用するのがよろしいかと思います。 あと、大抵の事例について、OKWaveのようなサイトで既に似たような質問があると思うので、そのような事例を見る(見ておく)のも良いと思います。

ei60
質問者

お礼

BLUEPIXYさん、たびたびの素早いご回答本当にありがとうございます。マクロの勉強のこと、参考書のこと、BLUEPIXYさんのおっしゃる通りだと思います。F1キーでヘルプ、OKWave、どちらも初めて知りました。今、VBAのおもしろさがわかってきたところですのでしっかり勉強していきます。本当にありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

質問の表現について。 >エクセル2002 多分バージョンに関係ない事項。最後の注記で十分。 >12x12=144マス エクセルではマスといわずセルという セル(マス)列・行の有り様は? 後の表現からすると、A列1列のA1:A144のセルか。 >A列にデータを144入れて 連続したセルA1:A144か、飛び飛びのセルにか。 迷路は平面的なはずだが、なぜA列1列で良いのか。 セルは詰めるが、セルの値はランダムか。 >1と表示のマスに”=A1", 2のマスに”=A2", 3のマス”=A3" となるようにしたいのです 「表示」というより、「入力されたセル」とか、「値が1のセル」とかの表現がベター。 ○数(値)の入ったセルに関数式を入れると、値が壊れ、セルの元の 値が関数式で使えません。これはエクセルの常識。 >マクロの記録を使うと列も変わってしまいます どういうことを指しているか判らない。 >138のセル位置を読取ることができればいいのですが どういうことを指しているか判らない。A列には連続数でなくランダム数が入っているのですか。 ーーーーー推定ヒント ○A列には1-144の数(乱数)を入れたい(入れる)のですか であればB列に重複の少なクなる程度の十分な桁数の乱数を入れて 、B列でソートすると良い。私用する関数はRAND関数。 ○B列(あるいはどこでも)セルに =INDIRECT("A"&A1) といったことをしたいのではないでしょうか。

ei60
質問者

補足

早速のご回答ありがとうございました。指摘していただいて質問の要領がまずかったことよくわかりました。もっと具体的に的確に質問しなければ、回答者がとまどうこと痛感しました。何分エクセルの初心者な者ですが、それを差し引いてもわかりずらいものでした。今後、よく注意します。BLUEPIXYさんのやり方でうまくいけました。お世話かけました。ありがとうございました。

  • redowl
  • ベストアンサー率43% (2140/4926)
回答No.2

質問内容で、今ひとつ理解し難い部分があり・・・ どういう数字迷路なのか解りませんが 12X12で構成されるセルの中に数式(=A◎)を入れておいて、A列の 数字(1~144)を  表示させたい。 12X12のセル内の数式は、ランダムにしたい。且つ、重複しないで数式を入れる方法、関数、マクロを教えて?ということでしょうか?

ei60
質問者

お礼

早速のご回答ありがとうございました。説明不足で申し訳ありません。BLUEPIXYさんのやり方でうまくいけました。お世話かけました。ありがとうございました。

回答No.1

VBAで使うシートにボタンを貼り付けてダブルクリックして出てくるダイアログに下のコードを貼り付け。実行すると、A列の数字Xに併せて"=A(X)"と変換します。でもこれで何をしようとしているのかわからないのですが。一応簡単なコードのみ。 Private Sub CommandButton1_Click() Dim A(144) As Integer For i = 1 To 144 Worksheets("Sheet1").Cells(i, 1).Value = "=A(" & Worksheets("Sheet1").Cells(i, 1).Value & ")" Next i End Sub

ei60
質問者

補足

早速のご回答ありがとうございました。説明不足で申し訳ありません。A列にはデータとして、desk, dog, bag などの英単語が入ります。それを144のマスに配置して、日本語の順番(机、犬、かばん)にたどらせます。”=A3"としたマスにはbagが出るようにします。迷路をたくさん作りたいので入力を"3"だけで済ませて、そのマスに bag が出るようにしたいのです。、VBAも最近始めたばかりで本を見ながらためしています。マス目の中の"3"のセル位置を読取れれば、そこへ”=A3"と入れれるのですが。よろしくお願いします。