Excel: unire 8 colonne in una sola senza sovrascrivere — come far funzionare davvero “Salta celle vuote”

Excel non “salta” i vuoti quando i vuoti non sono veri vuoti ma stringhe "" restituite da una formula. In questa guida trovi metodi pratici (manuali, formula unica, VBA e Power Query) per unire fino a 8 colonne di codici in una sola, evitando sovrascritture e refusi.

Indice

Scenario reale: perché Incolla speciale → Salta celle vuote non funziona

Hai otto colonne che in ogni riga cercano parole‑chiave e, se trovate, restituiscono un codice; altrimenti restituiscono una stringa vuota. Un esempio tipico:

=SE(VAL.NUMERO(TROVA("hg"; BL3)); "HG"; "")

Con circa 3.000 righe, l’idea era accodare/riunire i risultati in un’unica colonna usando Copia → Incolla speciale → Salta celle vuote. Peccato che Excel non salti affatto quelle che “sembrano” vuote: ISBLANK() restituisce FALSO se la cella contiene una formula, e la stringa "" non è un vero “vuoto” per Excel. Risultato: valori sovrascritti.

Come Excel interpreta “vuoto”, stringa vuota, e perché ti riguarda

  • Cella vuota reale: non contiene nulla. È ciò che serve a “Salta celle vuote”.
  • Stringa vuota "": è un contenuto (testo a lunghezza zero). Per Excel non è “assenza di contenuto”.
  • ISBLANK(A1): vero solo se A1 è davvero vuota (nessuna formula).
  • CONTA.VUOTE(): conta anche le stringhe vuote come “vuoti logici” (utile in reportistica, ma non per l’incolla con “Salta vuoti”).
  • Regola chiave: una formula non può “cancellare” una cella; può solo restituire un valore (incluso ""). Per ottenere un vuoto reale serve un’azione manuale o una macro.

Soluzioni collaudate (confronto rapido)

#StrategiaCome funzionaVantaggiLimiti / Caveat
1Trasformare i “vuoti” in veri vuoti (manuale)1) Seleziona l’intervallo
2) Trova & Seleziona → Trova, lascia “Trova” vuoto, Cerca in: Valori, Trova tutto
3) Ctrl+A → chiudi la finestra
4) Premi Canc per eliminare i contenuti
Celle davvero vuote → “Salta celle vuote” ora funzionaOperazione ripetitiva; da rifare per ogni blocco di colonne
2Convertire prima a valoriCopia → Incolla speciale → Valori sulla stessa colonna, poi applica il metodo 1Le formule non “ricompaiono” al ricalcoloPerdi le formule (ok se il calcolo è concluso)
3Macro VBAScansiona l’area; se cell.Value="" allora cell.ClearContents; opzionale: reinserisce formule da un archivioAutomatizza su 3.000 righe × 8 colonneRichiede abilitare macro; file .xlsm o Personal.xlsb
4Evitare colonne intermedie (formula “tutto‑in‑uno”)Uso di LET, TEXTJOIN, IF/IFS, XLOOKUP o una mappa codici; niente copia/incollaNiente “Salta vuoti”, niente macroRichiede Excel 365 / 2021 per alcune funzioni dinamiche
5Power QueryImporti la tabella, aggiungi colonne condizionali, combini e ricarichiProcesso pulito, ripetibile, documentabileCurva di apprendimento; disponibile da Excel 2016+

Percorso consigliato (rapido e pragmatico)

  1. Chiudi i calcoli: se non devi più aggiornare i risultati, converti le otto colonne a valori (Copia → Incolla speciale → Valori).
  2. Pulisci i falsi vuoti: usa il metodo “Trova tutto → Canc” oppure la macro qui sotto per ottenere veri vuoti.
  3. Unisci: Copia ogni colonna e incolla nella colonna finale con Incolla speciale → Salta celle vuote.
  4. Versione da consegna: salva una copia “pulita” senza macro (formato .xlsx).

Metodo manuale in dettaglio (affidabile e senza macro)

Passo A — Congela il risultato in valori

  1. Seleziona la prima colonna di codici (es. da C3:C3002).
  2. Copia (Ctrl+C).
  3. Incolla speciale → Valori (icona “123”). La colonna ora contiene valori (inclusi testi vuoti), non più formule.
  4. Ripeti per le altre 7 colonne.

Passo B — Trasforma i testi vuoti in vuoti reali

