0
votes

Comment trier un tableau dans Excel-VBA?

Je veux trier un éventail de valeurs déclarées comme double en ordre décroissant.

Les commandes array.sort code> et array.Reverse code> ne fonctionnent pas.

Veuillez noter que je veux trier le tableau avec une fonction intégrée VBA forte> et non par un algorithme de tri écrit par moi-même. P>

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


2 commentaires

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é.


3 Réponses :


0
votes

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


0 commentaires

0
votes

Si vous avez une version d'Excel qui comprenait les nouvelles matrices dynamiques, vous pouvez utiliser la nouvelle fonction fonction xxx

qui dit, vous pourriez aussi faire cela directement sur la feuille. En feuillet ausgabe cellule b2 mettre xxx


0 commentaires

0
votes

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


1 commentaires

@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.