Jak parsować liczbę całkowitą w Arkuszach Google?

16

Co jest równoważne parseInt()(JS) lub intval()(PHP) w Arkuszach Google?

Chcę obliczyć sumę liczb z rzędu w osobnej komórce. Więc gdybym miał 3 cupsi 5 cupsz rzędu, dostałbym 18.

FT
źródło
4
Masz na myśli „3 filiżanki” i „15 filiżanek”, czy coś mi brakuje?
jonsca

Odpowiedzi:

15

Jednym ze sposobów wdrożenia czegoś takiego jest

=VALUE(INDEX(FILTER(SPLIT(A1, " "), ISNUMBER(SPLIT(A1, " "))); 1; 1))

Wynik tego wzoru dla niektórych przykładowych ciągów podano poniżej.

wprowadź opis zdjęcia tutaj

Może być konieczne zmodyfikowanie tego w celu dostosowania do indywidualnych potrzeb. Powinien działać całkiem dobrze na łańcuchach tak prostych jak „3 kubki”.

  • SPLIT(..., " ")dzieli ciąg na części oddzielone spacją. Możesz dodać więcej znaków do ciągu, np. " -/"Podzielić, gdy tylko te znaki zostaną znalezione.

  • ISNUMBER sprawdza, czy ciąg jest liczbą.

  • FILTER pobiera tablicę i odfiltrowuje wszystko, co nie spełnia drugiej funkcji, tzn. usuwa wszystko, co nie jest liczbą.

  • INDEX(...; 1; 1) zwraca wartość w pierwszym wierszu, pierwszej kolumnie tablicy (więc otrzymujemy tylko pierwszą liczbę na liście, a nie wszystkie liczby na liście).

  • VALUE prawdopodobnie nie będzie to konieczne, ale dla dobrego wyniku konwertuje końcowy ciąg znaków na wartość liczbową.

6005
źródło
2
Więc odpowiedź brzmi VALUE...
Iulian Onofrei,
@IulianOnofrei Nie, VALUEwywołuje błąd („nie można parsować na liczbę”) na wszystkich przykładowych danych wejściowych podanych w odpowiedzi.
6005
1
Przepraszam, chciałem powiedzieć, że VALUEto odpowiedź na pierwsze pytanie OP i tytuł.
Iulian Onofrei,
@IulianOnofrei Nie znam JavaScript, ale nie tak rozumiem pytanie OP.
6005
3

Inna alternatywa, która działa z komórką zawierającą kubek lub kubki

= ArrayFormula (SUMA (INT (LEFT (B1: B2, FIND ("", B1: B2)))))
Ruben
źródło
1

Wydaje się być dobrym rozwiązaniem dla wyrażenia regularnego. Na przykład:

Przykład WA57716

gdzie wzór w E2 to:

="="&join("+",ArrayFormula(regexreplace(B2:D2,"\D","")))

Spowoduje to usunięcie wszystkich liczb nienumerycznych, konkatenację wyniku +i poprzedzenie =.

Kopiuj / Wklej / Wklej wartości tylko, że do, powiedzmy, F2 (może być E2), a następnie wymienić =z =.

DOŁĄCZ DO
REGEXREPLACE

orzechy
źródło