Zwróć każdy n-ty element za pomocą VBA w programie Microsoft Excel

Anonim

W przypadku, gdy zastanawiasz się, jak ktoś może znaleźć każdy n-ty element w kolumnie. W tym artykule dowiemy się, jak zwrócić każdą n-tą pozycję z listy. Użyjemy kodu VBA, aby znaleźć wynik.

Pytanie: Chcę, aby kod makra wyodrębnił każdą n-tą wartość z kolumny. Próbuję przeciągnąć wartości z jednego arkusza/kolumny do innego arkusza/kolumny. Próbowałem użyć wielu funkcji, takich jak PRZESUNIĘCIE, ale nie byłem w stanie wymyślić formuły, która może dać wynik.

Weźmy przykład 100 wartości w kolumnie A i chcemy się dowiedzieć co 10NS wartość w kolumnie B

Wartości próbek począwszy od komórki A1 równej 1 do komórki A100 równej 100; poniżej znajduje się migawka danych w kolumnie A:

Aby uzyskać wynik, musimy wykonać poniższe kroki, aby uruchomić edytor VB

  • Kliknij kartę Deweloper
  • Z grupy Kod wybierz Visual Basic

  • Skopiuj poniższy kod w standardowym module
 Funkcja INDEXN(InputRange As Range, N As Integer) As Variant ' zwraca każdy N-ty element z InputRange' --- Komentarz ' wybierz żądany zakres docelowy dla funkcji i' --- Komentarz ' wprowadź jako funkcję tablicową z klawiszem Ctrl +Shift+Enter.' --- Komentarz Dim ItemList() As Variant, c As Range, i As Long, iCount As Long i = 0 iCount = 0 ReDim ItemList(1 To InputRange.Cells.Count \ N) For Each c In InputRange i = i + 1 Jeśli i Mod N = 0 Wtedy iCount = iCount + 1 W przypadku błędu Wznów Następny ItemList(iCount) = c.Wartość w przypadku błędu GoTo 0 End If Next c INDEXN = ItemList If InputRange.Rows.Count >= InputRange.Columns.Count Następnie INDEXN = Application.WorksheetFunction.Transpose(INDEXN) End If Erase ItemList End Function 

  • Aby uzyskać każdą n-tą pozycję z zakresu B1:B10, formuła to
  • {=INDEXN($A$1:$A$100, 10)}

Uwaga: jest to formuła tablicowa; stąd Ctrl + Shift + End muszą być wciśnięte jednocześnie

  • Aby zdobyć co 7NS wartość z zakresu A1:A100; zmienimy ostatni argument z 10 na 7, a formuła będzie
  • {=INDEKSN($A$1:$A$100, 7)}

W ten sposób możemy zwrócić każdy n-ty element z jednego arkusza do arkusza wzorcowego.

  • Formuła w innym arkuszu będzie zawierać odniesienie do arkusza
  • {=INDEXN(Arkusz1!$A$1:$A$100, 10)}

Wniosek: Za pomocą powyższej funkcji zdefiniowanej przez użytkownika możemy mieć elastyczność, aby znaleźć każdy n-ty element z jednego arkusza do drugiego.

Jeśli podobały Ci się nasze blogi, podziel się nimi ze znajomymi na Facebooku. A także możesz śledzić nas na Twitterze i Facebooku. Chcielibyśmy usłyszeć od Ciebie, daj nam znać, jak możemy ulepszyć, uzupełnić lub unowocześnić naszą pracę i uczynić ją lepszą dla Ciebie. Napisz do nas na stronie e-mail