Jak zwrócić sumę wartości z różnych komórek?

0

Witam,

Potrzebuje wskazówki/pomocy do poprawienia funkcji która ma szukać określony tekst i zwracać sumę danych z innej kolumny.
Chciałbym aby funkcja w kolumnie D na podstawie wzoru z C szukała taki tekst w bazie A i zwracała wartość z bazy B
Udało mi się zrobić tak zbyt sumowała tekst ale nie wiem jak zrobić aby brała wartość z komórki obok czyli kolumny B

Czyli przy P2 w D powinno być 2 czy P3 2 przy P4 1 itd.

Function pietro(x As Range, zakres1 As Range)

Dim cell As Range
Dim wynik, i, j, z


For Each cell In zakres1


i = Mid(cell.Text, 2, 1)
j = Mid(x.Text, 2, 1)

If i = j Then

z = cell.Value

wynik = wynik + z

pietro = wynik

End If
Next cell

End Function

screenshot-20231126115047.png

Z góry dziękuje za pomoc

Pozdrawiam,
T

2

Rozwiązanie w 3 sposobach:
1 - porównuje 2 pierwsze znaki ("p1") i używa SUMA.WARUNKÓW (bez VBA)
Wstaw w D1 formułę:

=SUMA.WARUNKÓW($B$1:$B$7;$A$1:$A$7;LEWY(C1;2)&"*")

2 - porównuje drugi znak ("1") i używa SUMA.WARUNKÓW (bez VBA)
Wstaw w D1 formułę:

=SUMA.WARUNKÓW($B$1:$B$7;$A$1:$A$7;"?"&FRAGMENT.TEKSTU(C1;2;1)&"*")

3 - z VBA. Jako drugi parametr podajesz tablicę złożoną z dwóch kolumn.
Wstaw w D1 formułę:

=pietro(C1;$A$1:$B$7)

A funkcję zmodyfikuj tak:

Function pietro(x As Range, zakres1 As Range) As Long
Dim cell As Range
Dim wynik&, i$, j$, z&

For Each cell In zakres1.Columns(1).Cells
    i = Mid(cell.Text, 2, 1)
    j = Mid(x.Text, 2, 1)
    If i = j Then
        z = cell.Offset(, 1).Value
        wynik = wynik + z
        pietro = wynik
    End If
Next cell

End Function
0

Super !
Dzięki Marcin za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1