Jak uzyskać sumę wartości liczbowych w ciągu alfanumerycznym w hej formule Microsoft Excel?

0

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?

Raghavendra
źródło
czy przed cyfrą zawsze jest „-”? i czy są tylko 3 liczby?
PeterH

Odpowiedzi:

1

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]+"))

wprowadź opis zdjęcia tutaj

Máté Juhász
źródło
0

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ć.

PeterH
źródło
0

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.

Ron Rosenfeld
źródło
0

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

wprowadź opis zdjęcia tutaj

Uwagi:

  • Użyj tej funkcji w zwykły sposób: = SumNumbers (adres komórki) .
  • Jeśli separatorem jest SPACJA, użyj strDelim As String = "" na liście argumentów.
  • Jeśli ogranicznikiem jest COMMA, użyj strDelim As String = "," na liście argumentów.

Mam nadzieję, że to Ci pomoże.

Rajesh S.
źródło
Co jeśli ciąg zawiera także liczby większe niż 9? (np. „Dobra odpowiedź -16, RNR -2, brak głosu -1”)
Máté Juhász
Ta funkcja sumuje dowolną liczbę, nawet jeśli ciąg znaków to: Dobra odpowiedź -16, RNR -2, Brak głosu -1 lub Dobra odpowiedź -50, RNR -89, Brak głosu -100.
Rajesh S
1
@ MátéJuhász ,, po prostu sprawdź teraz Dołączam zrzut ekranu z odpowiedzią.
Rajesh S