Excelマクロでラクラクお勉強

Excelマクロで楽して楽しく勉強してラクラク成績アップ

セルの位置を行番号と列番号で指定して読みとってみよう

1. セルの位置を行番号と列番号で指定して読みとってみよう

きゅう先生

「セルの位置を行番号と列番号で指定して、そのセルの値を読みとってみましょう。

 セルの値を読みとったら、それをいったん変数に代入しましょう。次のような構文になります。」

f:id:qsuguru:20171128190638j:plain

きゅう先生

「変数に代入した値は、直接見ることができません。

そこで、変数の値をセルの値に代入しましょう。次のような構文になります。」

f:id:qsuguru:20171128190745j:plain

きゅう先生

「今回は、多数のセルの値を読みとることになるので、『3_くり返しセルに文字を書きこむ』のときにつくったマクロ『行番号と列番号をカウントアップするループ処理』をつかって、あらかじめ10行×10列のセルに文字を書きこんでおきましょう。」

f:id:qsuguru:20171128190925j:plain

f:id:qsuguru:20171128190953j:plain

(1) 1行, 1列

きゅう先生

「1行目・1列目のセルの値を読み取り、いったん変数『セルの値』に格納。

 その後、セルA12に変数『セルの値』を設定しましょう。」

 

すぐるくん

「まず、変数『セルの値』に格納する値は『X行Y列』といった文字列なので、変数『セルの値』を文字列型で宣言します。

『Dim セルの値 As String』と記述します。

 

 次に、1行目・1列目のセルの値を、変数『セルの値』に格納するのだから、

『セルの値 = Cells(1, 1).Value』と記述します。

 

 最後に、セルA12に変数『セルの値』を設定するのだから、

『Range("A12").Value = セルの値』と記述します。」

f:id:qsuguru:20171128191149j:plain

きゅう先生

「よくできました。それでは、そのマクロを実行してみましょう。」

 

f:id:qsuguru:20171128191239j:plain

すぐるくん

「1行目・1列目のセルの値『1行1列』が読みとられて、セルA12に書きこまれました。」

 

(2) 1~3行, 1列

きゅう先生

「列を1列目に固定して、行を1行目から3行目まで1行ずつカウントアップしていきながら、そのつどセルの値を読みとり文字連結し変数『セルの値』に格納。

 その後、セルA12に変数『セルの値』を設定しましょう。」

 

すぐるくん

「まず、変数『セルの値』を文字列型で宣言します。

『Dim セルの値 As String』と記述します。

 

 1行目・1列目のセルの値を、変数『セルの値』に格納するのだから、

『セルの値 = Cells(1, 1).Value』と記述します。

 

 2行目・1列目のセルの値を、変数『セルの値』に格納するのだから、

『セルの値 = Cells(2, 1).Value』と記述します。

 

 3行目・1列目のセルの値を、変数『セルの値』に格納するのだから、

『セルの値 = Cells(3, 1).Value』と記述します。

 

 最後に、セルA12に変数『セルの値』を設定するのだから、

『Range("A12").Value = セルの値』と記述します。」

f:id:qsuguru:20171128191616j:plain

きゅう先生

「それでは、そのマクロを実行してみましょう。」

 

f:id:qsuguru:20171128191704j:plain

すぐるくん

「3行目・1列目のセルの値『3行1列』が読みとられて、セルA12に書きこまれました。

 あっ、1行目・1列目のセルの値と2行目・1列目のセルの値が読みとられていません。」

 

きゅう先生

「その通りです。

 

『セルの値 = Cells(1, 1).Value

 セルの値 = Cells(2, 1).Value

 セルの値 = Cells(3, 1).Value

 と記述したマクロを実行したとき、

 

 最初に1行目のセルの値が変数『セルの値』に格納され、

 次に、2行目のセルの値が変数『セルの値』に格納され、

 最後に3行目のセルの値が変数『セルの値』に格納されることになり、

 

 結局、最後に変数『セルの値』に格納されるのは3行目のセルの値だけになってしまいます。」

 

すぐるくん

「どうしたら、1行目と2行目のセルの値も格納されるようになるのですか?」

 

きゅう先生

「こんなときは文字連結をつかうと良いです。

 

 左辺の文字列と右辺の文字列を結合する演算子&』をつかって、『セルの値』を連結していきます。

 

 次のように、コードを書きかえてみてください。

 

『セルの値 = Cells(1, 1).Value

 セルの値 = セルの値 & Cells(2, 1).Value

 セルの値 = セルの値 & Cells(3, 1).Value

 

 こうすれば、最初に、1行目のセルの値が、変数『セルの値』に格納され、

 次に、その変数『セルの値』と2行目のセルの値が文字連結されて、変数『セルの値』に格納され、

 最後に、その変数『セルの値』と3行目のセルの値が文字連結されて、変数『セルの値』に格納されることになります。」

 

