Le formule, nelle due lingue.
Tutte le funzioni del motore CPQ, con nomi inglesi e italiani affiancati. Le traduzioni e gli alias eseguono la stessa operazione e possono essere usati nella stessa formula.
Una sintassi comune
- I nomi delle funzioni e i booleani ignorano maiuscole e minuscole:
SEeifsono equivalenti. I nomi di opzioni, costanti e i testi restano distinti. - Usa il punto per i decimali e la virgola tra argomenti, anche in italiano:
ARROTONDA(12.345, 2). Il punto e virgola non è un separatore valido. - Il prefisso
=è facoltativo. Scrivi i testi tra virgolette doppie e gli array nelle formule come["rosso", "blu"]. - Nelle celle che accettano solo liste —
options.values,bom.items,price_rules.incompatible_witheprice_rules.depends_on— le parentesi quadre sono facoltative:rosso blu "grigio chiaro". Separa gli elementi con spazi o virgole; racchiudi tra virgolette i testi che contengono spazi o virgole. Inrules.values, che accetta anche formule e riferimenti a costanti, le liste mantengono le parentesi quadre. - Nessuna conversione implicita:
"10" + 2è un errore. Le condizioni richiedono booleani.
Negli schemi sotto, … indica argomenti ripetibili e i nomi dei parametri sono segnaposto da sostituire con valori o riferimenti. I parametri facoltativi sono indicati nella descrizione.
Testi e ricerche nelle tabelle
| Inglese | Italiano | Comportamento ed esempio |
|---|---|---|
CONCAT(testo1, testo2, …) | CONCATENA(testo1, testo2, …) | Unisce uno o più testi. Per i numeri usa TEXT: non applica conversioni implicite. CONCAT("MOD-", "NR")CONCATENA("MOD-", "NR")Risultato: MOD-NR |
XLOOKUP(valore, chiavi, risultati) | CERCA.X(valore, chiavi, risultati) | Ricerca esatta, sensibile alle maiuscole. Accetta colonne nominate o array piatti della stessa lunghezza. Chiavi duplicate, corrispondenza assente o tipi diversi sono errori. Supporta solo questi tre argomenti. XLOOKUP("nero", ["nero", "bianco"], ["NR", "BI"])CERCA.X("nero", ["nero", "bianco"], ["NR", "BI"])Risultato: NR |
TEXT(numero, formato) | TESTO(numero, formato) | Converte un numero in testo decimale. Formato facoltativo: 0, 000, 0.00 (massimo 100 zeri per parte); senza formato conserva tutte le cifre. I decimali richiesti arrotondano a metà lontano da zero. Altri formati Excel non sono supportati. TEXT(5, "000")TESTO(5, "000")Risultato: 005 |
Logica e condizioni
| Inglese | Italiano | Comportamento ed esempio |
|---|---|---|
AND(a, b, …) | E(a, b, …) | Vero se tutti gli argomenti sono veri. Accetta uno o più booleani; si ferma al primo falso. AND(10 > 5, 3 < 8)E(10 > 5, 3 < 8)Risultato: true |
OR(a, b, …) | O(a, b, …) | Vero se almeno un argomento è vero. Accetta uno o più booleani; si ferma al primo vero. OR(10 < 5, 3 < 8)O(10 < 5, 3 < 8)Risultato: true |
NOT(condizione) | NON(condizione) | Inverte un valore booleano. NOT(true)NON(vero)Risultato: false |
IF(condizione, sì, no) | SE(condizione, sì, no) | Restituisce il ramo scelto dalla condizione booleana. I due rami devono avere lo stesso tipo; valuta solo quello selezionato. IF(1200 > 1000, 3, 2)SE(1200 > 1000, 3, 2)Risultato: 3 |
ISBLANK(valore) | VAL.VUOTO(valore) | Vero se un input definito è assente. Zero, false, testo vuoto e array vuoto sono valori presenti. ISBLANK(0)VAL.VUOTO(0)Risultato: false |
Arrotondamenti
| Inglese | Italiano | Comportamento ed esempio |
|---|---|---|
CEILING(numero, passo) | ARROTONDA.ECCESSO(numero, passo) | Arrotonda al multiplo superiore del passo. Alias inglese: CEIL. Numero ≥ 0; passo > 0, facoltativo (default 1). CEILING(12.3, 0.5)ARROTONDA.ECCESSO(12.3, 0.5)Risultato: 12.5 |
FLOOR(numero, passo) | ARROTONDA.DIFETTO(numero, passo) | Arrotonda al multiplo inferiore del passo. Numero ≥ 0; passo > 0, facoltativo (default 1). FLOOR(12.3, 0.5)ARROTONDA.DIFETTO(12.3, 0.5)Risultato: 12 |
ROUND(numero, cifre) | ARROTONDA(numero, cifre) | Arrotonda alle cifre decimali indicate; a metà arrotonda verso l’alto. Numero ≥ 0; cifre intere ≥ 0, facoltative (default 0). ROUND(12.345, 2)ARROTONDA(12.345, 2)Risultato: 12.35 |
MROUND(numero, multiplo) | ARROTONDA.MULTIPLO(numero, multiplo) | Arrotonda al multiplo più vicino; a metà sceglie quello superiore. Numero ≥ 0 e multiplo > 0, entrambi obbligatori. MROUND(13, 5)ARROTONDA.MULTIPLO(13, 5)Risultato: 15 |
Calcoli numerici
| Inglese | Italiano | Comportamento ed esempio |
|---|---|---|
SUM(valori…) | SOMMA(valori…) | Somma numeri e array numerici, anche annidati. Senza valori restituisce 0. SUM(10, [20, 30])SOMMA(10, [20, 30])Risultato: 60 |
MIN(valori…) | MIN(valori…) | Restituisce il numero minore. Accetta numeri e array numerici annidati; richiede almeno un numero. MIN(10, [20, 30])Risultato: 10 |
MAX(valori…) | MAX(valori…) | Restituisce il numero maggiore. Accetta numeri e array numerici annidati; richiede almeno un numero. MAX(10, [20, 30])Risultato: 30 |
ABS(numero) | ASS(numero) | Restituisce il valore assoluto di un numero. ABS(-12)ASS(-12)Risultato: 12 |
MOD(numero, divisore) | RESTO(numero, divisore) | Restituisce il resto della divisione. Numero ≥ 0 e divisore > 0. MOD(10, 3)RESTO(10, 3)Risultato: 1 |
Appartenenza agli array
| Inglese | Italiano | Comportamento ed esempio |
|---|---|---|
INCLUDES(array, valore) | CONTIENE(array, valore) | Cerca un valore scalare tra gli elementi diretti dell’array, senza conversioni di tipo né ricerca nelle sottostringhe. Non appiattisce gli array annidati. INCLUDES(["rosso", "blu"], "blu")CONTIENE(["rosso", "blu"], "blu")Risultato: true |
Tabelle dati e SKU composti
Usa il pulsante + nella barra dei fogli per aggiungere una tab libera. Rinominala finiture con doppio clic sulla tab; dal menu delle intestazioni rinomina le colonne A e B in valore e codice, entrambe Testo. Inserisci le righe nero / NR e bianco / BI. Puoi incollare più celle da un foglio di calcolo. Testi e codici non richiedono virgolette; gli zeri iniziali restano conservati.
Ogni colonna ha tipo Testo, Numero o Booleano. Le celle numeriche usano il punto decimale; quelle booleane true/false. Le celle sono libere: quelle vuote conservano la posizione. XLOOKUP ignora le coppie entrambe vuote e segnala una chiave senza risultato o viceversa. I dati sono letterali, senza formule.
Le colonne sono richiamabili da tutte le formule con finiture[valore] e finiture[codice]. Aggiungere righe estende automaticamente la ricerca. I riferimenti già compilati conservano l’identità dopo le rinomine; eliminare una colonna usata produce un errore.
XLOOKUP(finitura, finiture[valore], finiture[codice])Nel pannello di un articolo BOM scrivi un codice o una formula nello stesso campo SKU. I suggerimenti comprendono articoli e formule. Per esempio:
CONCAT("MOD-", TEXT(larghezza, "000"), "-", XLOOKUP(finitura, finiture[valore], finiture[codice]))Con larghezza 5 e finitura nero il codice è MOD-005-NR. Deve già esistere nel catalogo: descrizione, prezzo e unità di misura provengono da quell’articolo. L’anteprima nel pannello verifica il codice; quantità e misura restano campi separati. Una regola attiva con errori non produce voci parziali e impedisce la finalizzazione.
Per un riferimento singolo nel campo SKU usa =nome_opzione. La microsintassi accetta SKU:quantità:misura oppure (formula_sku):quantità:misura. Il pannello gestisce parentesi e virgolette nella lista. Una condizione come !ISBLANK(finitura) && !ISBLANK(larghezza) evita il calcolo finché mancano le scelte.
Tabelle e formule partecipano a Salva/Riapri e Annulla/Ripeti. Gli intervalli A2:A20 e i riferimenti a file Excel esterni non sono supportati.
Funzioni speciali
Queste funzioni leggono i dati del configuratore. IN_BOM mantiene lo stesso nome in italiano e inglese ed è disponibile solo nelle condizioni di price_rules, dopo il calcolo della distinta base.
IN_BOM("MOTORE")Vero se lo SKU è presente nella BOM. È la forma abbreviata di INCLUDES(skus, "MOTORE").
IN_BOM(["PANNELLO", "MOTORE"])Vero se tutti gli SKU indicati sono presenti. Equivale a IN_BOM("PANNELLO") && IN_BOM("MOTORE"). Per richiederne almeno uno, usa || tra le due chiamate.
- Uno SKU è presente se almeno una sua riga ha quantità e misura entrambe positive. Le righe a zero non contano.
- Accetta un testo o un array piatto di testi, anche da costanti:
IN_BOM(kit_standard)oppureIN_BOM(constants!B2). IN_BOM([])restituiscefalse. I duplicati non cambiano il risultato e il confronto degli SKU distingue maiuscole e minuscole.- Gli SKU letterali e quelli ricavati da costanti sono verificati rispetto al catalogo. Uno SKU inesistente genera un errore; uno SKU valido ma assente dalla BOM restituisce
false. - Non è utilizzabile nelle regole che costruiscono la BOM o filtrano le opzioni.
INCLUDES,CONTIENEe.includesrestano disponibili per gli array generici e le formule esistenti.
Operatori, alias e booleani
Le forme simboliche condividono le stesse regole delle funzioni. CEIL è un ulteriore alias di CEILING.
| Sintassi | Equivalente / traduzione | Significato |
|---|---|---|
a && b | AND(a, b) · E(a, b) | Tutte le condizioni vere. |
a || b | OR(a, b) · O(a, b) | Almeno una condizione vera. |
!a | NOT(a) · NON(a) | Negazione booleana. |
condizione ? a : b | IF(condizione, a, b) · SE(condizione, a, b) | Scelta tra due valori dello stesso tipo. |
array.includes(valore) | INCLUDES(array, valore) · CONTIENE(array, valore) | Appartenenza a un array. |
a = b · a == b | Identici nelle due lingue | Uguaglianza tra scalari dello stesso tipo. |
a <> b · a != b | Identici nelle due lingue | Disuguaglianza tra scalari dello stesso tipo. |
> · < · >= · <= | Identici nelle due lingue | Confronti tra numeri. |
+ · - · * · / | Identici nelle due lingue | Aritmetica numerica; la divisione per zero produce un errore. |
+a · -a | POS(a) · NEG(a) | Segno unario: conserva o inverte il segno del numero. |
valore ?? alternativa | Identico nelle due lingue | Usa l’alternativa solo se il valore è assente; non intercetta gli errori. I tipi devono coincidere. |
TRUE · FALSE | VERO · FALSO | Letterali booleani, senza parentesi. |
Le parentesi controllano l’ordine di valutazione. Per combinare ?? con && o ||, sono necessarie parentesi esplicite. Scrivi due confronti come larghezza > 0 && larghezza < 1000; i confronti concatenati non sono supportati.
Riferimenti e input assenti
Puoi usare il nome di un’opzione o di una costante, oppure i riferimenti options!A2 e constants!B2, anche con $. La prima riga dati è la 2. Gli intervalli come A1:A10 non sono supportati.
Un input definito ma non compilato è assente. Gestiscilo con ISBLANK / VAL.VUOTO oppure ??. Un riferimento inesistente resta un errore.
(larghezza ?? 0) > 1000Con larghezza assente restituisce false, senza modificare la configurazione.
SE(VAL.VUOTO(larghezza), 0, larghezza / 1000)Restituisce 0 se manca la larghezza; altrimenti converte il valore da millimetri a metri.
Nelle condizioni di price_rules puoi verificare la presenza di articoli con IN_BOM("MOTORE"). Sono disponibili anche le costanti e l’array skus derivato dalla distinta base. Le opzioni non sono accessibili direttamente in queste condizioni.
Gli arrotondamenti e RESTO seguono i limiti indicati sopra. Le aggregazioni accettano solo numeri; MIN([]) e MAX([]) producono un errore. Il linguaggio CPQ non include tutte le funzioni Excel: .length e INTERSECTS non sono supportati.