Hai due opzioni, scegli quella che preferisci.

  • Opzione 1: Trova tutto → Canc
    1. Seleziona l’intervallo (le otto colonne).
    2. Home → Trova & Seleziona → Trova (o Ctrl+F), lascia “Trova” vuoto, clic su Opzioni e imposta Cerca in: Valori.
    3. Trova tuttoCtrl+A per selezionare tutte le occorrenze → Chiudi.
    4. Premi Canc. Le celle diventano davvero vuote.
  • Opzione 2: Filtro “(Vuote)”
    1. Applica il Filtro alla riga di intestazione.
    2. Per ogni colonna: apri il menu filtro → seleziona (Vuote) → seleziona le celle visibili → Canc.

Passo C — Incolla con “Salta celle vuote”

  1. Copia la prima colonna di codici → Incolla nella colonna destinazione.
  2. Per le colonne successive: Incolla speciale → Salta celle vuote. Solo i valori non-vuoti andranno a riempire i buchi, senza sovrascrivere quanto già presente.

Tip di verifica: prima di procedere, prova su una copia del file. Inserisci una colonna di controllo con =LUNGHEZZA(D3): 0 indica cella vuota reale; >0 indica contenuto (anche una stringa vuota trasformata in altro valore).

Soluzione automatica: macro VBA per “svuotare davvero” le celle con ""

Se devi ripetere spesso l’operazione su migliaia di righe, la macro seguente pulisce un’area selezionata rimuovendo i falsi vuoti ("") ma lascia intatti gli altri valori.

' Modulo standard (Inserisci → Modulo). Salva come .xlsm.
Option Explicit

Sub ClearPseudoBlanks()
Dim rng As Range, c As Range
Dim calc As XlCalculation
On Error Resume Next
Set rng = Application.InputBox("Seleziona l'intervallo da pulire", Type:=8)
On Error GoTo 0
If rng Is Nothing Then Exit Sub
```
Application.ScreenUpdating = False
calc = Application.Calculation
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

For Each c In rng.Cells
    ' Cancella solo le celle che contengono una stringa vuota
    If c.Value = "" Then
        c.ClearContents
    End If
Next c

Application.EnableEvents = True
Application.Calculation = calc
Application.ScreenUpdating = True
```
End Sub

Uso: Alt+F8ClearPseudoBlanks → seleziona l’area (le otto colonne) → OK. Poi incolla con Salta celle vuote.

Variante: conserva un archivio delle formule

Se vuoi poter ripristinare velocemente le formule originarie dopo la pulizia, archivia i modelli in celle nascoste o in un foglio “ArchivioFormule” e usa una seconda macro per reinserirle dove ti servono. In alternativa, assegna Nomi definiti (es. FormulaCodiceHG) alle formule “tipo” per reinserirle all’occorrenza.

Soluzione senza copia/incolla: una sola formula che fa tutto

Se hai Excel 365/2021, puoi evitare del tutto l’operazione di incolla. Di seguito tre ricette, a seconda di ciò che vuoi ottenere nella colonna finale.

Caso 1 — Vuoi concatenare tutti i codici presenti sulla riga (ignorando i vuoti)

Supponi che le otto colonne di codici siano C:J. La formula è sorprendentemente semplice:

=TESTO.UNISCI(""; VERO; C3:J3)

Per Excel in inglese: =TEXTJOIN("", TRUE, C3:J3). Il parametro “ignora vuoti” fa sì che né le celle vuote né le stringhe "" vengano concatenate.

Caso 2 — Vuoi il primo codice non vuoto da sinistra

Questa è l’equivalente “coalesce” tra colonne, utile se cada riga deve avere un solo codice finale (priorità da sinistra a destra).

=LET(v; C3:J3; SE.ERRORE(INDICE(FILTRO(v; v<>""); 1); ""))

In inglese: =LET(v, C3:J3, IFERROR(INDEX(FILTER(v, v<>""), 1), "")).

Caso 3 — Mappa chiavi → codici (eviti otto colonne intermedie)

Metti in un piccolo elenco (due colonne) le coppie chiave da cercare e codice da emettere, ad esempio in un intervallo chiamato Mappa con colonne Chiave e Codice. Poi, per ciascuna riga del testo di partenza (es. BL3), usa:

=TESTO.UNISCI(""; VERO; SE(VAL.NUMERO(TROVA(Mappa[Chiave]; BL3)); Mappa[Codice]; ""))

Questa formula genera direttamente il risultato, senza creare colonne “HG”, “BM”, “JRL”, ecc. Se una riga contiene più chiavi, concatenerà i relativi codici in ordine di elenco.

