Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

creare nuovo foglio da esistente ELIMINANDO valori filtrati

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

creare nuovo foglio da esistente ELIMINANDO valori filtrati

Postdi marcus69 » 15/01/20 23:58

Ciao a tutti,
Nel mio foglio magazzino ortofrutticolo

http://www.filedropper.com/esempiomag1

del 3d
viewtopic.php?f=26&t=111004&p=651967#p651967

avrei bisogno di fare una modifica:
il foglio ordine deve essere " duplicato" , e poi nella duplicazione devo vedere solo un range di date definito.

il range di date lo calcolo con il numero settimane.

quindi i miei 3 fogli esistenti sono li, ma devo crearne un quarto e un quinto in cui veo rispettivamente

nel quarto SOLO le righe di ordine della settimana corrente e successiva ( ipotizziamo sia mercoledì - devo vederegli ordini di pmeriggio-ven più tutta al settimana prossima )

Nel Quinto solo le righe di ordine della settimana corrente più 2 settimane successive.

Il motivo per cui devo fare questo è che se ho ordini a 3 mesi, il foglio ordini relaziona TUTTI gli ordini con le giacenze di magazzino e mi da negativo un articolo quando magari, lo sarebbe dopo 6 settimane.

La mia esesmoalternativa sarebbe creare le colonne giacenze del foglio ordini, aumentando le colonne : due coppie, prima coppia di colonne ordini correnti + 1 settimana, seconda coppia ordini correnti + due settimane

Non ho idea di come fa re o se ci siano altri modi per risolvere.
Pensavo anche ad un controllo data settimana, con istruzione se che annulla l'articolo

del tipo " se la data è X " setta il valore della cella Y a zero " i questo caso vien facile, aggiungo una colonna, nel foglio copiato e parametrico l'istruzione se facendo scrivere " zero " nella colonna articoli, si annulla ilc cerca verticale, e la giacenza non risente del ordini posteriori...

che ne pensate?
marcus69
Utente Junior
 
Post: 91
Iscritto il: 19/10/17 14:39

Sponsor
 

Re: creare nuovo foglio da esistente ELIMINANDO valori filtr

Postdi Anthony47 » 16/01/20 15:12

Mah... Secondo me riusciresti a fare tutto tramite formule, filtrando i risultati con il criterio della data (Somma.Più.Se consente di inserire fino a 127 criteri di filtro).

Comunque, se vuoi procedere come hai pensato allora puoi procedere con una macro autoregistrata: registrati una macro mentre diligentemente, partendo da un foglio diverso da Ordine:
-selezioni il foglio Ordine
-selezioni la colonna A e applichi un filtro per data "dopo o uguale a..." e inserisci una data a piacere e poi, usando l'opzione AND, "prima o uguale a..." inserendo una seconda data a piacere
-selezioni le colonne A:J e fai copia
-selezioni il foglio SET1, selezioni A1 e incolli con Enter
-torni su foglio Ordine
-ripeti il filtro, la copia, ma incollando poi su foglio SET2
-torni su foglio Ordini, elimini il filtro da colonna A, premi il tasto Esc
-interrompi la registrazione

Vai ora sul codice della macro cosi' registrata, e in testa aggiungi le seguenti istruzioni:
Codice: Seleziona tutto
Dim iData As Long, e1WData As Long, e2WData As Long
'
iData = CLng(Date)
e1WData = CLng(iData + 7 - Weekday(iData, 2))
e2WData = CLng(iData + 14 - Weekday(iData, 2))


Poi nel codice cerca le righe che filtrano in base alle date che hai indicato; dovresti avere 2 righe del tipo
Codice: Seleziona tutto
    ActiveSheet.Range("$A$1:$A$528").AutoFilter Field:=1, Criteria1:= _
        ">=14/01/2020", Operator:=xlAnd, Criteria2:="<=25/01/2020"
(varia a seconda delle date usate durante la registrazione della macro)

Modifica nella prima occorrenza $A$528 in $A$2000 (se avrai sempre meno di 2000 righe; eventualmente esagera)
Modifica ">=14/01/2020" in ">=" & iData
Modifica "<=25/01/2020" in "<=" & e1WData

Nella seconda occorrenza modifica allo stesso modo, salvo usare "<=" & e2WData

