Mam duży arkusz. Muszę ustawić wiele filtrów w tym arkuszu na nagłówki kolumn w pozycjach dynamicznych. Po ustawieniu filtrów muszę znaleźć konkretną kolumnę w arkuszu mającą nagłówek kolumny "Nov", a następnie uzyskać sumę wartości w tej kolumnie i zaimportować tę konkretną wartość sumy do innego arkusza. Napisałem kod aż do części, w której mogę ustawić filtry do wielu kolumn, ale trudno mi znaleźć nagłówek kolumny i dodać tę kolumnę. Poniżej znajduje się kod, który napisałem do tej pory.VBA - Znajdź kolumnę z określonym nagłówkiem i znajdź sumę wszystkich wierszy w tej kolumnie
Sub Button2_Click()
Dim colName As Long
Dim colName1 As Long
Dim colName2 As Long
Dim r As Long
SearchV = Range("A8:DD8").Find(What:="Nov", LookIn:=xlValues, LookAt:=xlWhole, _
MatchCase:=False, SearchFormat:=False).Column
lastrow = Cells(Rows.Count, SearchV).End(xlUp).Row
colName = Range("A8:DD8").Find(What:="Teams", LookIn:=xlValues, LookAt:=xlWhole, _
MatchCase:=False, SearchFormat:=False).Column
colName1 = Range("A8:DD8").Find(What:="Items", LookIn:=xlValues, LookAt:=xlWhole, _
MatchCase:=False, SearchFormat:=False).Column
colName2 = Range("A8:DD8").Find(What:="Domain", LookIn:=xlValues, LookAt:=xlWhole, _
MatchCase:=False, SearchFormat:=False).Column
ActiveSheet.Range("$A$8:$DD$9999").AutoFilter Field:=colName, Criteria1:="ST Test", Operator:=xlOr, Criteria2:=""
ActiveSheet.Range("$A$8:$DD$9999").AutoFilter Field:=colName1, Criteria1:="Variance", Operator:=xlOr, Criteria2:="(Blanks)"
ActiveSheet.Range("$A$8:$DD$9999").AutoFilter Field:=colName2, Criteria1:="9S", Operator:=xlOr, Criteria2:="(Blanks)"
Nagłówki kolumn zawsze zaczynają się od ósmego rzędu. Niektóre nieosiągalne informacje są obecne w wierszach powyżej. Tak więc chcę, aby kolumna "Nov" znajdowała się w rzędzie H. Suma powinna być obliczona od H9 do końca ostatniego wiersza. Użyłem tej formuły, gdy kolumna znajdowała się w kolumnie "H".
Cells(lastrow + 1, colName3).Formula = "=SUBTOTAL(9,H9:H" & lastrow & ")"
Ale kolumna „listopad” nie zawsze będzie obecny w wierszu „H”, więc nie jestem w stanie dowiedzieć się, jak zmienić swój kod, aby wybrać kolumnę dynamicznie.
Dzięki wielkie za pomoc Siddh arth. Zrobiłem z tego większość mojej pracy. Ale rzeczywisty problem polega na dodaniu sumy wierszy. Używam tego kodu już teraz. 'SumV = SV i "9"' 'SumW = SV i lRow' ' Komórki (lRow + 1, SV) .Formula = "= SUBTOTAL (9, SumV: SumW)" ' Ale to zwraca następującą wartość w programie Excel "= SUBTOTAL (9, SumV: SumW)" I otrzymuję #NAME? błąd. –
Umm, co to jest "SV"? –
Przepraszam, nie byłam jasna. Cokolwiek wspomniałeś jako colName w twoim kodzie, zmieniłem nazwę na SV, ponieważ już używałem zmiennej colName gdzie indziej. Zasadniczo, co próbuję zrobić, to połączyć kolumnę i wiersz, aby uzyskać pewną wartość (np. W9). Więc mam wartość W9 dla SumV i W2128 dla SumW. Ale gdy użyję funkcji sumy częściowej, ta sama zostanie wstawiona zamiast rzeczywistej wartości. Próbowałem również ich używać. '= SUBTOTAL (9," i SumV & ":" & SumW & ")'. Ale nawet to rzuca wyjątek. –