EXCEL VBA 右隣・左隣のセルの参照・検索結果の両隣のセルを参照する(Nextプロパティ・Previousプロパティ)
EXCEL VBA 右隣・左隣のセルの参照・検索結果の両隣のセルを参照する(Nextプロパティ・Previousプロパティ)
今回説明するのは、NextプロパティとPreviousプロパティの説明をいたします。指定したセルの前(Previous:左側)・後(Next:右側)にあるセルを参照する事ができます。今回は、セルに対しての説明を行いますが、Sheet(シート)に対してもNEXTプロパティとPreviousプロパティを利用する事で、左右シートを参照する事も出来ます。それでは、サンプルプログラムを交えて順番に説明致します。
●【EXCEL VBA RangeオブジェクトOFFSETプロパティについては、下記を参照して下さい】
EXCEL VBA RangeオブジェクトOFFSETプロパティ(基準セルからの行・列移動・相対参照・セル範囲を移動する)
●【NEXTプロパティ (Excel)、下記を参照して下さい】(Microsoft社 様)】
https://docs.microsoft.com/ja-jp/office/vba/api/excel.range.next
● Nextプロパティ/ Previousプロパティを利用するには、下記の通りに設定を行います。
・ Rangeオブジェクト.Next (セルの右側を参照)
・ Rangeオブジェクト.Previous (セルの左側を参照)
【使用例】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
' ' Sub Next_Previous00() Dim Cellset As Range Set Cellset = Range("B3") '起点となるセル(B3) MsgBox Cellset.Next 'セル(B3)⇒ 右を参照 セル(C3)① MsgBox Cellset.Previous 'セル(B3)⇒ 右を参照 セル(A3)② End Sub ' |
【サンプルプログラム実行後】
・セル「B3」が起点にNextプロパティを使いセルの参照先をB3⇒C3・Previousプロパティを使い参照先をC3⇒A3に移ります。
EXCEL VBA 右隣・左隣のセルの参照・検索結果の両隣のセルを参照しメッセージを表示します。(Nextプロパティ・Previousプロパティ)
下記のサンプルプログラムは、検索対象の結果に該当する両隣のセルを参照してメッセージボックスを表示します。
【プログラムの流れ】
① B列の中に該当する検索値が有るか調べます。(検索値:山形県)
② B列の中に該当する検索値が無ければ、プログラムを終了します。
③ B列の中に該当する検索値(山形県)が発見された場合は、その行の左右のセルの値(NEXTプロパティ・Previousプロパティ)で取得します。
④ 取得した内容をメッセージボックスにて表示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
' ' Sub Next_Previous01() '該当するセルを検索して、その左右のセルを参照してメッセージボックスに表示します。 Dim Hitcell As Range Set Hitcell = Range("B:B").Find(what:="山形県") 'B列の中に検索値:山形県が有るか検索します。 If Hitcell Is Nothing Then 'B列の中に検索値:山形県がなければ、プログラム終了 Exit Sub Else MsgBox Hitcell & "は、人口" & Hitcell.Next & "人で、コードは、" & Hitcell.Previous & "です。" '該当する検索値があれば、該当する行のA列とC列の値を表示します。 End If End Sub ' |
(画面クリックして拡大)
EXCEL VBA 一覧データから一致する右側のデータを転記する。(Nextプロパティ)
下記のサンプルプログラムは、一覧データから一致する右側のデータを転記します。G列に都道府県名の一覧があります。この都道府県名を元に、B列の都道府県名を検索して一致したら、一致した都道府県名の右側(Nextプロパティ)でH列(人口)に転記するプログラムです。Offset関数でも同じ事ができますが、一致したデータの左右データの場合は、Nextプロパティ(右側)・Previousプロパティ(左側)を使う事で左右のデータを簡単に参照する事が出来ます。
【プログラムの流れ】
① セル(G2~G5)に登録されている都道府県名を順番に参照します。
② G列の都道府県名から、B列の都道府県名の中より該当する都道府県名が有るか検索します。
③ G列の都道府県名がB列の都道府県名に該当する都道府県名が無いか判定します。
④ B列の都道府県名に一致する都道府県名が無い場合は、H列(人口)に空白を登録します。
⑤ B列の都道府県名に一致する都道府県名がある場合は、H列(人口)にC列(人口)を転記します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
' ' Sub Next_Previous02()'都道府県名を検索して一致する人口を転記します。 Dim Hitcell, Searchcell As Range For Each Searchcell In Range("G2:G5") 'セルG2~G5の間を繰り返す。 Set Hitcell = Range("B:B").Find(what:=Searchcell) 'G列の都道府県名から、B列の都道府県名の中より検索します。 If Hitcell Is Nothing Then Searchcell.Next = "" '該当する都道府県名がない場合は、空白(H列) Else Searchcell.Next = Hitcell.Next '都道府県名が一致する場合は、人口(C列)を参照して人口(H列)に転記します。 End If Next Searchcell End Sub ' |
(画面クリックして拡大)
EXCEL VBA 一覧データから一致する右側のデータを転記する。(Next/Previousプロパティ)
下記のサンプルプログラムは、一覧データから一致する左右のデータを転記します。G列に氏名の一覧データがあります。この氏名を元に、B列の氏名を検索して一致したら、一致した氏名の右側(Nextプロパティ)でH列(年齢)を転記して、氏名の左側(Previousプロパティ)でF列(社員番号)を転記するプログラムです。
【プログラムの流れ】
① セル(G2~G12)に登録されている氏名を順番に参照します。(繰り返す)
② G列の氏名から、B列の氏名の中より該当する氏名が有るか検索します。
③ G列の氏名がB列の氏名に該当する氏名が無いか判定します。
④ B列の氏名に一致する氏名が無い場合は、F列(社員番号)とH列(年齢)が空白に転記します。
⑤ B列の氏名に一致する氏名がある場合は、F列(社員番号)とH列(年齢)が転記されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
' ' Sub Next_Previous03() '氏名を検索して一致する氏名の社員番号と年齢を転記します。 Dim Hitcell, Searchcell As Range For Each Searchcell In Range("G2:G12") 'セルG2~G5の間を繰り返す。 Set Hitcell = Range("B:B").Find(what:=Searchcell) 'G列の氏名から、B列の氏名一覧の中より検索します。 If Hitcell Is Nothing Then ’一致した氏名が無いか判定します。 Searchcell.Next = "" '該当する氏名がない場合は、空白を転記 Searchcell.Previous = "" '該当する氏名が無い場合は、空白を転記 Else Searchcell.Next = Hitcell.Next ’該当した場合は、右側のセルC列(年齢)をH列(年齢)に転記します。 Searchcell.Previous = Hitcell.Previous ’該当した場合は、右側のセルA列(社員番号)をF列(社員番号)に転記します。 End If Next Searchcell End Sub ' |
(画面クリックして拡大)
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。