Filtrage 2D Tableaux dans Excel VBA

À l'aide d'Excel et de VBA, je voulais quelques conseils sur la meilleure façon de filtrer les données dans un tableau (de la même manière, on peut utiliser un tableau croisé dynamique) strictement à l'aide de VBA. Je suis entrain de créer un UserForm qui va rendre certaines données des décisions fondées sur des données existantes. Je peux visualiser comment le faire assez bien, mais ne suis pas du tout versé dans la programmation VBA.

Voici un exemple

A       B       C
bob     12      Small
sam     16      Large
sally   1346    Large
sam     13      Small
sally   65      Medium
bob     1       Medium

Extraire les données dans un Tableau, j'ai pu utiliser

Dim my_array As Variant

my_array = Range("A1").CurrentRegion

Maintenant, je suis familier avec boucle à travers des tableaux 2D, mais je me demandais: ce que le moyen le plus efficace pour filtrer les données du tableau 2D (sans boucle par le choix du temps et encore)?

Par exemple, comment puis-je obtenir serait de dire obtenir ce genre de données:

data_for_sally As Variant 'rows with sally as name in ColA
data_for_sally_less_than_ten As Variant ' all rows with sally's name in ColA and colB < 10
data_for_all_mediums as Variant ' all rows where ColC is Medium

Suggestions? J'ai pu faire ce travail avec un tas de fonctions personnalisées et des boucles, mais je pensais qu'il devait y avoir une meilleure façon. Merci.

Notez que le 4e exemple n'est pas un filtre mais une opération sur le tableau, ce qui conduirait probablement à une réponse différente.
Pas sûr que c'est possible sans boucle / fonctions personnalisées en VBA. Vous dites que vous avez de l'expérience dans d'autres langues, avez-vous considéré comme un VSTO/.NET impementation puis utiliser LINQ?
Pour ce type de chose en VBA je voudrais utiliser un jeu d'enregistrements ADO déconnecté. Il vous donne de tri et de filtrage.
bon point, enlevé exemple; .@lori_m je pensais le long de la lignes de Python, en fait; .@Tim Williams, je vais regarder à cela, n'ont pas entendu parler avant.

OriginalL'auteur thornomad | 2012-05-04