A questo punto, eseguendo la macro autoregistrata dovresti avere in SET1 e SET2 gli elenchi che ti servono

Per i suggerimenti su come registrare una macro: viewtopic.php?f=26&t=103893&p=622593#p622593

Per le opzioni su come eseguire piu' o meno automaticamente una macro, vedi viewtopic.php?f=26&t=103893&p=647678#p647678

Fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 17043
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: creare nuovo foglio da esistente ELIMINANDO valori filtr

Postdi marcus69 » 16/01/20 21:05

aggiornamenti , 2 buoni, 1 meno

1) buono, ho trovato dei vecchi file aziendali con le query di collegamento al database : riesco a scaricare i dati senza fare "export/import
2) buono il tuo suggerimento funziona, GRAZIE ! l ho provato su un file di test di quelli che copiavo e incollavo nel vecchio metodo

3) pessimo: la colonna data viene importata ma non formattata correttamente da EXCEL, e anche facendo una formattazione manuale dopo rimane " strana".

mi spiego, se abbiamo una colonna di date inserite ex-novo in celle, quando creiamo il filtro sulla colonna, ci viene chiese se vogliamo ordinare dal più recente al piu vecchio,
nel mio caso CON IL VECCHIO METODO EXPORT IMPORT riuscivo a farlo, con la connessione al database la query import ale date in un formato che excel non "vede" nello stesso modo, ho provato a formattare e smanettare ma non arrivo a nulla, e quando faccio l'ordinamento non è "per data " ma credo che ordini per ordine alfabetico...

la query importa la data cosi:
Cells(i, 1) = Day(rs.Fields("DATA_CONSEG_CFM")) & "/" & Month(rs.Fields("DATA_CONSEG_CFM")) & "/" & Year(rs.Fields("DATA_CONSEG_CFM"))

dove i è il numero ricorso per arrivare alla fine del file, il campo DATA_CONSEG_CFM è il nome del campo data nel DB.
Funziona, la importa, ma il problema è quello descritto

ho provato senza formattazione
Cells(i, 1) = rs.Fields("DATA_CONSEG_CFM")
ma nulla

avete un idea per cortesia di come dirgli che la data la deve vedere bene?
marcus69
Utente Junior
 
Post: 91
Iscritto il: 19/10/17 14:39

Re: creare nuovo foglio da esistente ELIMINANDO valori filtr

Postdi Anthony47 » 17/01/20 18:15

Non so rispondere ai quesiti relativi alle query.
Ma ti avverto che se la colonna con la data non contenesse un campo formattato "data" allora il risultati del filtraggio potrebbe essere imprevedibile. Riconosci un campo "Data" perche' se lo formatti come "Numero" allora la cella visualizza un numero intero (es 17-ge-2020 viene visualizzata come 43847; eventuali decimali indicano l'orario)
Se la colonna Data sui fogli creati rimane "strana" allora e' possibile formattare la colonna come "Data" appena completata il Copia /Seleziona foglio /Incolla, aggiungendo (in fase di registrazione macro): Seleziona la colonna, formatta come Data.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17043
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: creare nuovo foglio da esistente ELIMINANDO valori filtr

Postdi marcus69 » 17/01/20 22:48

per le quei ho risolto ( Santa StackOverflow)

la forma corretta per interrogare una database da excel è la seguente
Cells(i, 1) = DateValue(Mid(rs.Fields("nome_campo_DB"), 1, 10)) 'Mid(rs.Fields("nome_campo_DB"), 9, 2) & "/" & Mid(rs.Fields("nome_campo_DB"), 6, 2) & "/" & Mid(rs.Fields("nome_campo_DB"), 1, 4)

nessun' altro metodo funziona, anche importando, e formattando dopo non funziona.

Ora sono sulla via buona, ho altri guai, ma li sto risolvendo, anche tramite VBA devo dire, ( registrando e adattando )

La tua soluzione per le date è perfetta :)

a più tardi, proseguo ora...
marcus69
Utente Junior
 
Post: 91
Iscritto il: 19/10/17 14:39


Torna a Applicazioni Office Windows


Topic correlati a "creare nuovo foglio da esistente ELIMINANDO valori filtrati":


Chi c’è in linea

Visitano il forum: Nessuno e 23 ospiti