Macro excel per cancellare le colonne vuote

Anonimo
2018-03-23T18:28:16+00:00

Salve ho un file excel così formattato.

La prima riga è sempre popolata. Devo cancellare tutte le colonne che hanno dalla seconda riga un valore nullo.

In questo caso devono essere nascoste le righe F, H ed I

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

11 risposte

Ordina per: Più utili
  1. Anonimo
    2018-03-24T13:11:11+00:00

    Prima di tutto grazie per la tua disponibilità

    non viene cancellata nessuna cella vuota

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2018-03-24T09:06:52+00:00

    Scusate se non sono stato chiaro.

    In pratica ho una tabella con tantissimi dati. Dopo aver applicato un filtro ottengo come risultato una tabella con molti meno dati: ecco un esempio

    Siccome ci sono tante celle vuote, avrei bisogno di realizzare una macro, in modo tale che possa ottenere un risultato simile alla print sottostante. Ottenuta cliccando sulla cella col tasto destro del mouse "cancella contenuto" e non elimina righe. Quindi devo cancellare il contenuto delle colonne vuote compreso il titolo della colonna.

    Anche se devo dire che tu dici che cancelli il contenuto, anche se dalle immagini a me pare che le colonne siano nascoste.

    E sembrerebbe anche che delle righe siano nascoste (forse per via del filtro sulle sole BOE?).

    Non so, prova a vedere se la procedura può andar bene (rispetto alle colonne).

    ciao

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2018-03-24T08:59:45+00:00

    Prova con questa macro:

    '----

    Sub NascondiColonneVuote()

       Const sNomeFoglio As String = "Foglio1"

       Const sPrimaCella As String = "A1"

       Const iColonnaIniziale As Long = 4

       Dim Twb As Workbook

       Dim Ws As Worksheet

       Dim rPrimaCella As Range

       Dim rIntervalloCelle As Range

       Dim NumCol As Long, NumRec As Long

       Dim iCol As Long

       Set Twb = ThisWorkbook

       Set Ws = Twb.Worksheets(sNomeFoglio)

       Set rPrimaCella = Ws.Range(sPrimaCella)

       On Error GoTo Errore

       With Application

          .Calculation = xlCalculationManual

          .EnableEvents = False

          .ScreenUpdating = False

       End With

       With rPrimaCella

          With .CurrentRegion

             NumCol = .Columns.Count

             NumRec = .Rows.Count - 1

             Set rIntervalloCelle = .Resize(NumRec, NumCol).Offset(1, 0)

          End With

       End With

       With rIntervalloCelle

          For iCol = iColonnaIniziale To NumCol

             With .Columns(iCol)

                .EntireColumn.Hidden = False

                If Application.CountA(.SpecialCells(xlCellTypeVisible)) = 0 Then

                   .EntireColumn.Hidden = True

                End If

             End With

          Next iCol

       End With

    RiprendiErrore:

       With Application

          .Calculation = xlCalculationAutomatic

          .EnableEvents = True

          .ScreenUpdating = True

       End With

       Exit Sub

    Errore:

       MsgBox "Errore VBA n. " & Err.Number & vbCrLf & _

              Err.Description, vbCritical, "Errore VBA"

       Resume RiprendiErrore

    End Sub

    '---

    Qui trovi un file di esempio:

    File Esempio

    La procedura passa tutte le colonne dell'intervallo dati, a partire dalla colonna iniziale impostata con la costante iColonnaIniziale.

    Inizialmente imposta sempre la colonna visibile, poi verifica se, tramite la funzione conta.valori, le celle visibili in base al filtro applicato, sono tutte vuote.

    Se sono tutte vuote nasconde la colonna altrimenti la lascia visibile.

    Prova a vedere se con i tuoi dati funziona.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2018-03-24T08:10:53+00:00

    Scusate se non sono stato chiaro.

    In pratica ho una tabella con tantissimi dati. Dopo aver applicato un filtro ottengo come risultato una tabella con molti meno dati: ecco un esempio

    Siccome ci sono tante celle vuote, avrei bisogno di realizzare una macro, in modo tale che possa ottenere un risultato simile alla print sottostante. Ottenuta cliccando sulla cella col tasto destro del mouse "cancella contenuto" e non elimina righe. Quindi devo cancellare il contenuto delle colonne vuote compreso il titolo della colonna.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2018-03-24T07:46:47+00:00

    Ma tu vuoi che vengano NASCOSTE o ELIMINATE?

    Perché sono due azioni del tutto differenti e prima dici "Devo cancellare" ma poi dici "devono essere nascoste" (tra l'atro riferendoti alle righe e non alle colonne).

    Specifica bene quale azione vuoi venga eseguita.

    La risposta è stata utile?

    0 commenti Nessun commento