Nota separatori: se in Excel vedi errore, potrebbe dipendere dal separatore di elenco (; vs ,). Sostituisci coerentemente tutti i punti‑e‑virgola con virgole (o viceversa) in base alle impostazioni locali.

Power Query: processo ripetibile, documentato e “a prova di mano”

Power Query (scheda Dati → Recupera e trasforma) è ideale se questo flusso ti serve ogni mese o su file diversi. Concetto:

  1. Importa la tabella dati.
  2. Aggiungi colonne condizionali o una colonna personalizzata che calcoli i codici.
  3. Sostituisci le stringhe vuote con valori null.
  4. Combina le otto colonne in un’unica colonna, ignorando i null.
  5. Carica il risultato in Excel.

Esempio di logica (M) che unisce le colonne C1:C8 in “Codice”:

let
    Fonte = Excel.CurrentWorkbook(){[Name="TabellaDati"]}[Content],
    // Se le colonne contengono stringhe vuote, trasformale in null
    VuotiComeNull = Table.ReplaceValue(Fonte, "", null, Replacer.ReplaceValue, {"C1","C2","C3","C4","C5","C6","C7","C8"}),
    // Crea una lista dei valori di riga e rimuovi i null
    CodiceUnito = Table.AddColumn(VuotiComeNull, "Codice", each
        Text.Combine(
            List.RemoveNulls(
                Record.FieldValues(
                    Record.SelectFields(_, {"C1","C2","C3","C4","C5","C6","C7","C8"})
                )
            ), ""
        ), type text),
    // (Opzionale) Rimuovi le colonne originali
    Risultato = Table.RemoveColumns(CodiceUnito, {"C1","C2","C3","C4","C5","C6","C7","C8"})
in
    Risultato

Vantaggi: flusso ripetibile con un clic su Aggiorna, zero macro, tracciabilità delle trasformazioni.

Diagnosi e controllo qualità

Prima di incollare (o quando dubiti del risultato), usa questa mini‑checklist:

  • Vuoto reale? =LUNGHEZZA(A1)=0 è vero sia per celle vuote sia per "". Usa =VAL.VUOTO(A1) per solo celle senza contenuto.
  • Formula o valore? =E.FORMULA(A1) ti dice se la cella contiene una formula.
  • Conta dei buchi: =CONTA.VUOTE(C3:J3) aiuta a capire quanto “rumore” hai per riga.
  • Dupliche: se più colonne possono emettere lo stesso codice, usa UNICI() prima di TESTO.UNISCI(): =LET(v; C3:J3; TESTO.UNISCI(""; VERO; UNICI(FILTRO(v; v<>""))))

Quando scegliere l’una o l’altra strada

  • Una tantum su un file: converti a valori → “Trova tutto → Canc” → “Salta celle vuote”. È il più veloce.
  • File ricorrenti ma senza IT: formula “tutto‑in‑uno” con LET/TESTO.UNISCI. Niente macro, bassa manutenzione.
  • Processo periodico con più origini: Power Query. Porti a casa ripetibilità e log.
  • Molti file, molte tabelle: macro VBA (anche in Personal.xlsb) per dare il “colpo di scopa” ai falsi vuoti.

Best practice per evitare di ricaderci

  1. Decidi l’output finale (un solo codice o più codici concatenati) prima di progettare le formule: cambierà drasticamente la tua strategia.
  2. Evita il pattern “se non trovato → "" nelle colonne intermedie quando sai che poi userai “Salta celle vuote”. Valuta direttamente il coalesce con formula finale.
  3. Usa nomi definiti per formule ripetute (es. CodiceHG(BL3) con LAMBDA) per semplificare il debug.
  4. Documenta la mappa chiavi → codici in una tabella a due colonne. Puoi così spostarti da otto formule a una sola con TESTO.UNISCI + TROVA.
  5. Salva versioni: tieni un .xlsx pulito da consegnare e un .xlsm di lavoro con macro e formule complete.

FAQ essenziali

“Salta celle vuote” non dovrebbe ignorare anche ""?

No. Quell’opzione non incolla solo quando la cella sorgente è realmente vuota. Una formula che restituisce "" produce un valore testuale (lunghezza zero) che viene incollato e può sovrascrivere il contenuto destinazione.

CONTA.VUOTE() considera "" come vuoto. Perché non funziona uguale?

