Excelのdataというシートに膨大な行数(今はテスト用に100行ほど)、K列までのデータがあります。このデータから様々な条件で抽出をしたいと考えていまして、テスト用にL列にいくつか「〇」を打っています。
既存のデータを配列化し、その中で条件に合うもの(今回は12列目に〇のあるもの)を新しい2次元配列に入れなおす記述をしました。
VBA
1Sub 配列化して項目で抽出テスト() 2 Dim i As Long, n As Long, m As Long 3 Dim x As String 4 Dim buf() As Variant 5 Dim cnt As Long: cnt = 1 6 7 buf() = Sheets("data").Range("a2:l100").Value 8 9 10 '新配列の縦要素数のために個数mを測定 11 For n = 1 To UBound(buf(), 1) 12 If buf(n, 12) = "〇" Then 13 m = m + 1 14 End If 15 Next n 16 17 '条件にあったら新配列に入れていく 18 ReDim buf2(1 To m, 1 To 12) 19 For n = 1 To UBound(buf(), 1) 20 If buf(n, 12) = "〇" Then 21 For i = 1 To 12 22 buf2(cnt, i) = buf(n, i) 23 Next i 24 cnt = cnt + 1 25 End If 26 Next n 27 28 MsgBox buf2(4, 8) 29 30End Sub
うまく動いてMsgBox buf2(4, 8)もちゃんと表示されるのですが、
'新配列の縦要素数のために個数を測定
という新配列の1次元要素数を求める動きが不器用な気がします。buf2の要素数を可変にして、条件に見合う旧配列データを次々に追加する方法はないものでしょうか。
ご教示願います。
回答2件
あなたの回答
tips
プレビュー