大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、テーブルを配列に格納するには、「.ListObjects(テーブル名).DataBodyRange」や「Range(テーブル名)」を使うとできます。「Find」でテーブルのデータ行数を取得すると、配列をテーブルの最終行に入力することができます。テーブル操作をマスターしていきましょう。

はじめに

この記事では、テーブルを配列に格納する方法について、ご紹介します。

テーブルのデータ範囲を配列に格納するには、「.ListObjects(テーブル名).DataBodyRange」か「Range(テーブル名)」を変数に入力するとできます。

データ行数を「Find」を使って取得すると、配列をテーブルの最終行に入力することができます。

VBAでのテーブル操作をマスターしていきましょう。

では、テーブルを配列に格納する方法について、解説していきます。

この記事を読むメリット

  • テーブルを配列に格納する方法、配列をテーブルに入力する方法がわかります

目次から見たい項目へ移動すると便利ですよ。

目次

テーブルを配列に格納する

テーブルを配列に格納してみます。

次の2つの方法でやってみます。

  • ListObjectsを使う
  • 構造化参照を使う

では、やってみます。

ListObjectsを使う

ListObjectsを使って、テーブルの値を配列に格納してみます。

Sub TEST1()
    
    Dim A
    'テーブルの値を配列に入力
    A = ActiveSheet.ListObjects("テーブル1").DataBodyRange
    
End Sub

テーブルの値を配列に入力してみます。

テーブルの値を配列に入力したい

テーブルの値を配列に入力してみます

実行すると、テーブルの値を配列に入力できます。

テーブルの値を配列に入力できた

テーブルの値を配列に入力できました

テーブルの値を配列に入力できました。

構造化参照を使う

次は、構造化参照を使って、テーブルの値を配列に入力してみます。

構造化参照の方がVBAコードがシンプルになります。

Sub TEST2()
    
    Dim A
    'テーブルの値を配列に入力
    A = Range("テーブル1")
    
End Sub

構造化参照を使って、テーブルの値を配列に入力してみます。

テーブルの値を配列に入力したい

構造化参照を使って、テーブルの値を配列に入力してみます

実行すると、構造化参照を使って、テーブルの値を配列に入力できます。

テーブルの値を配列に入力できた

構造化参照を使って、テーブルの値を配列に入力できました

構造化参照を使って、テーブルの値を配列に入力できました。

セルに入力するときは「Resize」を使う

配列をセルに入力するときは「Resize」を使うと便利です。

配列をセルに入力

配列をセルに入力してみます。

Sub TEST3()
    
    Dim A
    'テーブルの値を配列に入力
    A = Range("テーブル1")
    
    'セルに入力
    Range("F3").Resize(UBound(A, 1), UBound(A, 2)) = A
    
End Sub

「.Resize」でセル範囲を設定することができます。

「Ubound」で、配列の大きさを取得することができます。

では、配列をセルに入力してみます。

配列をセルに入力したい

配列をセルに入力してみます

実行すると、配列の値をセルに入力できます。

配列をセルに入力できた

「Resize」を使って、配列の値をセルに入力できました

配列の値をセルに入力できました。

テーブルに入力する

次は、配列をテーブルに入力してみます。

「ListObjects」を使う場合のVBAコードです。

Sub TEST4()
    
    Dim A
    'テーブルの値を配列に入力
    A = Range("テーブル1")
    
    'テーブルに入力
    ActiveSheet.ListObjects("テーブル2").Range(2, 1).Resize(UBound(A, 1), UBound(A, 2)) = A
    
End Sub

「構造化参照」を使う場合のVBAコードです。

Sub TEST5()
    
    Dim A
    'テーブルの値を配列に入力
    A = Range("テーブル1")
    
    'テーブルに入力
    Range("テーブル2").Resize(UBound(A, 1), UBound(A, 2)) = A
    
End Sub

では、配列の値を、テーブルに入力してみます。

配列をテーブルに入力したい

配列の値を、テーブルに入力してみます

実行すると、配列の値を、テーブルに入力できます。

配列をテーブルに入力できた

配列の値を、テーブルに入力できました

配列の値を、テーブルに入力できました。

テーブルの最終行に入力する

次は、配列をテーブルの最終行に入力してみます。

ポイントは、「Find」を使って、データ行数を取得する点になります。

「ListObjects」を使う場合です。

Sub TEST6()
    
    Dim A
    'テーブルの値を配列に入力
    A = Range("テーブル1")
    
    Dim B
    With ActiveSheet.ListObjects("テーブル2").Range
        'データ行数を取得
        B = .Find("*", , , , 1, 2).Row - .Row + 1
        '最終行に入力
        .Cells(B + 1, 1).Resize(UBound(A, 1), UBound(A, 2)) = A
    End With
    
End Sub

「構造化参照」を使う場合です。

Sub TEST7()
    
    Dim A
    'テーブルの値を配列に入力
    A = Range("テーブル1")
    
    Dim B
    With Range("テーブル2[#ALL]")
        'データ行数を取得
        B = .Find("*", , , , 1, 2).Row - .Row + 1
        '最終行に入力
        .Cells(B + 1, 1).Resize(UBound(A, 1), UBound(A, 2)) = A
    End With
        
End Sub

「Find」を使って、データ行数を取得する方法について、詳細はこちらでまとめています。

では、配列を、テーブルの最終行に入力してみます。

テーブルの最終行に入力

テーブルの最終行に、配列を入力します。

配列を、テーブルの最終行に入力してみます

実行すると、配列を、テーブルの最終行に入力できます。

配列を、テーブルの最終行に入力できました

配列を、テーブルの最終行に入力できました。

データ最終行に入力

テーブルに空白行がある場合は、データ最終行に配列を入力できます。

配列を、テーブルのデータ最終行に入力してみます

実行してみます。

配列を、テーブルのデータ最終行に入力できました

配列を、テーブルのデータ最終行に入力できました。

空テーブルに入力

空テーブルの場合でも、配列を入力することができます。

配列を、空テーブルに入力してみます

実行してみます。

配列を、空テーブルに入力できました

配列を、空テーブルに入力できました。

最終行に配列を入力したい場合は、「Find」を使って、データ行数を取得すると便利です。

おわりに

この記事では、テーブルを配列に格納する方法について、ご紹介しました。

テーブルのデータ範囲を配列に格納するには、「.ListObjects(テーブル名).DataBodyRange」か「Range(テーブル名)」を変数に入力するとできます。

データ行数を「Find」を使って取得すると、配列をテーブルの最終行に入力することができます。

VBAでのテーブル操作をマスターしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す