Sostituisci il testo nelle celle - Suggerimenti per Excel

Sommario

Jean ha posto la domanda su Excel di questa settimana:

Sto cercando di convertire un listino prezzi di un fornitore in Excel per abbinare i loro codici UPC al nostro sistema di codici UPC. Il loro listino prezzi ha una colonna in Excel con una serie di numeri es. 000004560007 OPPURE cel000612004. Quello che devo fare è duplice. Devo togliere i primi tre zeri senza eliminare nessun altro 0 nella cella. Successivamente, devo aggiungere un codice di 3 cifre "upc" prima della prima cifra numerica nella cella. Questa sarà una necessità continua. Dovrò formare diverse persone per utilizzare il sistema Excel.

Sembra che Jean abbia già pensato di usare Modifica-Sostituisci per sbarazzarsi dei tre zeri. Ciò non funzionerebbe perché eseguire una sostituzione di modifica su "000004560007" causerebbe la scomparsa di entrambe le occorrenze di 000.

Per prima cosa voglio suggerire a Jean di inserire una colonna temporanea accanto ai codici prezzo correnti, scrivere una formula per eseguire la trasformazione, quindi utilizzare Modifica-Copia, Modifica-Incolla Valori speciali per copiare la formula sui codici prezzo originali.

La funzione REPLACE () scarsamente documentata farà il trucco in questo caso. Sono rimasto deluso dall'implementazione di REPLACE (). Avrei pensato che chiedesse un testo specifico da sostituire, invece chiede all'utente di capire le posizioni dei caratteri da sostituire. REPLACE sostituirà parte di una stringa di testo con una nuova stringa. I quattro argomenti che passi alla funzione sono la cella contenente il vecchio testo, la posizione del carattere nel vecchio testo che vuoi sostituire, il numero di caratteri da sostituire e il nuovo testo da usare.

La mia ipotesi semplificativa è che i tre zeri rappresentino l'inizio del codice UPC nella stringa. Pertanto, non è necessario cercare il primo carattere numerico nella cella. Una volta che la formula trova i tre zeri, può sostituire quei tre zeri con la stringa "upc".

Per trovare la posizione della prima occorrenza di "000" nel testo, dovresti utilizzare questa formula:

=FIND(A2,"000")

La formula che Jean dovrebbe inserire nella cella B2 sarebbe:

=REPLACE(A2,FIND("000",A2),3,"upc")

Il mio pensiero è che gli analisti dei prezzi evidenzino un intervallo di celle e quindi richiamino questa macro. La macro utilizzerà un ciclo con "Per ogni cella nella selezione" all'inizio. Con questo ciclo, "cella" diventa una variabile di intervallo speciale. Puoi usare cell.address o cell.value o cell.row per trovare l'indirizzo, il valore o la riga della cella corrente nel loop. Ecco la macro:

Public Sub Jean() ' This macro will replace the first occurrence of "000" ' in each selected cell with the string "upc" ' copyright 1999 www.MrExcel.com For Each cell In Selection cell.Value = Replace(cell.Value, "000", "upc", 1, 1, vbTextCompare) Next cell End Sub

Nota che questa è una macro di tipo distruttivo. Quando l'utente evidenzia un intervallo di celle ed esegue la macro, quelle celle verranno modificate. Inutile dire che si desidera testare a fondo la macro sui dati di test prima di liberarla sui dati di produzione reali. Quando ti trovi in ​​una situazione come quella di Jean in cui ti verrà costantemente richiesto di trasformare una colonna utilizzando una formula complessa, scrivere una semplice macro come quella illustrata qui può essere uno strumento efficace e che fa risparmiare tempo.

Articoli interessanti...