Ich brauche eine Funktion, um 2 Dimensionen aus einem Multidimensions-Array zu extrahieren. Welche 2 Dimensionen sind abhängig von der Wahl des Benutzers. und der Index in den verworfenen Dimensionen, in denen diese 2 Dimensionen ausgewählt sind, hängt auch vom Benutzer ab.extrahieren benutzerdefinierte Dimensionen aus Multidimension Array
Zum Beispiel habe ich ein 3-dimensionales Array v (1 bis 100, 1 bis 20, 1 bis 10). Ich möchte Dimension extrat 1 und 3 Dimension von v., und der Index in Dimension der discared 2 11.
sub extract
dim i1 as integer 'for loop through dimension 1
dim i2 as integer 'for loop through dimension 3
dim d1 as integer 'index in dimension 2
d1=11
redim vn(1 to ubound(v,1),1 to ubound (v,3))
for i1 = 1 to ubound(v,1)
for i2= 1 to ubound(v,3)
vn(i1,i2)=v(i1,d1,i2)
next i2
next i1
end sub
I Abmessungen von Array extrahieren, wenn ich weiß, welche Dimensionen ich brauche und der Index (d1) in den verworfenen Dimensionen. Allerdings muss ich dies den Nutzern überlassen, um zu entscheiden. was ich will, ist eine Funktion wie folgt aus:
function extract(i1 as integer, i2 as intger, paramarray ov()) as variant
= Extrakt (the_first_dimension_to_keep, the_second_dimension_to_keep, [index_in_the_first_discard_dimension, index_in_the_second_discard_dimension, ...])
Unter Berücksichtigung der Tatsache, dass die ursprüngliche Anordnung mehr als 3 Dimensionen haben kann , also listet alle Möglichkeiten im Code auf, ist nicht möglich.
Irgendeine Lösung?
Sie können dies tun [durch den Datenbereich Zugriff durch Zeiger ist] (http://stackoverflow.com/a/39146283/4088852) und manuell die Offsets zu berechnen. – Comintern
Komintern, ich sehe deine Antwort auf diesen Beitrag. Der Code für den Zugriff auf den Speicher übersteigt meine derzeitigen VBA-Kenntnisse. Es wird eine Weile dauern, bevor ich das Problem lösen kann. –