› Excel e gli applicativi Microsoft Office › Formula With
-
AutoreArticoli
-
Ciao a tutti,vorrei che da un file di svariate migliaia di righe fossero eliminate tutte quelle che nella colonna 3 non hanno il valore 61.Io ho scritto il seguente codice:
Private Sub CommandButton1_Click()
Dim numero_riga_stat0483 As Integer
Dim contatore_righe_stat0483 As Integer
Dim valore_aree As Range
Dim Renta As Integer
Renta = 61
numero_riga_stat0483 = 5'conto il numero di righe di stat0483While (Workbooks("stat0483.xls").Worksheets("Worksheet").Cells(numero_riga_stat0483, 1) <> "")
contatore_righe_stat0483 = contatore_righe_stat0483 + 1
numero_riga_stat0483 = numero_riga_stat0483 + 1
Wend'assegno alla variabile valore_aree tutti i valori contenuti nella colonna 3 dalla riga 5 all'ultima pari al valore di contatore_righe_stat0483With Workbooks("stat0483.xls").Worksheets("Worksheet")Set valore_aree = Workbooks("stat0483.xls").Worksheets("Worksheet").Range(.Cells(5, 3), .Cells(contatore_righe_stat0483, 3))
End WithNel passaggio sopra mi dà l'errore "Erroe di Runtime 91: Variabile oggetto o variabile del blocco With non impostata"'per ogni riga partendo dal fondo elimino la riga se valore_aree non è uguale a 61 (ma questa parte non l'ho ancora verificata perché mi si blocca al passaggio prima)For numero_riga_stat0483 = contatore_righe_stat0483 To 1 Step -1
Set valore_aree.Find(Cells(numero_riga_stat0483, 3)) = 61
If Not valore_aree Is Nothing Then Cells(numero_riga_stat0483, 3).EntireRow.Delete
Next numero_riga_stat0483End SubGrazie per l'aiutola prossima volta che devi inserire il codice, inseriscilo nella finestra che si apre sul pulsante code
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente?( Alan Turing)
Allegheresti il tuo file?Renderesti più semplice l'analisi.io proverei con sostituire la lineaSet valore_aree = Workbooks(“stat0483.xls”).Worksheets(“Worksheet”).Range(.Cells(5, 3), .Cells(contatore_righe_stat0483, 3))conSet valore_aree = Range(.Cells(5, 3), .Cells(contatore_righe_stat0483, 3))CiaoLucaScusa Albatros54Luca73 ho provveduto a cambiare la stringa come hai detto tu ma ora mi dice "Errore di Runtime 1004 - Errore definito dall'oggetto o dall'applicazione".Allego il file, grazieCiaoil file non è stato caricato perchè supera i limiti consentiti. Utilizza un sito tipo DropboxCiao,MarioOps, ora dovrebbe esserciAllegati:
You must be logged in to view attached files.ciaotua domandacit: vorrei che da un file di svariate migliaia di righe fossero eliminate tutte quelle che nella colonna 3 non hanno il valore 61.quindi a mio parere una sub() molto semplice e' questa[code]Sub elimina_no_61()
Dim i As Long
For i = Cells(Rows.Count, 3).End(xlUp).Row To 1 Step -1
If Cells(i, 3) <> 61 Then
Rows(i & ":" & i).Delete
End If
Next i
End Sub[/code]da inserire nel modulo del foglio in questioneciaoCiao Mister_x,mi dà errore in questa stringa[code]Rows(i & “:” & i).Delete[\code]Se metto la virgola lo risolvo ma comunque mi dà l'errore "Errore di run-time 1004"ciaonon saprei dirti il perché ti da errore in quantoe qui mi rivolgo a ( Mauro ) se puo darmi delucidazioni in quanto non riesco ad iscrivermi nel nuovo sitonon riesco a scaricare nessun allegato da visionare, prima era molto più semplice trovarlise il problema nel mio caso sara' risolto vedro' il file e ti sapro direciaoCiaoIo (usando la tua base semplificherei cosìPrivate Sub CommandButton1_Click() 'Workbooks.Open ("V:\Ambrogio\Renta\Analisi SALES vs BDG dryer\stat0483.xls") Dim numero_riga_stat0483 As Integer Dim contatore_righe_stat0483 As Integer contatore_righe_stat0483 = 0 numero_riga_stat0483 = 5 'conto il numero di righe di stat0483 While (ThisWorkbook.Worksheets("Worksheet").Cells(numero_riga_stat0483, 3) <> "") ThisWorkbook.Worksheets("Worksheet").Cells(numero_riga_stat0483, 3).Select If ThisWorkbook.Worksheets("Worksheet").Cells(numero_riga_stat0483, 3) = 61 Then ThisWorkbook.Worksheets("Worksheet").Cells(numero_riga_stat0483, 3).Select ThisWorkbook.Worksheets("Worksheet").Cells(numero_riga_stat0483, 3).EntireRow.Delete contatore_righe_stat0483 = contatore_righe_stat0483 + 1 Else numero_riga_stat0483 = numero_riga_stat0483 + 1 End If Wend ThisWorkbook.Worksheets("Worksheet").Cells(1, 1) = contatore_righe_stat0483 End Sub
Salve a tutti
@ambrovba
nel codice suggerito da Mister_x (finalmente ti si ... risente! Ciao) sostituisci quella riga con Rows(i).Delete.
@Mister_x e Luca73
a quanto ho capito il problema del richiedente è (anche) il tempo. I codici suggeriti soddisfano la richiesta ma, probabilmente, per oltre 20mila righe impiegherebbero tanto tempo. Assegnando, invece, i valori della colonna C ad un array si potrebbe fare in meno. O sbaglio qualcosa?
Ciao,
Mario
ciaociao Mario ( seguo sempre ) per la tua domanda non saprei in quanto come accennato prima in questanuova veste del forum non riesco a scaricare file allegati, anche perché prima erano ben visibili,quando tento questo procedimento mi manda alla sezione di immettere la mio nominativo o imail ela relativa password , metto quella che uso normalmente per gli altri forum e penso che in precedenzaavevo inserita questa nell'altro forum , ma mi dice pass errata , faccio la richiesta di modifica a essaarriva la imail dal sito che mi indica dove collegarmi per la modifica, mi collego , mi appare una maschera diimmissione dei dati ma alla conferma non ho nessun riscontro di questo cambio avvenutofaccio una prova di Login ma mi dice che la pass e' errataora la mia domanda e' . come fare a superare questo ostacolo???2 e' possibile scaricare o caricare un file senza fare il Login ??? come facevo in precedenza ???in attesa di rispostaciao a tuttiCiao Mister_xTiro ad indovinare: ma ti sei iscritto a questo nuovo Forum? No, te lo chiedo perchè (da quel somaro che sono) credevo che valesse la precedente iscrizione e la medesima password. Ma mi sbagliavo.Occorre iscriversi e mettere la password (va bene anche la precedente; penso che tutti usiamo la stessa password per tutti i Forum). Solo dopo potrai scaricare i file che ti interessano. I file allegati si trovano in basso sempre entro la finestra della discussione.Spero di esserti stato utile.Ciao,Mariociao Mariomi sono gia iscritto , in quanto se cerco di eseguire una nuova iscrizione, col mio nome e il mio indirizzo mailmi dice che questi e' gia presente e mi attiva ( password dimenticata )attivo questi e ricevo una mail di collegarmi per efettuare la modifica della passimmetto la nuava pass , ma quando vado a fare il Login mi dice che la pass e' errata------- questa e la mailQualcuno ha richiesto la reimpostazione della password per il seguente account.Nome del sito: Forum Excel VBANome utente: silvano montaniSe si è trattato di un errore, ignorare questa email e non accadrà nulla.Per reimpostare la tua password visita il seguente indirizzo:cambiato nome------riprovo ad esequire questi , ma gradirei che un amministratore di sistema mi dica che pass ho inseritociao da Mister_xciaofinalmente con calma sono riuscito a modificare la pass e scaricare il fileho aggiunto alcuni comandi alla sub() e sul file proposto il tempo impiegato e' stato di 105 secondiOption Explicit
Sub elimina_no_61()
Dim i As Long
Dim tempo As Double
tempo = Timer
Application.EnableEvents = False
Application.ScreenUpdating = False
For i = Cells(Rows.Count, 3).End(xlUp).Row To 1 Step -1
If Cells(i, 3) <> 61 Then
Rows(i).Delete
End If
Next i
Application.ScreenUpdating = True
Application.EnableEvents = True
MsgBox Timer - tempo
End SubciaoCiao Mister_x,
mi dà errore in questa stringa[code]
Rows(i & ":" & i).Delete
[\code]Se metto la virgola lo risolvo ma comunque mi dà l’errore “Errore di run-time 1004”Non è questione di virgola , ma sono gli apici che racchiudono i : prova a cancellarli e rifarli@oscar
per inserire il codice adopera il pulsante CODE è inserisci il codice nella finestra che ti appare dopo click su insert,
perche inserendo il codice tra i tag "code" non va bene
ciaoQual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente?( Alan Turing)
-
AutoreArticoli