見出し画像

一覧表から必要な数字を取得する方法(vba 二次元配列の使い方)

エクセルで事務を楽にするプログラマーmoimoiです。

皆さんはこの手作業自動化したいと思っても、目で見て処理しないと出来ないよなぁ〜と諦めたことはありませんか?

一覧表にある数値や値を目で見なくても自動で処理する方法を今回はご紹介します。それは配列(二次元配列)を使用することです。

そもそも二次元配列とは何なのか、配列の一種で、配列は一行に複数個の値を格納するイメージに対し、二次元配列は、複数行に複数個の値を格納するイメージになります。

例)下記イメージです。

配列(1,2,3)

二次元配列(1,2,3)
     (4,5,6)
     (7,8,9)

変数を一つ一つ作ったり、配列を一行ずつ作成するより、楽にデータを格納できます。
エクセルシート1枚分であれば二次元配列1個に格納することが可能です。
複数のシート分配列に格納したい場合は、三次元配列を使用することをおすすめします。

【二次元配列に格納する方法】

*二次元配列の書き方

配列名(行数,列数)

配列のエクセルのセルの指定の様に記載します。
配列もエクセルのセルと同じ様に配置されていると考えると格納する時、引き出す時わかりやすいと思います。

*最終行列まで配列に格納

'最終行
For i = 0 to Worksheets("シート名").Cells(Rows.Count"A").End(xlUp).Row
配列(i,1)=Cells(i,1)
Next i
’最終列
For i = 0 to Worksheets("シート名").Cells(1,Columns.Count).End(xlToLeft).EntireColumn
配列(1,i)=Cells(1,i)
Next i

*配列の最後まで繰り返す

For i = 1 To UBound(配列名, 次元数)
Next i

次元数には配列の次元数を入力します。
二次元配列の場合は2が入ります。

*二次元配列からテキストに出力

 '二次元配列のコードをテキストデータにしてデスクトップに保存
Set 変数名1 = CreateObject("WScript.Shell")
ファイル名 = 変数名1.SpecialFolders("Desktop") & "/ファイル名.txt"
Open ファイル名 For Output As #1
     For i = 1 To UBound(配列名)
        変数名2 = 配列名(i, 1) '1行ずつ作成
        For j = ○ To ○ 
            変数名2 = 変数名2 & "," & 配列名(i, j) '間にコンマを入れる
        Next
        Print #1, 変数名2 '1行ずつ記入
    Next
Close #1 '閉じる

*指定の行列を検索して変数に代入

For i = 1 To UBound(配列名, 次元数) 
If 配列名(1,i)=”○○” Then
'やりたい処理を書く 変数に格納や計算など
End If
Next i

二次元配列に入れたものは下記のとおり記載する事でエクセルに転機も可能です。

記載したい範囲=配列名

記載したい範囲にはしっかり行列の最初から最後まで入る範囲を記載してください。配列は(0,0)からあるので注意しましょう。

こちらの方法を使用すれば、人間が処理しているのと同じ様に表の縦と横の交わる必要な値を取得して計算に用いたり、料金表をから料金を抽出するのに使用したりする事が出来ます。

是非お試しください。

この記事が参加している募集

スキしてみて

よろしければ、サポートお願いします! 頂いたサポートは、noteの運営費や新たなコード作成の開発費に充てさせていただきます。