VBA初心者です。
エクセル2019で重複項目を避けて値を取得する方法を知りたいです。
エクセルシートのセルC4からC10にそれそれ数字が記入されています。
それぞれ
C4 = 1
C5 = 3
C6 = 3
C7 = 5
C8 = 1
C9 = 7
C10 = 9
で、C4の値から順番に値を取得し、重複しているものは値を取得せず、次の行に進みます。
この例だと「13579」と表示されないとおかしいということです。
僕のイメージとしては、最初可変長配列を2つ用意し(ここでは配列1、配列2とする)Ⅽ4の値を取得し配列1と2の最初の要素に入れる。
C5の値を取得する時に、配列1の全要素と比較し同じ値でなければ、取得するという感じで作っていたのですが、うまくいきません。
別シートに転記してからとかではなく、マクロを実行させれば1回で値を取得できるようにしたいです。
すいませんがよろしくおねがいします。
VBA
1 2Sub 試し() 3Dim a() As Long ’aという可変長配列変数宣言 4Dim b() As Long ’bという可変長配列変数宣言 5Dim ws As Worksheet 6 7Set ws = ThisWorkbook.Worksheets(1) 8Dim n As Long 9Dim k As Long 10Dim j As Long 11n = 0 12 13Dim r As Long 14For r = 4 To 10 15 16 17 If n = 0 Then 18 19 20 'aの配列はc列のすべてを取得 21 ReDim Preserve a(n) 22 a(n) = Cells(r, "C").Value 23 k = 0 'bの配列はa列と重複していないものを取得 24 ReDim Preserve b(k) 25 b(k) = a(n) 26 27 GoTo continue 28 29 ElseIf n = 1 Then 30 31 ReDim Preserve a(n) 32 a(n) = ws.Cells(r, "C").Value 33 34 35 For j = 1 To n 36 If Not a(j) = b(k) Then 37 k = k + 1 38 ReDim Preserve b(k) 39 b(k) = a(n) 40 41 Else 42 43 Exit For 44 45 End If 46 47 Next 48 49 ElseIf n >= 2 Then 50 51 ReDim Preserve a(n) 52 a(n) = ws.Cells(r, "C").Value 53 54 55 For j = 0 To n 56 If Not a(j) = b(k) Then 57 k = k + 1 58 ReDim Preserve b(k) 59 b(k) = a(n) 60 61 Else 62 63 Exit For 64 65 End If 66 67 Next 68 69 End If 70continue: 71 72Debug.Print a(n); b(k) 73 74n = n + 1 75 76Next 77 78 79End Sub