Mam dane w komórce, takie jak:
Dobra odpowiedź -6, RNR -2, brak głosu -1
Muszę uzyskać sumę samych liczb w komórce. Jak mogę to zrobić w jednej formule?
Mam dane w komórce, takie jak:
Dobra odpowiedź -6, RNR -2, brak głosu -1
Muszę uzyskać sumę samych liczb w komórce. Jak mogę to zrobić w jednej formule?
Odpowiedzi:
Korzystam z dodatku Excel RegEx Znajdź / Zamień , dodaje funkcjonalność wyrażeń regularnych do Excela.
(Nie jestem w żaden sposób związany z tym dodatkiem, tylko entuzjasta)
Tutaj możesz użyć takiej formuły, aby znaleźć i zsumować wszystkie liczby:
=SUM(RegExFind(A1,"\d+"))
Lub też wziąć pod uwagę wartości ujemne:
=SUM(RegExFind(A1,"[-\d]+"))
Na podstawie dostarczonych informacji i przy założeniu, że będą tylko 3 wartości do wyodrębnienia i każda 1 cyfra długości, poniżej będzie działać na ciąg w A2 :
=LEFT(SUMPRODUCT(MID(0&A2,LARGE(INDEX(ISNUMBER(--MID(A2,ROW($1:$25),1))* ROW($1:$25),0),ROW($1:$25))+1,1)*10^ROW($1:$25)/10),1)+RIGHT(SUMPRODUCT(MID(0&A2,LARGE(INDEX(ISNUMBER(--MID(A2,ROW($1:$25),1))* ROW($1:$25),0),ROW($1:$25))+1,1)*10^ROW($1:$25)/10),1)+RIGHT(A2,1)
Oczywiście poczyniłem tutaj kilka założeń,
Jeśli to nie zadziała, wyjaśnij mi bardziej szczegółowo, jak twoja struktura danych itp., A ja postaram się to zmienić.
Jeśli Twoje dane są zgodne z tym, co pokazujesz, a liczba jest poprzedzona znakiem <space>a, po którym następuje a <comma>lub koniec ciągu, wówczas możesz użyć następującego.
Zdefiniuj formułę i nazwij ją seq_99gdzie
seq_99 refers to: =IF(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))=1,1,(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))-1)*99)
Następnie możesz użyć tej formuły wprowadzonej do tablicy :
=SUM(IF(ISNUMBER(--TRIM(MID(SUBSTITUTE(TRIM(SUBSTITUTE(A1,","," "))," ",REPT(" ",99)),seq_99,99))),--TRIM(MID(SUBSTITUTE(TRIM(SUBSTITUTE(A1,","," "))," ",REPT(" ",99)),seq_99,99))))
Aby wprowadzić formułę do tablicy , przytrzymaj klawisz ctrl+ shiftpodczas uderzania enter. Jeśli zrobisz to poprawnie, Excel umieści nawiasy klamrowe {...}wokół formuły, którą możesz zobaczyć na pasku formuły.
Przyjąłem -oznaczoną liczbę ujemną. W innym przypadku zmiana formuły w celu jej wykluczenia jest banalna.
Chciałbym zasugerować małą funkcję VBA. Pamiętaj, że ogranicznik może być regulowany, jak pokazano poniżej.
Function SumNumbers(rngS As Range, Optional strDelim As String = "-") As Double
Dim xNums As Variant, lngNum As Long
xNums = Split(rngS, strDelim)
For lngNum = LBound(xNums) To UBound(xNums) Step 1
SumNumbers = SumNumbers + Val(xNums(lngNum))
Next lngNum
End Function
Uwagi:
Mam nadzieję, że to Ci pomoże.