この記事では、VBAにおいて
◆エクセルシート上の表データをまるごと変数化する方法
◆変数化した表の指定した場所のデータを取り出す方法
をご紹介していきます。
この記事で紹介する内容は、私が普段のエクセル業務でもっとも活用しているスキルと言っても過言ではありません。
基本を理解し、応用するだけで作業効率が格段に上がるはずです。
初心者向けに事例を用いて説明していきますので、ぜひ最後までご覧ください。
それでは早速やっていきます!
紹介するスキルの概要説明
まずはじめに今回の記事で紹介する内容を簡単にご説明しておきます。
今回は以下のようにエクセルシート上に記載されている表をVBA上で変数化し、さらにその変数の中から欲しい場所のデータを取り出し、別のセルに記入するということをやってみようと思います。
具体的には、
①F3からJ11セルまでの表を変数化
②その表の中から、B4セル、C4セルに記載された行列数の数値を探索
③D4セルに記入する
ということをやってみようと思います。
それではさっそく実際のスキル紹介に移っていきましょう。
表をまるごと変数化する方法
まずはじめにエクセルシート上の表を変数化する方法についてです。
基本的な手順は以下の通りです。
①表に適用する変数の名前を決める
②表の場所を記憶させる
まず①については、基本的にはどんな名前でもOKです。
次に②については、
①で決めた名前=エクセルシート上の範囲
という形で行います。
たとえば上の画像で紹介したようにF3からJ11セルまでを変数化したい場合は
変数=Range(“F3:J11”) とか
変数=Range(Cells(3, 6), Cells(11, 10))
というように設定すればOKです。
※具体的な使用例は後でご紹介します。
変数化した表から欲しいデータを取り出す方法
変数化ができたら、次はその変数化した表の中から欲しいデータを取り出す方法についてご紹介します。
まず前提として先ほど変数化した表は、左上が(1,1)として扱われます。
そこを基準として(*,*)という形でデータの場所を指定してあげることが出来ます。
例えば上の画像でいうと
(1,1)⇒6
(5,1)⇒4
(9,5)⇒10
という感じです。
データとして取り出したい場合は、
データを受け取る変数=表に適用した変数(*,*)
という形で行うことが出来ます。
一連のスキルをご紹介していきましたが、いまいちイメージがわかないと思いますので、ここからは実際にVBA上での使用例をご紹介していこうと思います。
VBAでの実際の使用例
作業内容としては、冒頭にも説明したように、
①F3からJ11セルまでの表を変数化
②その表の中から、B4セル、C4セルに記載された行列数の数値を探索
③D4セルに記入する
ということをやっていきます。
◆上の作業を実行するVBAコード
Sub matrix_sample()
'変数の型を宣言
Dim matA As Variant
Dim gyou As Integer, retsu As Integer
'表をまるごと変数化
matA = Range(Cells(3, 6), Cells(11, 10))
'探索する行列数を取得
gyou = Cells(4, 2).Value
retsu = Cells(4, 3).Value
'表の変数からデータを取得
dataA = matA(gyou, retsu)
'取得したデータをエクセルに記載
Cells(4, 4) = dataA
End Sub
要所ごとにコメントアウトで説明文を追加していますので作業内容を確認してみてください。
きちんと上で説明した形になっているはずです。
最後に、取得する行列数をいろいろと変更しながらこのVBAコードを実行してみましょう。
以下がこのコードを実際に動かしたときの実行結果です。
◆まずは(1,1)の場合
⇒きちんと表の左上の数値である6が取り出されていますね。
◆次は(5,1)の場合
⇒5行目、1列目の数値である4が取り出されています。
◆最後は(9,5)の場合
⇒この表は9行、5列の表なので右下の数値である10が取得されていますね。
VBAを使ってすこしマニアックなことを始めようとした場合、このように一度表を変数化しておくことで、データ参照作業が非常に楽になることがあります。
ぜひ使い方を覚えておきましょう。
終わりに
というわけで今回は
◆エクセルシート上の表をまるごと変数化する方法
◆その変数の中から欲しいデータを取り出す方法
についてご紹介しました。
知っておくだけで、コードの記述量を大幅削減できることもありますので、ぜひマスターしておきましょう。
このように私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
・日々の残業時間を減らしたい。
・業務をもっと効率的にこなしたい。
・もっと勉強する時間を作りたい。
こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。
この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント