Eliminare colonne che contengono una parola

Anonimo
2018-10-23T20:47:43+00:00

salve a tutti, 

ho un file Excel  composto da 2000 colonne e 200 righe. Il mio obiettivo è depurare il foglio da tutte le colonne che contengono un valore, ad esempio USD. 

Ho provato il seguente ciclo for in una macro ma esegue l'operazione solo nella prima cella.

Public Sub cancella_colonne()

Dim nc As Integer

Dim i As Integer

With ActiveSheet

nc = .Range("IV1").End(xlToLeft).Column

For i = nc To 1 Step -1

If UCase(.Cells(1, i).Value) = "X" Then

.Columns(i).Delete

End If

Next

End With

End Sub

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

Risposta accettata dall'autore della domanda

Anonimo
2018-10-25T06:58:27+00:00

Mi sembra strano.

Prova in questo file ad inserire la parola USD (maiucolo o minuscono non rileva) e a cliccare sul pulsante.

Vedrai che le colonne vengono cancellate.

File test

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2018-10-24T06:11:03+00:00

Prova questo differente appriccio dove viene eseguita la ricerca di una stringa di testo (in questo caso la ricerca è sull'intero contenuto e non su una parte con l'opzione LookAt:=xlWhole) nel foglio di lavoro e nel caso venga trovato viene eliminata la colonna:

Sub EliminaColonnePerValore()

   Const sValore As String = "USD"

   Dim Risposta As Long

   Dim FindValue As Range

   Dim bFindIsNothing As Boolean

   Risposta = MsgBox("Verranno eliminate tutte le colonne che contengono " & _

                     "una cella con il valore " & sValore & "!" & vbNewLine & _

                     "Continuare?", vbYesNo + vbDefaultButton2 + vbExclamation, "Elimina Colonne")

   If Risposta = vbNo Then Exit Sub

   On Error GoTo Errore

   With Application

      .Calculation = xlCalculationManual

      .EnableEvents = False

      .ScreenUpdating = False

   End With

   With ActiveSheet

      Do

         Set FindValue = .Cells.Find(What:=sValore, _

                                     After:=.Cells(1), _

                                     LookIn:=xlValues, _

                                     LookAt:=xlWhole, _

                                     SearchOrder:=xlByRows, _

                                     SearchDirection:=xlNext, _

                                     MatchCase:=False, _

                                     SearchFormat:=False)

         bFindIsNothing = FindValue Is Nothing

         If Not bFindIsNothing Then FindValue.EntireColumn.Delete

      Loop Until bFindIsNothing

   End With

RiprendiErrore:

   With Application

      .Calculation = xlCalculationAutomatic

      .EnableEvents = True

      .ScreenUpdating = True

   End With

   Exit Sub

Errore:

   MsgBox "Si è verificato un errore!" & vbNewLine & _

          "Errore n. " & Err.Number & vbNewLine & _

          Err.Description, vbCritical, "Errore VBA"

End Sub

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

2 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2018-10-25T20:15:32+00:00

    Mi sembra strano.

    Prova in questo file ad inserire la parola USD (maiucolo o minuscono non rileva) e a cliccare sul pulsante.

    Vedrai che le colonne vengono cancellate.

    File test

    Ok funziona, avevo un problema di impostazione con le righe. Grazie mille!!!!!

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2018-10-24T13:16:12+00:00

    Grazie mille per la risposta, 

    tuttavia non funziona

    La risposta è stata utile?

    0 commenti Nessun commento