すぐるくん

「『セルの値』を文字連結するようにコードを書きかえます。」 

f:id:qsuguru:20171128192922j:plain

きゅう先生

「よくできました。それでは、そのマクロを実行してみましょう。」

 

f:id:qsuguru:20171128193014j:plain

すぐるくん

「1~3行目・1列目のセルの値が読みとられて文字連結されて、セルA12に書きこまれました。」

 

(3) 1行, 1~3列

きゅう先生

「行を1行目に固定して、列を1列目から3列目まで1列ずつカウントアップしていきながら、そのつどセルの値を読みとり文字連結し変数『セルの値』に格納。

 その後、セルA12に変数『セルの値』を設定しましょう。」

 

すぐるくん

「まず、変数『セルの値』を文字列型で宣言します。

『Dim セルの値 As String』と記述します。

 

 1行目・1列目のセルの値を、変数『セルの値』に格納するのだから、

『セルの値 = Cells(1, 1).Value』と記述します。

 

 変数『セルの値』と1行目・2列目のセルの値を文字連結し、変数『セルの値』に格納するのだから、

『セルの値 = セルの値 & Cells(1, 2).Value』と記述します。

 

 変数『セルの値』と1行目・3列目のセルの値を文字連結し、変数『セルの値』に格納するのだから、

『セルの値 = セルの値 & Cells(1, 3).Value』と記述します。

 

 最後に、セルA12に変数『セルの値』を設定するのだから、

『Range("A12").Value = セルの値』と記述します。」

f:id:qsuguru:20171128193250j:plain

きゅう先生

「よくできました。それでは、そのマクロを実行してみましょう。」 

 

f:id:qsuguru:20171128193343j:plain

すぐるくん

「1行目・1~3列目のセルの値が読みとられて文字連結されて、セルA12に書きこまれました。」

 

(4) 1~3行, 1~3列

きゅう先生

「行を1行目から3行目まで1行ずつカウントアップしていきながら、列も1列目から3列目まで1列ずつカウントアップしていき、そのつどセルの値を読みとり文字連結し変数『セルの値』に格納。

 その後、セルA12に変数『セルの値』を設定しましょう。」

 

すぐるくん

「まず、変数『セルの値』を文字列型で宣言します。

『Dim セルの値 As String』と記述します。

 

 1行目・1列目のセルの値を、変数『セルの値』に格納するのだから、

『セルの値 = Cells(1, 1).Value』と記述します。

 変数『セルの値』と1行目・2列目のセルの値を文字連結し、変数『セルの値』に格納するのだから、

『セルの値 = セルの値 & Cells(1, 2).Value』と記述します。

 変数『セルの値』と1行目・3列目のセルの値を文字連結し、変数『セルの値』に格納するのだから、

『セルの値 = セルの値 & Cells(1, 3).Value』と記述します。

 

 変数『セルの値』と2行目・1列目のセルの値を文字連結し、変数『セルの値』に格納するのだから、

『セルの値 = セルの値 & Cells(2, 1).Value』と記述します。

 変数『セルの値』と2行目・2列目のセルの値を文字連結し、変数『セルの値』に格納するのだから、

『セルの値 = セルの値 & Cells(2, 2).Value』と記述します。

 変数『セルの値』と2行目・3列目のセルの値を文字連結し、変数『セルの値』に格納するのだから、

『セルの値 = セルの値 & Cells(2, 3).Value』と記述します。

 

 変数『セルの値』と3行目・1列目のセルの値を文字連結し、変数『セルの値』に格納するのだから、

『セルの値 = セルの値 & Cells(3, 1).Value』と記述します。

 変数『セルの値』と3行目・2列目のセルの値を文字連結し、変数『セルの値』に格納するのだから、

『セルの値 = セルの値 & Cells(3, 2).Value』と記述します。

 変数『セルの値』と3行目・3列目のセルの値を文字連結し、変数『セルの値』に格納するのだから、

『セルの値 = セルの値 & Cells(3, 3).Value』と記述します。

 

 最後に、セルA12に変数『セルの値』を設定するのだから、

『Range("A12").Value = セルの値』と記述します。」

f:id:qsuguru:20171128193744j:plain

きゅう先生

「よくできました。それでは、そのマクロを実行してみましょう。」

 

f:id:qsuguru:20171128193820j:plain

すぐるくん

「1~3行目・1~3列目のセルの値が読みとられて文字連結されて、セルA12に書きこまれました。」

 

 

 

 

 

にほんブログ村 IT技術ブログへ
にほんブログ村