Porównaj ceny domen i usług IT, sprzedawców z całego świata

ReDim utrzymuje „indeks dolny poza zakresem”


Próbuję przenieść dane z 2 podwójnych tablic do 2 różnych podwójnych tablic. Nie jestem pewien, jaki będzie rozmiar, ponieważ pobieram losową próbkę z pierwszych tablic i umieszczam ją w drugiej tablicy.
Kiedy dodaję wiersz ReDim Preserve, otrzymuję indeks spoza zakresu błędu.
Function CreateTrainingSet(TrainingPercent As Double, Inputs() As Double, Outputs() As Double)
' Create Randomized Training set data
Dim TrainingInputs() As Double, TrainingOutputs() As Double
Dim i As Integer, j As Integer, count As Integer
'ReDim TrainingInputs(UBound(Inputs, 1), UBound(Inputs, 2))
'ReDim TrainingOutputs(UBound(Outputs, 1), UBound(Outputs, 2))
count = 0 ' Move TraningPercent % of data from Inputs and Outputs to TrainingInputs and TrainingOutputs
For i = LBound(Inputs, 1) To UBound(Inputs, 1)
Dim ran As Double
ran = Rnd()
If ran <= TrainingPercent Then
count = count + 1
For j = LBound(Inputs, 2) To UBound(Inputs, 2)
ReDim Preserve TrainingInputs(1 To count, 1 To UBound(Inputs, 2))
TrainingInputs(count, j) = Inputs(i, j)
Next j
For j = LBound(Outputs, 2) To UBound(Outputs, 2)
ReDim Preserve TrainingOutputs(1 To count, 1 To UBound(Outputs, 2))
TrainingOutputs(count, j) = Outputs(i, j)
Next j
End If
Next i For i = LBound(TrainingInputs, 1) To UBound(TrainingInputs, 1)
For j = LBound(TrainingInputs, 2) To UBound(TrainingInputs, 2)
Cells(i, j + 10).Value = TrainingInputs(i, j)
Next j
Next i
End Function

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Podsumowując powyższe uwagi w odpowiedzi:
  • Możesz to zrobić tylko z operatorem redim w wielowymiarowej tablicy ostatniego rozmiaru

Dlatego, aby zmienić rozmiar wielowymiarowej tablicy, istnieje kilka prostych opcji:
  • Jeśli trzeba zmienić rozmiar tylko jednego wymiaru, odwróć pętle i logikę, tak aby wymiar, który ma zostać zmieniony, stał się ostatnim wymiarem
  • Jeśli chcesz zmienić rozmiar obu wymiarów, użyj tablicy tablic lub zestawu tablic i napraw pętle zgodnie z potrzebami

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się