Risposte:
Un modo per implementare qualcosa del genere è
=VALUE(INDEX(FILTER(SPLIT(A1, " "), ISNUMBER(SPLIT(A1, " "))); 1; 1))
Il risultato di questa formula per alcune stringhe di esempio è riportato di seguito.
Potrebbe essere necessario modificarlo in base alle proprie esigenze individuali. Dovrebbe funzionare abbastanza bene per archi semplici come "3 tazze".
SPLIT(..., " ")
divide una stringa nelle sue parti separate da spazio. È possibile aggiungere più caratteri alla stringa, ad esempio " -/"
, per dividere ogni volta che vengono trovati quei caratteri.
ISNUMBER
controlla se una stringa è un numero.
FILTER
prende l'array e filtra tutto ciò che non soddisfa la seconda funzione, ovvero elimina tutto ciò che non è un numero.
INDEX(...; 1; 1)
restituisce il valore nella prima riga, prima colonna dell'array (in modo da ottenere solo il primo numero elencato, non tutti i numeri elencati).
VALUE
probabilmente non sarà necessario, ma solo per buona misura converte la stringa finale in un valore numerico.
VALUE
...
VALUE
genera un errore ("impossibile analizzarlo in un numero") su tutti gli input di esempio che ho fornito nella risposta.
VALUE
è la risposta alla prima domanda di OP e anche al titolo.
parseInt()
Un'alternativa è:
=INT()
=SUM(ARRAYFORMULA(INT(LEFT(B1:B2, LEN(B1:B2)-5))))
Il LEN(B1:B2)-5
, include uno spazio bianco.
Sembra un buon uso per regex. Per esempio:
dove la formula in E2 è:
="="&join("+",ArrayFormula(regexreplace(B2:D2,"\D","")))
Questo elimina tutti i numeri non numerici, concatena il risultato +
e li antepone =
.
Copia / Incolla / Incolla solo i valori in, diciamo, F2 (potrebbe essere E2) quindi Sostituisci =
con =
.