##質問
VBAにてCSVデータから特定の条件で抽出作業を施し、
それらのデータでn行×4列のリストを作成しました。
![
上記のリストにおいて,
各項目別の最大値(ex.項目名Aでの高さの最大値)となるリスト番号を取得するには
どのようにコーディングすべきでしょうか?
if文で条件分岐を行うなど色々トライしてみたのですが、
うまく動かず苦戦しております。コードは以下の通りです。
方針は
0. myArray()にてn行×4列の配列を作成
0. まずは項目名がAの場合のみのn行×4列の配列を作成
0. 2.にて生成した配列の中から「長さ」・「深さ」のデータだけのn行×1列の配列作成
0. 3.の中で最大となる行番号とデータを取得する
を考えておりました。
- myArray(n)の中身は以下の通りです
myArray(n)
L myArray(n,1)
L myArray(n,2)
L myArray(n,3)
L myArray(n,4)
ex)
myArray(1)
L myArray(1,1)=A
L myArray(1,2)=n1
L myArray(1,3)=66
L myArray(1,4)=91
といった具合です。
- コードは以下の通りです。
VBA
1'Rangeの定義 2Dim myRange As Range 3Set myRange = Range("A1:An","D1:Dn") 4 5'配列myArrayを生成 6Dim myArray As Variant 7myArray = myRange 8 9'配列を定義 10Dim Array_A_len_pre() As Variant 11Dim Array_A_len() As Variant 12 13'ループ変数 14Dim i As Long 15 16'if文で格納する 17For i = 1 To n 18 If myArray(i, 1) = "A" Then 19 '長さののみの配列を生成 20 ReDim Preserve Array_A_len_pre(i) 21 Array_A_len_pre(i) = myArray(i, 4) 22 23 'ループ変数 24 Dim j As Long 25 26 'Array_A_len_pre()のempty値を除去し配列を再生成 27 For j = 0 To n 28 If Array_A_len_pre(j) <> "" Then 29 ReDim Preserve Array_A_len(j) 30 Array_A_len(j) = Array_A_len_pre(i) 31 End If 32 Next 33 ========================以下質問内容です=================== 34 35 36 End If 37Next
ご教示いただけますと幸いです。
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー