Korzystając z Excela i VBA, potrzebowałem porady, jak najlepiej filtrować dane w tablicy (w ten sam sposób, w jaki można użyć tabeli przestawnej), ściśle używając VBA. Tworzę UserForm, który będzie podejmował decyzje dotyczące danych w oparciu o aktualnie istniejące dane. Mogę sobie wyobrazić, jak to zrobić wystarczająco dobrze, ale nie jestem zorientowany w programowaniu VBA.Filtrowanie tablic 2D w programie Excel VBA
Oto przykład
A B C
bob 12 Small
sam 16 Large
sally 1346 Large
sam 13 Small
sally 65 Medium
bob 1 Medium
Aby pobrać dane w tablicy, mogę używać
Dim my_array As Variant
my_array = Range("A1").CurrentRegion
Teraz jestem zaznajomiony z pętli przez tablice 2D, ale zastanawiałem się: co najefektywniejszy sposób filtrowania danych z tablicy 2D (bez powtarzania pętli przez macierz)?
Na przykład, w jaki sposób uzyskać byłoby powiedzieć dostać tego rodzaju danych:
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
sugestie? Mógłbym to załatwić przy pomocy kilku niestandardowych funkcji i pętli, ale myślałem, że musi być lepszy sposób. Dzięki.
uwaga, że 4. Przykład nie jest filtrem ale operacja na macierzy, która prawdopodobnie doprowadziłaby do innej odpowiedzi. – assylias
Nie jestem pewien, czy jest to możliwe bez funkcji pętli/niestandardowych w VBA. Mówisz, że masz doświadczenie w innych językach, czy uważałeś, że używasz VSTO/.NET, a następnie używasz LINQ? –
Dla tego typu rzeczy w VBA użyłbym rozłączonego zestawu rekordów ADO. Daje ci sortowanie i filtrowanie. –