Perché contare e incollare saltando sono processi diversi. CONTA.VUOTE tratta i testi vuoti come vuoti per comodità analitica; l’incolla speciale richiede l’assenza totale di contenuto nella sorgente.

Esiste una funzione “NULL()” in Excel?

No. Le formule non possono eliminare il contenuto di una cella: possono solo scriverne uno. Per svuotare davvero una cella serve un’azione dell’utente (Canc), una macro (ClearContents) o una trasformazione esterna (Power Query).

Uso Mac o Excel web: posso applicare le stesse tecniche?

Sì. I concetti sono identici. Le scorciatoie e i menu possono cambiare (es. su Mac Cmd al posto di Ctrl), ma “Valori”, “Trova tutto → Canc” e “Salta celle vuote” esistono anche lì. Power Query è disponibile su Excel 365 per Mac (anteprime mediante Get Data), con alcune differenze di connettori.

Esempi pronti da incollare

Otto formule “cerca e restituisci codice”

Schema generico per una colonna intermediaria:

=SE(VAL.NUMERO(TROVA("chiave"; [@Testo])); "CODICE"; "")

Una sola formula “unione codici” da colonne C:J

=TESTO.UNISCI(""; VERO; C3:J3)

Una sola formula “primo codice da sinistra”

=LET(v; C3:J3; SE.ERRORE(INDICE(FILTRO(v; v<>""); 1); ""))

Mappa chiavi‑codici (senza colonne intermedie)

=TESTO.UNISCI(""; VERO; SE(VAL.NUMERO(TROVA(Mappa[Chiave]; BL3)); Mappa[Codice]; ""))

Controlli finali prima di consegnare

  • Convalida: aggiungi un conteggio dei codici per riga =LUNGHEZZA(CodiceFinale). Valori anomali (0 o molto alti) puntano subito eventuali problemi.
  • Spazi fantasma: se alcuni codici provengono da testi rumorosi, applica ANNULLA.SPAZI() nella catena di calcolo.
  • Ordine dei codici: se serve un ordine specifico (es. HG prima di BM), imposta l’ordine nella mappa o nell’ordine delle colonne usate da TESTO.UNISCI.
  • Univocità: se lo stesso codice può comparire più volte, passa per UNICI() come mostrato sopra.

Riepilogo tecnico (per chi deve motivare la scelta)

  • Una cella con formula che restituisce "" non è vuota: contiene testo a lunghezza zero.
  • Trova tutto → Canc o una macro .ClearContents trasformano quei “finti vuoti” in vuoti reali.
  • “Salta celle vuote” si basa sull’assenza completa di contenuto nella sorgente.
  • Se puoi, elimina il problema alla radice: crea direttamente la colonna finale con TESTO.UNISCI/FILTRO o con Power Query.

Checklist operativa in 2 minuti

  1. Blocca i risultati: Incolla speciale → Valori su ogni colonna codice.
  2. Pulisci: Trova tutto → Canc (o macro) per ottenere veri vuoti.
  3. Unisci: incolla le colonne nella colonna finale con Salta celle vuote.
  4. Verifica: lunghezza > 0 dove ti aspetti un codice; 0 dove non deve esserci nulla.
  5. Salva la versione “pulita” .xlsx da consegnare.

Appendice: macro bonus per sostituire le stringhe vuote su aree enormi

Se l’area è molto grande, puoi filtrare rapidamente solo le celle formula e ridurre le iterazioni:

Sub ClearPseudoBlanks_Fast()
    Dim rng As Range, area As Range, f As Range
    On Error Resume Next
    Set rng = Application.InputBox("Seleziona l'intervallo", Type:=8)
    On Error GoTo 0
    If rng Is Nothing Then Exit Sub
```
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

'Considera solo le celle con formula
On Error Resume Next
Set area = rng.SpecialCells(xlCellTypeFormulas)
On Error GoTo 0
If Not area Is Nothing Then
    For Each f In area
        If f.Value = "" Then f.ClearContents
    Next f
End If

Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
```
End Sub

Conclusione

Il comportamento di Excel è coerente: “Salta celle vuote” richiede vuoti veri, non stringhe vuote. Sapendo questo, puoi scegliere l’approccio migliore per la tua situazione: pulizia manuale o macro se vuoi mantenere il flusso attuale, oppure un design di formula/Power Query che elimina del tutto la necessità di incollare. In tutti i casi, con i passaggi e gli esempi qui sopra ottieni una colonna finale corretta e stabile, senza sovrascritture né sorprese.


Indice