• ベストアンサー

For Next 式の結果をセル表示

Dim i, p  For i = 1 To 9   For p = 1 To 9     Cells(i, i * p).Value = i * p    Next p   Next i  End Sub ↑の式ではA、1~I、9に  結果が出るのですが  その結果を縦にひとつづつ表示したいのです  (たとえばA1~A81へ)  その場合はもうひとつ変数を宣言して  変数に表示したいセルの情報を記入するのですか?  もしくは変数を宣言しなくても可能ですか?    できれば双方のサンプルを教えていただければ  幸いです

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

  • ベストアンサー
  • norakuma
  • ベストアンサー率29% (293/977)
回答No.1

変数を宣言しない場合 Sub test() Dim i, p For i = 1 To 9 For p = 1 To 9 Cells(i * 10 - (9 + i - p), 1).Value = i * p Next p Next i End Sub =============== i * 10 - (9 + i - p) で、行に入る数字を作ってます。 =============== 次に変数に入れるやつですが、 適当な変数を宣言して、ループの中でカウントアップし、 それを、A列の中の行とすればいけます。 Sub test() Dim i, p, y y = 0 For i = 1 To 9 For p = 1 To 9 y = y + 1 Cells(y, 1).Value = i * p Next p Next i End Sub

ennkai
質問者

お礼

早速の御回答感謝です 両方のバージョンを試してみたいと思います。 変数もループも敷居が高くて挑戦できないでいましたが がんばりたいと思います

その他の回答 (3)

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

何をしたいのか良く伝わらないが (1)Cells(行、列)で行、列を表すには、別変数にした方が判りやすいと思う。 #1回答の後半。 (2)たまたま本題では Sub test01() Dim i, p For i = 1 To 9 For p = 1 To 9 Cells((i - 1) * 9 + p, 1).Value = i * p Next p Next i End Sub で良いのかな。 しかしいつも旨く行くとは限らないから、r(Rowのr) とでも取りあえずおいて、rはp,iでどう表されるか 考える。

ennkai
質問者

お礼

ご解答ありがとうございます ROWも 今後つかっていこうとおもいます

回答No.3

#2の補足に対する回答 1)変数宣言して指定する場合  ・セル参照で得られる以外の情報が必要で   あるとき  ・セル参照が大量で、参照式の記述全体が   エクセルのファイルサイズに影響するとき 2)直接数式で指定する場合  ・局所的なセル参照で済ませられるとき   (例えば単純に合計値を求めるとき) 何かの宿題ですか? 問題は九九の表を作らせ、並びを変更させ…と基本的なアルゴリズムを習得させたうえ、最後に「得失を述べよ」という理解度確認の課題らしいですね。

ennkai
質問者

お礼

お礼が遅くなって大変もうしわけありません 変数・数式それぞれの使い分けについて 詳細にお答えくださってありがとうございます。 非常に参考になりました。 宿題というわけではないのですが^^

回答No.2

新たに変数定義はせず、   Cells(9*(i-1)+p, 1).Value = i*p としてはどうなのでしょう? #1さんの式と同じことですが、シンプルだし、意味がよく把握できますでしょ?

ennkai
質問者

お礼

お礼が遅くなって申し訳ありません。 色々参考にさせていただいて おぼろげながらCells とRangeの使い分け があることが分かりました。 本当にありがとうございました

ennkai
質問者

補足

御回答ありがとうございます 参考になります^^ 皆様はこのようなセルの場所を指定するときに、 A 変数宣言して指定する場合 と B 直接数式で指定する場合を どのように使い分けていらっしゃいますか? A・・・マクロ自体が見やすくなる B・・・細かく位置を指定できる 等など・・・