大体でIT

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

大体でIT

Excel VBAで、配列を使って値の抽出を高速化するには、2次元配列を使うと簡単です。ポイントは、シートのデータを配列に格納して配列どうしでやりとりをする、ということになります。最後に、配列の値を一括でセルに入力することで、処理を高速化することができます。配列の使い方についてマスターしていきましょう。

はじめに

この記事では、配列を使って値の抽出を高速化する方法について、ご紹介します。

2次元配列を使えば、Cellsを使う方法と同じようなイメージでVBAコードを記載することができます。

ポイントとしては、最初にデータを配列に格納しておくことになります。

配列どうしでやり取りすると、VBAコードを記載しやすくなります。

最後に配列を一括でシートに入力すれば、処理を高速化することができます。

配列をどんどん使って、高速化していきましょう。

では、配列を使って値の抽出を高速化する方法について、解説していきます。

この記事を読むメリット

  • 配列を使って、値の抽出を高速化する方法がわかります。

本記事の内容を動画にて解説しております。

本記事の内容を動画にて解説しております。

VBAコードの作成手順について、動画で確認できます。

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

目次

配列を使って値の抽出を高速化したい

配列を使って値の抽出を高速化してみます。

やりたい内容

やりたい内容は、配列を使って値の抽出を高速化したい、ということになります。

配列を使って値の抽出を高速化したい

配列を使って値の抽出を高速化したいです

では、VBAコードを作成していきます。

VBAコード作成

最初に、Cellsを使って1つずつ抽出するVBAコードを作成します。

そして、Cellsの方法を、配列に置き換えるという流れで、VBAコードを作成していきます。

Cellsを使って1つずつ抽出

Cellsを使って1つずつ抽出するVBAコードです。

Sub TEST1()
  
  t = Timer
  
  j = 1
  For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
    If InStr(Cells(i, "A"), "A") > 0 Then
      j = j + 1
      Cells(j, "D") = Cells(i, "A")
      Cells(j, "E") = Cells(i, "B")
    End If
  Next
  
  Debug.Print Timer - t & " 秒"
  
End Sub

実行すると、「A」を含む商品を抽出できます。

「A」を含む商品を抽出できた

「A」を含む商品を抽出できます

かかった時間をみてみます。

ちょっと遅い

1つずつ値を入力すると遅いです

1つずつ値を入力すると少し遅い結果となります。

Cellsを配列に置き換える

Cellsを配列に置き換えてVBAコードを作成していきます。

手順としては、

  • 元データを配列「A」に格納
  • 抽出結果を格納する配列「B」を作成
  • 配列「A」からの抽出結果を配列「B」に格納
  • 配列「B」を一括でセルに入力

という感じです。

Sub TEST2()
  
  t = Timer
  
  Dim A
  A = Range("A2:B" & Cells(Rows.Count, "B").End(xlUp).Row)
  
  Dim B
  ReDim B(1 To 100000, 1 To 2)
  
  j = 0
  For i = 1 To UBound(A, 1)
    If InStr(A(i, 1), "A") > 0 Then
      j = j + 1
      B(j, 1) = A(i, 1)
      B(j, 2) = A(i, 2)
    End If
  Next
  
  Range("D2").Resize(j, 2) = B
  
  Debug.Print Timer - t & " 秒"
  
End Sub

ポイントとして、シートのデータを配列に格納して、すべて配列でやり取りすることで、VBAコードをシンプルに記載することができます。

「A」を含む商品を抽出できます。

配列を使って抽出できる

「A」を含む商品を抽出できます

では、かかった時間をみてみます。

配列を使うと高速化できる

配列を使って一括で入力すると高速化できます

配列を使って一括で入力すると高速化できます。

おわりに

この記事では、配列を使って値の抽出を高速化する方法について、ご紹介しました。

2次元配列を使えば、Cellsを使う方法と同じようなイメージでVBAコードを記載することができます。

ポイントとしては、最初にデータを配列に格納しておくことになります。

配列どうしでやり取りすると、VBAコードを記載しやすくなります。

最後に配列を一括でシートに入力すれば、処理を高速化することができます。

配列をどんどん使って、高速化していきましょう。

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

関連する記事から探す

カテゴリから探す

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

サイト内を検索する

↓キーワードを入力する

アーカイブから探す