Mam nadzieję, że jeszcze raz tu zajrzysz.
Dam odpowiedź, gdzie nie jest potrzebny VBA i postaram się wyjaśnić wszystko.
Korzystając z udostępnionego zdjęcia, utworzyłem własny arkusz:
zaczynamy od tego, który element jest najwyższy. Po prostu to zrobi.
Nie ma tu wiele do wyjaśnienia.

F2=A2
Co G2przychodzi =IF(LEN(F2),INDEX(B:B,MATCH(F2,A:A,0)),""). Wiedząc, że druga kolumna będzie zawsze taka sama jak w pierwszej kolumnie, po prostu wyszukuje dokładne dopasowanie F2w zakresie A:A( MATCH) i wypisuje wszystko, co jest w B:Btym samym wierszu. (Zatrzymuje się przy pierwszym znalezionym elemencie, chociaż nie ma to znaczenia, ponieważ jest tak samo). LENzapobiega tylko wyświetlaniu go, #NAjeśli łańcuch wyszukiwania jest pusty, a także pomija obliczenia całej tablicy.
Co H2przychodzi co sugested =IF(LEN(F2),SUMIF(A:A,F2,C:C),""). Po prostu sumuje wszystkie wartości w kolumnie, Cktóre mają podaną wyszukiwarkę w kolumnie A. LEN-Part jest taki sam jak ten na G2natomiast nie pokazuje się błąd, to pop 0. Jednak nadal otrzymasz zero, jeśli istnieje termin serch, a suma jest 0.
Chociaż możesz po prostu automatycznie wypełniać G2i H2zmniejszać tyle, ile potrzebujesz, nie zadziała F2. Ale możesz to zrobić za pomocą następującej formuły w F3:
=IF(LEN(F2),IFERROR(INDEX(A:A,MATCH(1,(COUNTIF(F$2:F2,A$2:A$1000)=0)*(A$2:A$1000<>""),0)+1),""),"")
Jest to formuła tablicowa, którą należy potwierdzić za pomocą Ctrl+ Shift+ Enter.
Zaczyna się od COUNTIFtego, że po prostu zwraca tablicę binarną, podczas gdy każdy element otrzymuje a, 1jeśli pasuje do dowolnego ciągu wyszukiwania, wszystkie inne otrzymują 0(wyszukiwanie wszystkich ciągów powyżej siebie F$2:F2). Ponieważ nie chcemy dostać już używanego przedmiotu, obracamy wszystko 0 TRUE( =0). Nie chcemy też emptyprzedmiotu, więc też go sprawdzamy ( A$2:A$1000<>""). Mnożenie 2 tablic boolowskich jest tym samym, co posiadanie ANDdla każdej pary elementów, podczas gdy użycie wartości rzeczywistej ANDsprawdzi, czy wszystkie elementy w tablicach boura mają być TRUE. Jednak ponowne pomnożenie daje nam tablicę binarną zawierającą 1w każdym elemencie, który nie jest pusty i nie jest używany. MATCHteraz sprawdza pierwszy1i zwraca swój numer pozycji (wiersz). Ale począwszy od drugiego rzędu daje nam przesunięcie, które jest zerowane +1. Posiadanie pozycji INDEXdaje nam ciąg, którego potrzebujemy. IFERRORdotyczy tylko pierwszego emptyrozwiązania, które powróci #NA. I po LENprostu pomija obliczenia dla wszystkich komórek po pierwszym pustym.
Korzystanie z kreatora formuł, aby zobaczyć, co tak naprawdę oblicza, pomaga również zrozumieć. Ale zawsze dwukrotnie sprawdź wszystkie $lub automatyczne wypełnianie może się nie powieść.
Jeśli nadal musisz o coś zapytać, po prostu napisz komentarz. :)