+ Rispondi al Thread
Pagina 3 di 3 primaprima 123
Visualizzazione dei risultati da 21 a 24 su 24

Discussione: Come elimino in automatico tramite macro alcune colonne?

  1. #21
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,476
    Blogs
    5
    Il thread viene riaperto perché GiuseppeMN possa dare una risposta conclusiva.

    Spero che littlesaint prenda atto che in questo forum le regole si rispettano.
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  2. #22
    GiuseppeMN non è in linea Scribacchino
    Post
    759
    Ringrazio sinceramente AntonioG;
    per avermi dato la possibilità di poter rispondere in modo conclusivo.

    Buona giornata, littlesaint;
    vorrei poter rispondere brevemente alla Tua affermazione:
    E quindi l'unica macro possibile è quella che ho proposto io?
    con il massimo rispetto nei confronti del Lavoro altrui, direi di no.
    Vorrei proporti un Codice del tipo:
    codice:
    Sub Elimina()
    Dim i As Integer
    Dim x As Byte
        For i = 2 To 4668
                For x = 3 To 6
                    If Cells(i, x).Value <> Range("G" & i).Value Then Cells(i, x).ClearContents
                Next x
        Next i
    End Sub
    altrettanto funzionale ma più compatto.

    Questo a beneficio, oltre che alla Tua personale informazione, anche degli altri Utenti di Forum che potrebbero trovarsi a dover affrontare situazioni analoghe.

    Non posso negarti che mi sono sentito un po’ “punto nel vivo” ed è per questa ragione che ho chiesto la possibilità di puntualizzare che esistono altre soluzioni; peraltro, molto probabilmente quella da me proposta non è l'ottimale, ma è quella che sono riuscito a sviluppare.

    Se vorrai continuare a frequentare questo Forum credo sarai il benvenuto, ma nel rispetto delle regole.

    A disposizione, a questo punto, su questo argomento, solo con messaggi privati.

    Ti auguro una buona giornata e un buon lavoro.

    Con amicizia.

    Giuseppe

  3. #23
    littlesaint non è in linea Novello
    Post
    27
    Ti ringrazio Giuseppe..purtroppo però il tuo codice non funziona.. elimina tutte le colonne delle risposte, invece che lasciare la colonna con la risposta giusta.
    L'altro codice invece funziona...

    Mi spiace, effettivamente è più compatta ma non va.

    riporto nuovamente il codice che funziona

    codice:
    Option Explicit 
    Sub Elimina() 
    Dim i As Integer 
    For i = 2 To 4668 
       If Range("G" & i) = Range("C1") Then 
          Range("D" & i).Value = "" 
          Range("E" & i).Value = "" 
          Range("F" & i).Value = "" 
          Range("G" & i).Value = "" 
       End If 
       If Range("G" & i) = Range("D1") Then 
          Range("C" & i).Value = "" 
          Range("E" & i).Value = "" 
          Range("F" & i).Value = "" 
          Range("G" & i).Value = "" 
       End If 
       If Range("G" & i) = Range("E1") Then 
          Range("C" & i).Value = "" 
          Range("D" & i).Value = "" 
          Range("F" & i).Value = "" 
          Range("G" & i).Value = "" 
       End If 
       If Range("G" & i) = Range("F1") Then 
          Range("C" & i).Value = "" 
          Range("D" & i).Value = "" 
          Range("E" & i).Value = "" 
          Range("G" & i).Value = "" 
       End If 
    Next 
    End Sub

  4. #24
    GiuseppeMN non è in linea Scribacchino
    Post
    759
    Forse non ho capito la tua richiesta dall'inizio, se è così mi scuso; la richiesta iniziale era:
    Ho un file di Excel denominato "materie.xls" composto da un unico foglio, 4668 righe ed 8 colonne.
    Nelle colonne 3(C) 4(D) 5(E) 6(F) ho delle possibili risposte alla domanda che sta nella colonna 2(B).
    Nella colonna 7(G) ho indicato qual'è la risposta esatta alla domanda, ci sarà quindi a volte indicato "A", a volte "C" etc.
    Vorrei creare una macro che lasci per ogni riga solamente la colonna con la risposta esatta, altrimenti dovrei fare il lavoro a mano per quasi 5000 righe ...
    Ora, se analizziamo la Macro:
    codice:
    Sub Elimina() 
    Dim i As Integer 
    For i = 2 To 4668 
       If Range("G" & i) = Range("C1") Then 
          Range("D" & i).Value = "" 
          Range("E" & i).Value = "" 
          Range("F" & i).Value = "" 
          Range("G" & i).Value = "" 
       End If 
       If Range("G" & i) = Range("D1") Then 
          Range("C" & i).Value = "" 
          Range("E" & i).Value = "" 
          Range("F" & i).Value = "" 
          Range("G" & i).Value = "" 
       End If 
       If Range("G" & i) = Range("E1") Then 
          Range("C" & i).Value = "" 
          Range("D" & i).Value = "" 
          Range("F" & i).Value = "" 
          Range("G" & i).Value = "" 
       End If 
       If Range("G" & i) = Range("F1") Then 
          Range("C" & i).Value = "" 
          Range("D" & i).Value = "" 
          Range("E" & i).Value = "" 
          Range("G" & i).Value = "" 
       End If 
    Next 
    End Sub
    è proprio in questa che viene cancellato anche il contenuto della cella della colonna "G" (Range("G" & i).Value = "").

    Nel codice che ti è stato proposto in questo Forum:
    codice:
    Sub Elimina()
    Dim i As Integer
    Dim x As Byte
        For i = 2 To 4668
                For x = 3 To 6
                    If Cells(i, x).Value <> Range("G" & i).Value Then Cells(i, x).ClearContents
                Next x
        Next i
    End Sub
    vengono cancellati i valori incongruenti ma il valore della cella della colonna "G" non viene assolutamente cancellato.
    D'altro canto, se analizziamo il codice, il ciclo For x, verifica i valori delle Celle delle colonne "C", "D", "E" e "F" ("3", "4", "5" e "6") con il valore contenuto nella cella della colonna "G" cancellando i valori incongruenti, ma il valore della cella della colonna "G", che contiene la risposta esatta alla domanda, non verrà mai cancellato (la colonna "G" è la "7").

    Sicuro di aver testato correttamente i due Codici?

+ Rispondi al Thread
Pagina 3 di 3 primaprima 123

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi