Skip to content

Formulas in Italian: names, separators, booleans, errors and table specifiers - #714

Draft
alb308 wants to merge 5 commits into
storytold:mainfrom
alb308:formula-it
Draft

alb308 wants to merge 5 commits into
storytold:mainfrom
alb308:formula-it

Conversation

@alb308

@alb308 alb308 commented Oct 12, 2026 •

Copy link
Copy Markdown

Summary

Italian formula entry and display, as a dialect for the formula languages from #443. With the interface in Italiano, =SE(VERO;SOMMA(1,5;2,25);#N/D), =somma.più.se(A1:A3;B1:B3;">1") and =SOMMA({1\2.3\4}) work as typed. Files keep canonical English formulas.

Draft, stacked on two open PRs (same approach as the Polish #674):

Once both are on main, only 862f09f is new. I'll rebase whenever needed.

  • crates/formula/src/input/it.rs: a Dialect with:
    • 455 function names;
    • ; between arguments and , as the decimal separator;
    • \ between array columns and . between rows;
    • VERO/FALSO, the ten error values and the five structured-reference specifiers.
  • 58 functions keep their English name. In Italian Excel these include MAX, MIN, INT, LN, LOG, CONCAT, SWITCH, XOR, LAMBDA, LET and the LAMBDA helpers. GROUPBY, PIVOTBY, PERCENTOF, TRIMRANGE, ISOMITTED and the REGEX functions also stay English until their Italian spelling is observed.
  • FormulaLocale::It in ALL and dialect(), and Language::It => FormulaLocale::It.
  • Lexer: an array row now ends at the language's row separator even when that separator is a word character. Italian is the first language whose row separator is ., so before this {1\2.3\4} lexed .3 as a word. The new arm runs before the trim-reference . arm and only inside braces. Word scanning inside braces also stops at the row separator. Other languages behave as before: their row separators (;, :) are not word characters, and the existing tests are unchanged.
  • Docs: formula-input.md (Italian column), localization-parity.md, ROADMAP.md.

Where the words come from

Question 1 in #430 (which sources are acceptable) is still open, so here is exactly what was done:

  • Array separators: Microsoft's it-it page "Usare costanti di matrice nelle formule in forma di matrice" gives the example ={1\2\3\4.5\6\7\8.9\10\11\12}, a 3×4 constant. An accepted answer on Microsoft Q&A (it-it) says Italian Excel uses ={1\2\3\4\5} for horizontal, ={1.2.3.4.5} for vertical, and rejects ; inside braces. Both sources agree, but this has not been observed in a current Italian Excel.
  • Errors: #NULLO!, #DIV/0!, #VALORE!, #RIF!, #NOME?, #NUM!, #N/D and #ESTRAZIONE_DATI_IN_CORSO come from the it-it ERRORE.TIPO page. #ESPANSIONE! and #CALC! are not from a Microsoft page.
  • Function names and table specifiers (#Tutti, #Dati, #Intestazioni, #Totali, #Questa riga): written from knowledge of Italian Excel with Claude (AI agent). The it-it structured-references page keeps the English specifiers in its examples, so they are not confirmed by Microsoft.
  • Not used: LibreOffice, Gnumeric or HyperFormula translations.
  • Not committed: any file produced by Excel.

Not observed yet in a licensed Italian Excel: the function names one by one, the table specifiers and #ESPANSIONE!. If someone with Italian Excel can run the FORMULATEXT check described in #674, corrections are one-line edits.

Tests

  • crates/formula/tests/localized_input.rs: It in LOCALIZED. New Italian cases cover:

    • IF/VLOOKUP/#N/D;
    • arrays with \ and ., including decimal commas inside an array;
    • a table specifier with ;;
    • IFERROR/XLOOKUP, RIGHE(Tabella1[#Tutti]), E/O/NON;
    • SE.NON.DISP. with its trailing dot, and MATR.SOMMA.PRODOTTO next to MAX, which stays English;
    • lower-case accented somma.più.se and {vero.falso}.

    The round-trip check picks up It through FormulaLocale::ALL.

  • crates/calc: formula_language_tables_only_name_functions_the_engine_knows passes with the Italian table.

  • crates/ui-egui/tests/formula_locale.rs: the fallback test from i18n: add Italian (it) interface #713 becomes italian_interface_enters_and_shows_italian_formulas.

Ran locally (Rust 1.99):

Not in this PR

  • Italian function help (descriptions and signatures): it stays English under the Italian name, like every language except Spanish.
  • Number and date formats.

🤖 Generated with Claude Code

quantmind-br and others added 5 commits October 12, 2026 12:17
…sh table

The interface language picks the formula language, as in Excel. Each language is a data
table in crates/formula/src/input/<lang>.rs (function names, booleans, errors, structured
reference specifiers and separators) behind one Dialect, so the lexer, parser and display
printer take no per-language code:

- es (424 names), de (403), pt-BR (412), ru (459), each entry with its source; Microsoft's
  localized pages are machine-translated, so a name needs two agreeing signals
- local error literals (#WERT!, #Н/Д, #¡VALOR!), longest match wins
- local table specifiers ([#Kopfzeilen], [#Эта строка]) and separators inside []
- German `.` between array columns; Russian `:` between array rows (no row ranges inside
  braces), merged with upstream trim references (A1.:.F10, 1.:3)
- LET/LAMBDA bindings and workbook names shadow local names case-insensitively in any script
- editor autocomplete and argument hints take Unicode names; Insert Function searches and
  sorts by the local name; help shows the local name with local separators
- Czech and French interfaces keep English formulas until they get a table

Files, clipboard, engine commands, CLI and MCP keep canonical English syntax.
Every label of the reference table (381) in the names Italian Excel users
know; it-IT, it-CH and it_IT.UTF-8 system locales pick Italian. Formulas
and number formats stay en-US until an Italian formula locale exists.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	docs/localization-parity.md
…ecifiers

An Italian dialect for the formula languages from storytold#443: 455 function
names, `;` arguments, decimal comma, `\` between array columns and `.`
between rows, VERO/FALSO, the ten error values and the five
structured-reference specifiers. The Italian interface now enters and
shows Italian formulas.

The lexer now ends an array row at the language's row separator even
when it is a word character (`.` in Italian: `{1\2.3\4}`).

Names come from knowledge of Italian Excel; the array separators and
the ERRORE.TIPO errors cite Microsoft it-it pages. Sources and what is
not yet observed are listed in crates/formula/src/input/it.rs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@carminezac

Copy link
Copy Markdown

I checked this table against a running Italian Excel: it matches Excel for 448 of its 455 names. Seven differ, and nine functions that change name in Italian are missing (the ones you kept English "until their Italian spelling is observed").

How: Microsoft 365 Excel for Windows with the Italian interface and the it-IT regional format, black-box. In a new, never-saved workbook a VBA macro set each formula in English through Range.Formula2 (one call per GridCraft function, with as many A1 arguments as the function needs) and read back Range.Formula2Local. All 514 functions from gridcraft-cli functions resolved. Nothing was taken from Microsoft documentation or Office files, and no Excel file is committed anywhere.

Function This PR Observed in Italian Excel
BINOM.DIST.RANGE INTERVALLO.DISTRIB.BINOM.N INTERVALLO.DISTRIB.BINOM.N.
LEFTB SINISTRA.B SINISTRAB
TAKE PRENDI INCLUDI
TEXTAFTER TESTO.DOPO TESTO.SUCCESSIVO
TEXTBEFORE TESTO.PRIMA TESTO.PRECEDENTE
WRAPCOLS DISPONI.COL A.CAPO.COL
WRAPROWS DISPONI.RIGA A.CAPO.RIGA
BYCOL — PERCOL
BYROW — PERRIGA
GROUPBY — RAGGRUPPAPER
PERCENTOF — PERCENTUALE.DI
PIVOTBY — PIVOTPER
REGEXEXTRACT — REGEX.ESTRAI
REGEXREPLACE — REGEX.SOSTITUISCI
REGEXTEST — REGEX.TEST
TRIMRANGE — ESCLUDI.VUOTE

Note the trailing dot in INTERVALLO.DISTRIB.BINOM.N.: that is how Excel spells it.

Also observed: ; between arguments, , as the decimal separator (=1,5+2,25), arrays ={1\2.3\4}, VERO/FALSO; errors #VALORE!, #RIF!, #NOME?, #N/D, #ESTRAZIONE_DATI_IN_CORSO, #ESPANSIONE! (for #SPILL!), while #NULL!, #DIV/0!, #NUM! and #CALC! stay English; table specifiers #Tutti, #Dati, #Intestazioni, #Totali, joined by ; (Tbl[[#Intestazioni];[#Dati]]), and [@a] unchanged. 50 functions keep their English name: ASC, BASE, BITAND, BITOR, BITXOR, CONCAT, COS, COSH, COT, COTH, CSC, CSCH, DBCS, DELTA, EUROCONVERT, EXP, FISHER, GAMMA, GAUSS, INT, ISOMITTED, JIS, LAMBDA, LET, LN, LOG, LOG10, MAKEARRAY, MAP, MAX, MIN, PEARSON, PERCENTILE, PHI, POISSON, QUARTILE, REDUCE, SCAN, SEC, SECH, SWITCH, T, TAN, TANH, UNICODE, USDOLLAR, VAR, VAR.P, WEIBULL, XOR.

All 514 observed names (canonical → Italian)
Function Italian Excel
ABS ASS
ACCRINT INT.MATURATO.PER
ACCRINTM INT.MATURATO.SCAD
ACOS ARCCOS
ACOSH ARCCOSH
ACOT ARCCOT
ACOTH ARCCOTH
ADDRESS INDIRIZZO
AGGREGATE AGGREGA
AMORDEGRC AMMORT.DEGR
AMORLINC AMMORT.PER
AND E
ARABIC ARABO
AREAS AREE
ARRAYTOTEXT MATRICE.A.TESTO
ASC ASC
ASIN ARCSEN
ASINH ARCSENH
ATAN ARCTAN
ATAN2 ARCTAN.2
ATANH ARCTANH
AVEDEV MEDIA.DEV
AVERAGE MEDIA
AVERAGEA MEDIA.VALORI
AVERAGEIF MEDIA.SE
AVERAGEIFS MEDIA.PIÙ.SE
BAHTTEXT BAHTTESTO
BASE BASE
BESSELI BESSEL.I
BESSELJ BESSEL.J
BESSELK BESSEL.K
BESSELY BESSEL.Y
BETA.DIST DISTRIB.BETA.N
BETA.INV INV.BETA.N
BETADIST DISTRIB.BETA
BETAINV INV.BETA
BIN2DEC BINARIO.DECIMALE
BIN2HEX BINARIO.HEX
BIN2OCT BINARIO.OCT
BINOM.DIST DISTRIB.BINOM.N
BINOM.DIST.RANGE INTERVALLO.DISTRIB.BINOM.N.
BINOM.INV INV.BINOM
BINOMDIST DISTRIB.BINOM
BITAND BITAND
BITLSHIFT BIT.SPOSTA.SX
BITOR BITOR
BITRSHIFT BIT.SPOSTA.DX
BITXOR BITXOR
BYCOL PERCOL
BYROW PERRIGA
CEILING ARROTONDA.ECCESSO
CEILING.MATH ARROTONDA.ECCESSO.MAT
CEILING.PRECISE ARROTONDA.ECCESSO.PRECISA
CELL CELLA
CHAR CODICE.CARATT
CHIDIST DISTRIB.CHI
CHIINV INV.CHI
CHISQ.DIST DISTRIB.CHI.QUAD
CHISQ.DIST.RT DISTRIB.CHI.QUAD.DS
CHISQ.INV INV.CHI.QUAD
CHISQ.INV.RT INV.CHI.QUAD.DS
CHISQ.TEST TEST.CHI.QUAD
CHITEST TEST.CHI
CHOOSE SCEGLI
CHOOSECOLS SCEGLI.COL
CHOOSEROWS SCEGLI.RIGA
CLEAN LIBERA
CODE CODICE
COLUMN RIF.COLONNA
COLUMNS COLONNE
COMBIN COMBINAZIONE
COMBINA COMBINAZIONE.VALORI
COMPLEX COMPLESSO
CONCAT CONCAT
CONCATENATE CONCATENA
CONFIDENCE CONFIDENZA
CONFIDENCE.NORM CONFIDENZA.NORM
CONFIDENCE.T CONFIDENZA.T
CONVERT CONVERTI
CORREL CORRELAZIONE
COS COS
COSH COSH
COT COT
COTH COTH
COUNT CONTA.NUMERI
COUNTA CONTA.VALORI
COUNTBLANK CONTA.VUOTE
COUNTIF CONTA.SE
COUNTIFS CONTA.PIÙ.SE
COUPDAYBS GIORNI.CED.INIZ.LIQ
COUPDAYS GIORNI.CED
COUPDAYSNC GIORNI.CED.NUOVA
COUPNCD DATA.CED.SUCC
COUPNUM NUM.CED
COUPPCD DATA.CED.PREC
COVAR COVARIANZA
COVARIANCE.P COVARIANZA.P
COVARIANCE.S COVARIANZA.C
CRITBINOM CRIT.BINOM
CSC CSC
CSCH CSCH
CUBEKPIMEMBER MEMBRO.KPI.CUBO
CUBEMEMBER MEMBRO.CUBO
CUBEMEMBERPROPERTY PROPRIETÀ.MEMBRO.CUBO
CUBERANKEDMEMBER MEMBRO.CUBO.CON.RANGO
CUBESET SET.CUBO
CUBESETCOUNT CONTA.SET.CUBO
CUBEVALUE VALORE.CUBO
CUMIPMT INT.CUMUL
CUMPRINC CAP.CUM
DATE DATA
DATEDIF DATA.DIFF
DATEVALUE DATA.VALORE
DAVERAGE DB.MEDIA
DAY GIORNO
DAYS GIORNI
DAYS360 GIORNO360
DB AMMORT.FISSO
DBCS DBCS
DCOUNT DB.CONTA.NUMERI
DCOUNTA DB.CONTA.VALORI
DDB AMMORT
DEC2BIN DECIMALE.BINARIO
DEC2HEX DECIMALE.HEX
DEC2OCT DECIMALE.OCT
DECIMAL DECIMALE
DEGREES GRADI
DELTA DELTA
DEVSQ DEV.Q
DGET DB.VALORI
DISC TASSO.SCONTO
DMAX DB.MAX
DMIN DB.MIN
DOLLAR VALUTA
DOLLARDE VALUTA.DEC
DOLLARFR VALUTA.FRAZ
DPRODUCT DB.PRODOTTO
DROP ESCLUDI
DSTDEV DB.DEV.ST
DSTDEVP DB.DEV.ST.POP
DSUM DB.SOMMA
DURATION DURATA
DVAR DB.VAR
DVARP DB.VAR.POP
EDATE DATA.MESE
EFFECT EFFETTIVO
ENCODEURL CODIFICA.URL
EOMONTH FINE.MESE
ERF FUNZ.ERRORE
ERF.PRECISE FUNZ.ERRORE.PRECISA
ERFC FUNZ.ERRORE.COMP
ERFC.PRECISE FUNZ.ERRORE.COMP.PRECISA
ERROR.TYPE ERRORE.TIPO
EUROCONVERT EUROCONVERT
EVEN PARI
EXACT IDENTICO
EXP EXP
EXPAND ESPANDI
EXPON.DIST DISTRIB.EXP.N
EXPONDIST DISTRIB.EXP
F.DIST DISTRIBF
F.DIST.RT DISTRIB.F.DS
F.INV INVF
F.INV.RT INV.F.DS
F.TEST TESTF
FACT FATTORIALE
FACTDOUBLE FATT.DOPPIO
FALSE FALSO
FDIST DISTRIB.F
FILTER FILTRO
FILTERXML FILTRO.XML
FIND TROVA
FINDB TROVA.B
FINV INV.F
FISHER FISHER
FISHERINV INV.FISHER
FIXED FISSO
FLOOR ARROTONDA.DIFETTO
FLOOR.MATH ARROTONDA.DIFETTO.MAT
FLOOR.PRECISE ARROTONDA.DIFETTO.PRECISA
FORECAST PREVISIONE
FORECAST.ETS PREVISIONE.ETS
FORECAST.ETS.CONFINT PREVISIONE.ETS.INTCONF
FORECAST.ETS.SEASONALITY PREVISIONE.ETS.STAGIONALITÀ
FORECAST.ETS.STAT PREVISIONE.ETS.STAT
FORECAST.LINEAR PREVISIONE.LINEARE
FORMULATEXT TESTO.FORMULA
FREQUENCY FREQUENZA
FTEST TEST.F
FV VAL.FUT
FVSCHEDULE VAL.FUT.CAPITALE
GAMMA GAMMA
GAMMA.DIST DISTRIB.GAMMA.N
GAMMA.INV INV.GAMMA.N
GAMMADIST DISTRIB.GAMMA
GAMMAINV INV.GAMMA
GAMMALN LN.GAMMA
GAMMALN.PRECISE LN.GAMMA.PRECISA
GAUSS GAUSS
GCD MCD
GEOMEAN MEDIA.GEOMETRICA
GESTEP SOGLIA
GROUPBY RAGGRUPPAPER
GROWTH CRESCITA
HARMEAN MEDIA.ARMONICA
HEX2BIN HEX.BINARIO
HEX2DEC HEX.DECIMALE
HEX2OCT HEX.OCT
HLOOKUP CERCA.ORIZZ
HOUR ORA
HSTACK STACK.ORIZ
HYPERLINK COLLEG.IPERTESTUALE
HYPGEOM.DIST DISTRIB.IPERGEOM.N
HYPGEOMDIST DISTRIB.IPERGEOM
IF SE
IFERROR SE.ERRORE
IFNA SE.NON.DISP.
IFS PIÙ.SE
IMABS COMP.MODULO
IMAGINARY COMP.IMMAGINARIO
IMARGUMENT COMP.ARGOMENTO
IMCONJUGATE COMP.CONIUGATO
IMCOS COMP.COS
IMCOSH COMP.COSH
IMCOT COMP.COT
IMCSC COMP.CSC
IMCSCH COMP.CSCH
IMDIV COMP.DIV
IMEXP COMP.EXP
IMLN COMP.LN
IMLOG10 COMP.LOG10
IMLOG2 COMP.LOG2
IMPOWER COMP.POTENZA
IMPRODUCT COMP.PRODOTTO
IMREAL COMP.PARTE.REALE
IMSEC COMP.SEC
IMSECH COMP.SECH
IMSIN COMP.SEN
IMSINH COMP.SENH
IMSQRT COMP.RADQ
IMSUB COMP.DIFF
IMSUM COMP.SOMMA
IMTAN COMP.TAN
INDEX INDICE
INDIRECT INDIRETTO
INFO AMBIENTE.INFO
INT INT
INTERCEPT INTERCETTA
INTRATE TASSO.INT
IPMT INTERESSI
IRR TIR.COST
ISBLANK VAL.VUOTO
ISERR VAL.ERR
ISERROR VAL.ERRORE
ISEVEN VAL.PARI
ISFORMULA VAL.FORMULA
ISLOGICAL VAL.LOGICO
ISNA VAL.NON.DISP
ISNONTEXT VAL.NON.TESTO
ISNUMBER VAL.NUMERO
ISO.CEILING ISO.ARROTONDA.ECCESSO
ISODD VAL.DISPARI
ISOMITTED ISOMITTED
ISOWEEKNUM NUM.SETTIMANA.ISO
ISPMT INTERESSE.RATA
ISREF VAL.RIF
ISTEXT VAL.TESTO
JIS JIS
KURT CURTOSI
LAMBDA LAMBDA
LARGE GRANDE
LCM MCM
LEFT SINISTRA
LEFTB SINISTRAB
LEN LUNGHEZZA
LENB LUNGB
LET LET
LINEST REGR.LIN
LN LN
LOG LOG
LOG10 LOG10
LOGEST REGR.LOG
LOGINV INV.LOGNORM
LOGNORM.DIST DISTRIB.LOGNORM.N
LOGNORM.INV INV.LOGNORM.N
LOGNORMDIST DISTRIB.LOGNORM
LOOKUP CERCA
LOWER MINUSC
MAKEARRAY MAKEARRAY
MAP MAP
MATCH CONFRONTA
MAX MAX
MAXA MAX.VALORI
MAXIFS MAX.PIÙ.SE
MDETERM MATR.DETERM
MDURATION DURATA.M
MEDIAN MEDIANA
MID STRINGA.ESTRAI
MIDB MEDIA.B
MIN MIN
MINA MIN.VALORI
MINIFS MIN.PIÙ.SE
MINUTE MINUTO
MINVERSE MATR.INVERSA
MIRR TIR.VAR
MMULT MATR.PRODOTTO
MOD RESTO
MODE MODA
MODE.MULT MODA.MULT
MODE.SNGL MODA.SNGL
MONTH MESE
MROUND ARROTONDA.MULTIPLO
MULTINOMIAL MULTINOMIALE
MUNIT MATR.UNIT
N NUM
NA NON.DISP
NEGBINOM.DIST DISTRIB.BINOM.NEG.N
NEGBINOMDIST DISTRIB.BINOM.NEG
NETWORKDAYS GIORNI.LAVORATIVI.TOT
NETWORKDAYS.INTL GIORNI.LAVORATIVI.TOT.INTL
NOMINAL NOMINALE
NORM.DIST DISTRIB.NORM.N
NORM.INV INV.NORM.N
NORM.S.DIST DISTRIB.NORM.ST.N
NORM.S.INV INV.NORM.S
NORMDIST DISTRIB.NORM
NORMINV INV.NORM
NORMSDIST DISTRIB.NORM.ST
NORMSINV INV.NORM.ST
NOT NON
NOW ADESSO
NPER NUM.RATE
NPV VAN
NUMBERVALUE NUMERO.VALORE
OCT2BIN OCT.BINARIO
OCT2DEC OCT.DECIMALE
OCT2HEX OCT.HEX
ODD DISPARI
ODDFPRICE PREZZO.PRIMO.IRR
ODDFYIELD REND.PRIMO.IRR
ODDLPRICE PREZZO.ULTIMO.IRR
ODDLYIELD REND.ULTIMO.IRR
OFFSET SCARTO
OR O
PDURATION DURATA.P
PEARSON PEARSON
PERCENTILE PERCENTILE
PERCENTILE.EXC ESC.PERCENTILE
PERCENTILE.INC INC.PERCENTILE
PERCENTOF PERCENTUALE.DI
PERCENTRANK PERCENT.RANGO
PERCENTRANK.EXC ESC.PERCENT.RANGO
PERCENTRANK.INC INC.PERCENT.RANGO
PERMUT PERMUTAZIONE
PERMUTATIONA PERMUTAZIONE.VALORI
PHI PHI
PHONETIC FURIGANA
PI PI.GRECO
PIVOTBY PIVOTPER
PMT RATA
POISSON POISSON
POISSON.DIST DISTRIB.POISSON
POWER POTENZA
PPMT P.RATA
PRICE PREZZO
PRICEDISC PREZZO.SCONT
PRICEMAT PREZZO.SCAD
PROB PROBABILITÀ
PRODUCT PRODOTTO
PROPER MAIUSC.INIZ
PV VA
QUARTILE QUARTILE
QUARTILE.EXC ESC.QUARTILE
QUARTILE.INC INC.QUARTILE
QUOTIENT QUOZIENTE
RADIANS RADIANTI
RAND CASUALE
RANDARRAY MATR.CASUALE
RANDBETWEEN CASUALE.TRA
RANK RANGO
RANK.AVG RANGO.MEDIA
RANK.EQ RANGO.UG
RATE TASSO
RECEIVED RICEV.SCAD
REDUCE REDUCE
REGEXEXTRACT REGEX.ESTRAI
REGEXREPLACE REGEX.SOSTITUISCI
REGEXTEST REGEX.TEST
REPLACE RIMPIAZZA
REPLACEB SOSTITUISCI.B
REPT RIPETI
RIGHT DESTRA
RIGHTB DESTRA.B
ROMAN ROMANO
ROUND ARROTONDA
ROUNDDOWN ARROTONDA.PER.DIF
ROUNDUP ARROTONDA.PER.ECC
ROW RIF.RIGA
ROWS RIGHE
RRI RIT.INVEST.EFFETT
RSQ RQ
SCAN SCAN
SEARCH RICERCA
SEARCHB CERCA.B
SEC SEC
SECH SECH
SECOND SECONDO
SEQUENCE SEQUENZA
SERIESSUM SOMMA.SERIE
SHEET FOGLIO
SHEETS FOGLI
SIGN SEGNO
SIN SEN
SINH SENH
SKEW ASIMMETRIA
SKEW.P ASIMMETRIA.P
SLN AMMORT.COST
SLOPE PENDENZA
SMALL PICCOLO
SORT DATI.ORDINA
SORTBY DATI.ORDINA.PER
SQRT RADQ
SQRTPI RADQ.PI.GRECO
STANDARDIZE NORMALIZZA
STDEV DEV.ST
STDEV.P DEV.ST.P
STDEV.S DEV.ST.C
STDEVA DEV.ST.VALORI
STDEVP DEV.ST.POP
STDEVPA DEV.ST.POP.VALORI
STEYX ERR.STD.YX
SUBSTITUTE SOSTITUISCI
SUBTOTAL SUBTOTALE
SUM SOMMA
SUMIF SOMMA.SE
SUMIFS SOMMA.PIÙ.SE
SUMPRODUCT MATR.SOMMA.PRODOTTO
SUMSQ SOMMA.Q
SUMX2MY2 SOMMA.DIFF.Q
SUMX2PY2 SOMMA.SOMMA.Q
SUMXMY2 SOMMA.Q.DIFF
SWITCH SWITCH
SYD AMMORT.ANNUO
T T
T.DIST DISTRIB.T.N
T.DIST.2T DISTRIB.T.2T
T.DIST.RT DISTRIB.T.DS
T.INV INVT
T.INV.2T INV.T.2T
T.TEST TESTT
TAKE INCLUDI
TAN TAN
TANH TANH
TBILLEQ BOT.EQUIV
TBILLPRICE BOT.PREZZO
TBILLYIELD BOT.REND
TDIST DISTRIB.T
TEXT TESTO
TEXTAFTER TESTO.SUCCESSIVO
TEXTBEFORE TESTO.PRECEDENTE
TEXTJOIN TESTO.UNISCI
TEXTSPLIT DIVIDI.TESTO
TIME ORARIO
TIMEVALUE ORARIO.VALORE
TINV INV.T
TOCOL A.COL
TODAY OGGI
TOROW A.RIGA
TRANSPOSE MATR.TRASPOSTA
TREND TENDENZA
TRIM ANNULLA.SPAZI
TRIMMEAN MEDIA.TRONCATA
TRIMRANGE ESCLUDI.VUOTE
TRUE VERO
TRUNC TRONCA
TTEST TEST.T
TYPE TIPO
UNICHAR CARATT.UNI
UNICODE UNICODE
UNIQUE UNICI
UPPER MAIUSC
USDOLLAR USDOLLAR
VALUE VALORE
VALUETOTEXT VALORE.A.TESTO
VAR VAR
VAR.P VAR.P
VAR.S VAR.C
VARA VAR.VALORI
VARP VAR.POP
VARPA VAR.POP.VALORI
VDB AMMORT.VAR
VLOOKUP CERCA.VERT
VSTACK STACK.VERT
WEBSERVICE SERVIZIO.WEB
WEEKDAY GIORNO.SETTIMANA
WEEKNUM NUM.SETTIMANA
WEIBULL WEIBULL
WEIBULL.DIST DISTRIB.WEIBULL
WORKDAY GIORNO.LAVORATIVO
WORKDAY.INTL GIORNO.LAVORATIVO.INTL
WRAPCOLS A.CAPO.COL
WRAPROWS A.CAPO.RIGA
XIRR TIR.X
XLOOKUP CERCA.X
XMATCH CONFRONTA.X
XNPV VAN.X
XOR XOR
YEAR ANNO
YEARFRAC FRAZIONE.ANNO
YIELD REND
YIELDDISC REND.TITOLI.SCONT
YIELDMAT REND.SCAD
Z.TEST TESTZ
ZTEST TEST.Z

Happy to help with a follow-up commit if useful.

Alftakeaway added a commit to Alftakeaway/gridcraft that referenced this pull request Oct 25, 2026
The 422-alias table was a translation of the English names rather than the
names Italian Excel uses: 195 of them differed (`ABS` is `ASS`, `COLUMN` is
`RIF.COLONNA`, `CHAR` is `CODICE.CARATT`, `CLEAN` is `LIBERA`, `DEVSQ` is
`DEV.Q`), and 83 renamed functions were missing altogether, so `=ASS(...)`
and `=RIF.COLONNA(...)` were rejected while `=VAL.ABS(...)` was accepted.

The table is rebuilt from names read back from a running Italian Excel
(Microsoft 365, it-IT, black box: each English name set through
`Range.Formula2` and read back through `Range.Formula2Local`, all 514 catalog
functions resolved) and cross-checked against the table in storytold#714: 464 aliases.
The 41 names Excel keeps in English (`MAX`, `MIN`, `INT`, `MAP`,
`MAKEARRAY`, `XOR`, `CONCAT`, `ISOMITTED`, `EUROCONVERT`…) are no longer
translated, and two names Excel spells with a trailing dot (`SE.NON.DISP.`,
`INTERVALLO.DISTRIB.BINOM.N.`) are kept as typed.

Tests cover the names Excel shows, the newer families the table lacked, the
names that stay English, the trailing-dot round-trip, and a unit test that
rejects an alias repeating its English name or claimed by two functions.
Alftakeaway added a commit to Alftakeaway/gridcraft that referenced this pull request Oct 27, 2026
The 422-alias table was a translation of the English names rather than the
names Italian Excel uses: 195 of them differed (`ABS` is `ASS`, `COLUMN` is
`RIF.COLONNA`, `CHAR` is `CODICE.CARATT`, `CLEAN` is `LIBERA`, `DEVSQ` is
`DEV.Q`), and 83 renamed functions were missing altogether, so `=ASS(...)`
and `=RIF.COLONNA(...)` were rejected while `=VAL.ABS(...)` was accepted.

The table is rebuilt from names read back from a running Italian Excel
(Microsoft 365, it-IT, black box: each English name set through
`Range.Formula2` and read back through `Range.Formula2Local`, all 514 catalog
functions resolved) and cross-checked against the table in storytold#714: 464 aliases.
The 41 names Excel keeps in English (`MAX`, `MIN`, `INT`, `MAP`,
`MAKEARRAY`, `XOR`, `CONCAT`, `ISOMITTED`, `EUROCONVERT`…) are no longer
translated, and two names Excel spells with a trailing dot (`SE.NON.DISP.`,
`INTERVALLO.DISTRIB.BINOM.N.`) are kept as typed.

Tests cover the names Excel shows, the newer families the table lacked, the
names that stay English, the trailing-dot round-trip, and a unit test that
rejects an alias repeating its English name or claimed by two functions.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants