Inserire trattini tra lettere e numeri

Supponiamo che tu abbia un foglio di lavoro con molti codici prodotto nella colonna A. Questi codici sono nel formato A4, B12, AD4, ecc. A causa di un cambiamento nel modo in cui opera la tua azienda, sei obbligato a modificare tutti i codici prodotto in modo che contengano un trattino tra le lettere ei numeri.

Esistono diversi modi per eseguire questa attività. Se la struttura dei codici prodotto è coerente, inserire i trattini è un gioco da ragazzi. Ad esempio, se ci fosse sempre una singola lettera seguita da numeri, allora potresti usare una formula come questa:

=SINISTRA(A1;1) & "-" & DESTRA(A1;LUNGHEZZA(A1)-1)

oppure la più breve

=RIMPIAZZA(A1;2;;"-")

È probabile che i tuoi dati non siano strutturati, il che significa che potresti avere una o due lettere seguite da un massimo di tre cifre. Pertanto, sia A4 che QD284 sarebbero entrambi codici prodotto validi. In questo caso, una formula risolutiva richiede un po’ più di creatività.

Un modo per gestirlo è con una formula di matrice. Considera la seguente formula:

=RIMPIAZZA(A1;CONFRONTA(FALSO;VAL.ERRORE(1*STRINGA.ESTRAI(A1;RIF.RIGA(INDIRETTO("1:100"));1));0);0;"-")

Se i valori sono in A1-A10, puoi inserire questa formula in B1 e quindi copiarla nella colonna. Poiché si tratta di una formula di matrice, deve essere immessa premendo Ctrl+Maiusc+Invio. La formula trova la posizione del primo numero nella cella e inserisce un trattino prima di esso.

Si supponga, ad esempio, che la cella A1 contenga BR27. La parte più interna della formula, INDIRETTO(“1:100”), converte il testo 1:100 in un intervallo. Viene utilizzato in modo che l’inserimento o l’eliminazione di righe non influisca sulla formula. La parte successiva della formula, RIF.RIGA(INDIRETTO(“1:100”)), crea essenzialmente una matrice dei valori 1-100: 1,2,3,…,99,100. Questo è usato per agire su ogni carattere nella cella.

La parte successiva, STRINGA.ESTRAI(A1;RIF.RIGA(INDIRETTO(“1:100”));1), fa riferimento a ogni singolo carattere nella stringa. Ciò si traduce nella matrice: “B”, “R”, “2” e “7”. Moltiplicando la matrice per 1 (la parte successiva della formula) si ottiene la conversione di ciascuno dei singoli caratteri in un numero. Se il carattere non è un numero, questa conversione genera un errore. Nel caso in esempio (BR27), ciò risulta in: #VALORE, #VALORE, 2 e 7.

Il passaggio successivo consiste nell’applicare la funzione VAL.ERRORE ai risultati della moltiplicazione. Questo converte gli errori in VERO e i non errori in FALSO, ottenendo VERO, VERO, FALSO e FALSO. La funzione CONFRONTA cerca nell’array di valori VERO e FALSO una corrispondenza esatta di FALSO. In questo esempio, la funzione CONFRONTA restituisce il numero 3, poiché il primo valore FALSO si trova nella terza posizione dell’array. A questo punto, conosciamo essenzialmente la posizione del primo numero nella cella.

La funzione finale è RIMPIAZZA, che viene utilizzata per inserire effettivamente il trattino nella stringa di origine, a partire dal terzo carattere.

Come puoi vedere, la formula per eseguire la trasformazione può essere un po’ scoraggiante da decifrare. Per coloro che si sono arresi, potrebbe essere più semplice creare semplicemente una funzione definita dall’utente (UDF). La seguente macro è un esempio:

Questo contenuto è riservato agli abbonati

Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.

Se sei già abbonato Accedi per sbloccare il contenuto!

In caso contrario abbonati qui! L'abbonamento è conveniente.

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

Tags: , , , , , , , , , , , , , , , ,

Ti è stato utile?