dizilerindeki döngüleri aşağımda sahip olduğum bir dizi içinde dolaşmaya çalışıyorum. Önce, dizi 2, sütun 2'den başlayan (yaklaşık 1000 satır x 100 sütun) elektronik tablo verilerinden dizimi oluşturuyorum. Dizimi tanımladıktan sonra, her bir sütunu ayrı bir veri seti olarak ele almak, maksimum değerin maksimum değerini ve satır değerini bulmak, ardından her birini ayrı dizilerde saklamak istiyorum. Bu kodu çalıştırdığımda, 0 değerlik bir sütun döndürür. Herhangi bir hata vermez, ancak açıkçası çalışmıyor, herhangi bir öneri var mı? Varsayılan olarakVBA
Public Maxindex() As Long
Public MaxVal() As Double
Sub ArrayOptimized()
'Uses arrays to call data from the sheet once then process it
Dim dataset() As Variant
Dim rows As Long
Dim columns As Integer
ReDim Maxindex(100)
ReDim MaxVal(100)
MaxVal(1) = 1
rows = ShData.Cells(ShData.rows.Count, 1).End(xlUp).Row
columns = ShData.Cells(1, ShData.columns.Count).End(xlToLeft).Column
ReDim dataset(2 To rows, 2 To columns)
dataset = ShData.Range(ShData.Cells(2, 2), ShData.Cells(rows, columns))
'Check to sheet
Sheet1.Range(Sheet1.Cells(1, 1), Sheet1.Cells(rows, columns)) = dataset
For i = LBound(dataset, 2) To UBound(dataset, 2)
For j = LBound(dataset, 1) To UBound(dataset, 1)
If dataset(j, i) > MaxVal(i) Then
MaxVal(i) = dataset(j, i)
'Returns row index number in array for max val
Maxindex(i) = j
End If
Next j
Next i
Sheet2.Range(Sheet2.Cells(1, 1), Sheet2.Cells(columns, 1)) = Maxindex
End Sub
ama Tim beni alt:
Bir sütuna dizinizi "çevirmek" için devrik kullanabilirsiniz. Sıfır tabanlı dizi en yüksek değerin ilk öğesini, yalnızca 1 numaralı endekste değerler sağlamaya başladığınızda alıyorsunuz; Veri kümesinin lbound'u. Dahası, ReDim veri kümesi (2 Satırlara, 2 Sütunlara) 'hiçbir şey yapmaz çünkü bir sonraki satırda veri kümesine değerler (örtük varsayılan olarak) atarsınız. – Jeeped
Yep. Bana da onu yendi - ReDim Maxindex (1 To sütun) 've' ReDim MaxVal (1 To sütun) 'yerine sabit bir değer de düşünürdüm. – Comintern
@Jeeped Yani değerleri atamadan önce dizi boyutunu ayırmam gerekmiyor mu? – Duranchula