di nuovo bloccato, ma stavolta la colpa è mia, il mio livello è ancora troppo basso.
Dal file di esempio allegato, devo creare 3 fogli che sono una selezione di quello che ho nel foglio principale: sorgente
Il foglio principale è un sorgente che aggiorno 2-3 volte al giorno, e non deve essere modificato.
Si aggiornano i tre file generati, quando lancio la mia macro
CRITERI DI SELEZIONE:
1) Nella colonna D, alcuni articoli inziano con 4aa altri con 4bb, devo filtrare i 4bb e non vederli in nessuno dei tre prossimi fogli e con il ciclo IF che allego, sembra funzionare.
2) creare tre nuovi foglio nel quale filtro per una tipologia
esempio solo coccodrillo, o solo tav. rosso, o solo macchina.
Le tipologie sono sempre e solo tre.
Credevo di esserci riuscito con i codice che allego, arzigogolato lo so, ma non trovato nulla di meglio che ciclare con gli "if" per tutte le tipologie che volevo escludere. E cancellare le righe una volta individuati i bersagli.
Ha funzionato per un po, poi a volte entra in loop e nulla mi muore la magia. Credo sia dovuto che aggiungo "1" alla variabile "elimina"
Pensavo di usare un
do until
ma non ho saputo implementarlo.
Ho provato una macro applicando i filtri in manuale ( le colonne son sempre quelle D ed E ) ma il numero di valori del filtro era troppo elevato nel file reale e si interrempeva la macro.
E quindi problema 2
come copio e filtro i dati della colonna E per la tipologia che mi interessa Le tipologie sono essenzialmente quattro
Parte più difficile,
3) Dopo aver generato la copia filtrata delle tre tipologie in un foglio singolo, ho necessita di dividere per la caratteristica dimensionale
nella cella E2, il prodotto "macchina rossa" ha le dimensioni 12x1
A me serve che il 12 e l'1 vengano riportati nelle due colonne adiacenti all'ultima colonna occupata, in questo caso la I e la J.
Anche qui, ho provato con " testo in colonne abbinata ad una macro", con le funzioni tronca estra destra sinistra, ma nulla, trovo sempre un errore, o non fa quello che deve su tutte le celle, o quando funziona lo fa con troppi parametri dentro formule excel che non sono in grado di tradurre in VBA, potrei anche copiare solo le celle interessate dal voglio sorgente e lasciar le formule di estrazione, ma è sempre un compromesso. ( esempio il foglio coccodrillo esempio creato per spiegare cosa devo ottenere)
come estraggo dalla colonna E i dati dimensionali in ogni singolo dei tre fogli filtrati dai punti 1 e 2?
Può aiutare che il dato dimensionale è SEMPRE il primo dato numerico dopo le lettere della descrizione?
Se io ho l'oggetto "macchina rossa che vola veloce" dopo avrò sempre un numero che è il primo dato dimensionale, separato dal secondo dato dimensionale o da una x o da una X (lettera ics minuscola o maiuscola )
Sono davvero arenato, è 4 giorni che ci provo, a raffazono e nn concludo :-(
Grazie a tutti
- Codice: Seleziona tutto
Sub tabellapiv()
Application.ScreenUpdating = False
Sheets("coccodrillo").Select
Range("A1:Z10000").Select
Selection.ClearContents
Range("A1").Select
Sheets("sorgente").Select
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("coccodrillo").Select
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
ActiveSheet.Paste
elimina = 2
ultima_riga_gc = Sheets("coccodrillo").Range("A" & Rows.Count).End(xlUp).Row
For elimina = 2 To ultima_riga_gc
If InStr(Cells(elimina, 5).Value, "sedia") Then
Cells(elimina, 5).EntireRow.Delete
elimina = elimina - 1
If Cells(elimina + 1, 5) = 0 Then Exit For
End If
Next elimina
elimina = 2
ultima_riga_gc = Sheets("coccodrillo").Range("A" & Rows.Count).End(xlUp).Row
For elimina = 2 To ultima_riga_gc
If InStr(Cells(elimina, 5).Value, "tav.") Then
Cells(elimina, 5).EntireRow.Delete
elimina = elimina - 1
If Cells(elimina + 1, 5) = 0 Then Exit For
End If
Next elimina
elimina = 2
ultima_riga_gc = Sheets("coccodrillo").Range("A" & Rows.Count).End(xlUp).Row
For elimina = 2 To ultima_riga_gc
If InStr(Cells(elimina, 4).Value, "4bb") Then
Cells(elimina, 5).EntireRow.Delete
elimina = elimina - 1
If Cells(elimina + 1, 5) = 0 Then Exit For
End If
Next elimina
elimina = 2
ultima_riga_gc = Sheets("coccodrillo").Range("A" & Rows.Count).End(xlUp).Row
For elimina = 2 To ultima_riga_gc
If InStr(Cells(elimina, 4).Value, "Q") Then
Cells(elimina, 5).EntireRow.Delete
elimina = elimina - 1
If Cells(elimina + 1, 5) = 0 Then Exit For
End If
Next elimina
End Sub
file esempio http://www.filedropper.com/esempio