Je veux trier un éventail de valeurs déclarées comme double en ordre décroissant.
Les commandes Veuillez noter que je veux trier le tableau avec une fonction intégrée array.sort code> et
array.Reverse code> ne fonctionnent pas.
Sub sortiereMesswerte()
Dim werte(15) As Double
Dim i As Integer
Sheets("Eingabe").Select
'initliaze array
For i = 0 To 15
werte(i) = Cells(i + 2, 2)
Next i
'Sort Array
werte.Sort
werte.Reverse
Sheets("Ausgabe").Select
'print array
For i = 0 To 15
Cells(i + 2, 2) = werte(i)
Next i
End Sub
3 Réponses :
Selon le commentaire @storax ci-dessus, vous pouvez utiliser l'objet ArrayList, mais avec les limitations de la version .NET Framework, qui peut être un problème si vous partagez le classeur avec d'autres personnes. Ensuite, vous pouvez écrire le code comme ci-dessous:
Sub sortiereMesswerte() Dim werte As Object Dim i As Integer Set werte = CreateObject("System.Collections.ArrayList") Sheets("Eingabe").Select 'initliaze array For i = 0 To 15 werte.Add Cells(i + 2, 2).Value Next i 'Sort Array werte.Sort werte.Reverse Sheets("Ausgabe").Select 'print array For i = 0 To 15 Cells(i + 2, 2) = werte(i) Next i End Sub
Si vous avez une version d'Excel qui comprenait les nouvelles matrices dynamiques, vous pouvez utiliser la nouvelle fonction code> fonction code> qui dit, vous pourriez aussi faire cela directement sur la feuille. En feuillet ausgabe code> cellule
b2 code> mettre p>
La nouvelle fonction de tri semble fonctionner. J'ai essayé le code suivant:
arr1: L-I-K-G-B-G-Y-B-J-J sort: B-B-G-G-I-J-J-K-L-Y
@chrisneilsen merci d'avoir souligné cela. Cela fonctionne réellement si je définis par_col sur true plutôt que false! Faux est par défaut.
On dirait que vous essayez d'utiliser des méthodes vb.net qui n'existent pas dans VBA - MKAE, assurez-vous que vous lisez les documents corrects pour la langue que vous utilisez (ce n'est pas toujours évident lorsque vous voyez simplement des extraits, mais les Documents MS sont assez clair sur lequel on lit sur ...)
Selon ce Article Vous pouvez utiliser la liste de réseau VBA, mais vous devez avoir. NET Framework 3.5 installé.