Help us understand the problem. What is going on with this article?

シート上のデータを配列に格納する際、一意になるように格納する方法

More than 1 year has passed since last update.

シート上のデータを配列に格納する際、『すでに格納済みのデータは除外したい』ということがあるかと思います。
そんなときに便利なDictionaryというオブジェクトを紹介します。

    'セルに記載されている値を一意に配列に格納する

    Dim dic_test   As Object
    Dim arg_test() As String
    Dim cnt_test   As Long
    Dim i          As Long

    'Dictionaryオブジェクト生成
    Set dic_test = CreateObject("Scripting.Dictionary")

    'A1セルからA100セルまで処理
    i = 0
    Do
        i = i + 1
        If i > 100 Then
            Exit Do
        End If

        'キー値セット
        key = Cells(i, 1).Value

        'キー値がDictionary内に存在しないときのみ、配列に登録
        If dic_test.exists(CStr(key)) = True Then
        Else
            'キー値をディクショナリに追加
            dic_test.Add CStr(key), ""

            cnt_test = cnt_test + 1
            ReDim Preserve arg_test(1 To cnt_test)
            arg_test(cnt_test) = key

        End If

    Loop

    'この時点のarg_testは、A1セルからA100セルの値を、一意になるように登録されている

ポイントは、キー値の判定の際、変数の型によって判定できないことを防ぐため、CStrを使用して必ず文字列型のキー値として判定しているところです。

Dictionaryオブジェクトの検索はとっても速いので、配列をループして存在確認するより速いです。(要素数が増えれば増えるほど実感できます。)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした