Pagina precedente | 1 2 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Come riportare solo alcune righe di una matrice?

Ultimo Aggiornamento: 17/09/2018 09:18
Post: 5.479
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
13/09/2018 16:47

Excel
Ciao Melissa, ho seguito la discussione, e mi fa piacere che qualcuno abbia voglia di conoscenza, non molti conoscono le potenzialità del foglio Excel, si possono fare moltissime cose, forse assurde ma interessanti.

come dico sempre, Excel lo paragono ad un sacchetto di caramelle, ne prendi una ti piace prendi un altra cambia sapore ma ti piace anche quella e continui finché non è finito il sacchetto, alla fine o hai imparato Excel oppure hai preso il Diabete.

Ciao By Sal [SM=x423051]

[Modificato da by sal 13/09/2018 16:49]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 13
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
13/09/2018 18:08

Ciao By Sal, grazie per avermi segnalato il tuo sito, mi sono appena iscritta
Post: 3.907
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
13/09/2018 18:47

Re:
Melissa2018, 13/09/2018 16.31:

Ma il foglio di calcolo che mi hai regalato tu è oramai una bomboniera, mi piace troppo!
Perchè hai deciso di sfoltire la macro? Quali vantaggi ha rispetto alla precedente? Velocità di esecuzione?
[SM=x423017]



Ciao Melissa

Intanto ti ringrazio per le belle parole e rispondo alla tua domanda.

No in termini di velocità di esecuzione non c'è nessun vantaggio ma in qualunque linguaggio di programmazione ci sono i cicli (ce ne sono di vario tipo) che servono ad eseguire un'istruzione per un certo numero di volte.

Come noterai nella macro precedente ci sono molte istruzioni .Cells che nella seconda macro sono state sostituite da un ciclo For all'interno del quale c'è un'unica istruzione).

E' un fatto di comodità di scrittura del codice.

Ad esempio se dovessi scrivere da A1 ad A100 il nome melissa dovresti
scrivere

vb
Range("A1").Value ="Melissa"
Range("A2").Value ="Melissa"
...
Range("A100").Value ="Melissa"


però dovresti scrivere ben 100 righe di codice.

Invece con un codice di questo tipo le righe da scrivere sarebbero solo 3.

vb
For i = 1 to 100
    Range("A" & i).Value = "Melissa
Next i


La i è la variabile contatore del ciclo che si incrementa di 1 ad ogni passaggio quindi l'istruzione di mezzo sarà A1, A2, A3 e così via sino ad A100.

Spero sia chiaro.

[Modificato da alfrimpa 13/09/2018 18:48]

Alfredo
Post: 14
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
13/09/2018 21:50

Alfredo, sei un grande! Sono riuscita a capire persino io che ho un sassolino al posto della testa!
Le mie parole sono sincere, una logica conseguenza della tua cortesia, pazienza e disponibilità gratuite.

P.S. Solo per curiosità, sai, ho appena realizzato il consiglio che mi avevi suggerito a proposito dell'opportunità di utilizzare tabelle e filtro. In effetti è molto utile (guadagno in velocità) più che altro perchè con tantissime righe ad ogni esecuzione della macro aspetto almeno una 15ina di secondi (forse perchè a molte celle della matrice B, generata dalla tua macro, ho collegato ulteriori formule che rallentano il tutto; ora le righe sono 17000 ma penso possano superare le 150000).
L'aspetto scomodo però, nell'opzione tabelle con filtro avanzato, è dover fare tutte le volte il copia e incolla (delle celle visibili) per creare la matrice b.
Se fosse possibile il copia e incolla automatico, dopo ogni filtro utilizzato, allora potrebbe essere un'alternativa valida.
Ma così com'è adesso, il foglio (con la tua macro) è un gioiellino!
Ti allego comunque la prova che ho fatto (un'altra nozione che ho imparato da te)
Foglio 1 matrice A, Foglio 2 Matrice B.
Sulla matrice A ho applicato il filtro di testo, all'ultima colonna, per escludere tutti i nulli.
La matrice B nel foglio 2 l'ho creata semplicemente col copia e incolla delle celle visibili.
Post: 3.908
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
13/09/2018 22:16

Ciao Melissa

L’idea del Filtro avanzato mi era venuta perchè nel tuo file le due tabelle erano entrambe sullo stesso foglio.

Il Filtro avanzato ha il limite (per me grave e mi son sempre chiesto perchè Microsoft non abbia mai posto rimedio a questa mancanza) che non può estrarre i dati su un foglio diverso da quello dove sono messi gli stessi dati.

Pertanto, se le tabelle sono su fogli diversi, hai due strade: o il copia/incolla (ma è impensabile anche se si può sempre scrivere una macro che lo faccia) o il VBA.

Quanto ai tempi di esecuzione della macro devi tener presente che Excel non è Access perchè è nato per scopi diversi.

In Access una estrazione di dati su diverse decine di migliaia di record sarebbe pressochè istantanea.

Se, come dici, pensi di arrivare nel tempo a 150.000 record la vedo piuttosto dura per Excel (macro o non macro) però non esperienze in proposito; la mia è una supposizione.

Prova a crearti con un copia/incolla una tabella di 150000 record e prova a vedere Excel come reagisce (se ti dovesse mandare a quel paese non mi meraviglierei [SM=g27828] ).

Il software che può fare bene qualunque cosa non esiste.

A proposito di VBA (visto che ti stai avvicinando a questo “magico” mondo) ti lascio un link che ti porta ad un corso fatto molto bene che se hai voglia e la cosa ti stuzzica e ti piace puoi iniziare a guardare e studiare (tanto sei giovane e dovresti essere ancora allenata [SM=g27828] )

Personalmente, sino a 3/4 anni fa non sapevo neanche dove stesse di casa il VBA.

Il link è questo

http://forum.wintricks.it/showthread.php?t=155252-vba/

e comincia ad usare il registratore di macro che, pur con tutti i suoi limiti, è un’ottima palestra per iniziare.

Scusa per il lungo “pistolotto” e fai bei sogni.
[Modificato da alfrimpa 13/09/2018 23:18]

Alfredo
Post: 3.910
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
14/09/2018 11:43

Ciao Melissa

Ho voluto fare una prova.

Ho creato una tabella dal tuo file con più di 150.000 record ed ho lanciato la macro.

Come prevedevo e temevo Excel va in crash e si blocca.

Ma pure con poco più di 10.000 record la macro impiega molti secondi ma alla fine ce la fa.

Ho importato la tabella con i 150.000 in Access ho creato una query (estrazione dati) con il criterio diverso da "nullo" sull'ultimo campo e la risposta di Access (come pensavo) è stata istantanea.

Mi dispiace dirlo ma quando la mole di dati da gestire è enorme (come nel tuo caso) Excel non è lo strumento adatto.

Non so se tu hai modo/opportunità di usare Access.

Alfredo
Post: 15
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
14/09/2018 12:07

Ciao Alfredo, ti scrivo solo che ho appena aperto per la prima volta nella mia vita Access e ho iniziato a creare il mio database [SM=x423038]
Quante cose ci sono da imparare...
Grazie anche per il link che mi hai suggerito [SM=x423065]
Post: 16
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
14/09/2018 12:11

Re:
alfrimpa, 14/09/2018 11.43:



Non so se tu hai modo/opportunità di usare Access.


Alfredo sei di una gentilezza incredibile, scusami se ti sto facendo perdere tutto questo tempo [SM=x423025]
Si, ho Access disponibile e stavo proprio iniziando a studiare l'estrazione di dati di cui hai scritto. Vediamo cosa riesco a combinare...

Post: 5.480
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
14/09/2018 12:26

Riportare righe
ciao Melissa, se la mole dei dati è enorme, puoi provare le Pivot, che facilitano il compito

io non so cosa vuoi estrarre dalla tua tabella, quali sono i parametri per i filtri o la ricerca, metti un esempio.

Ciao By Sal [SM=x423051]
[Modificato da by sal 14/09/2018 12:27]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 3.911
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
14/09/2018 12:29

E si Melissa purtroppo come ho detto prima Excel non è lo strumenti adatto a te.

Per curiosità ti allego il file di Access che ho creato che contiene una tabella (il tuo foglio con 153.000 record) ed una query per l'estrazione dati.

Quando lo hai aperto nel riquadro a sinistra fai doppio clic su Provaquery e vedrai che l'estrazione dati è istantanea.

Non so se riesco ad allegare il file sul forum che è di 31 mega casomai lo metto su Filedropper.

Per il resto non preoccuparti; io mi diverto a fare queste cose [SM=g27828]

Purtroppo ho una conoscenza assai limitata di Access.

Ti mando una FFZ mail

Alfredo
Post: 5.481
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
14/09/2018 17:29

Tabella pivot
Ciao Melissa ed Alfredo.

Hai ragione Access e molto più versatile con i database.

ma Excel fino al Milione e rotti di record, non se la cava male con le tabelle Pivot, e senza macro, basta impostare alcuni parametri.

ho preso un file Excel e caricato dal tuo Access i 153000 record su un foglio, poi ho creato una tabella pivot sui record, creandomi un nuovo foglio nel quale, visto che la prma colonna e l'ID del database e non mi serve ho preso la seconda colonna Cmp2 che credo siano i codici, portando il campo nell'area delle righe, quindi mi ha creato la base di tutti i codici che si trovano nella Cmp2, poi credo che fai il filtro dell'ultima colonna, ma posso scegliere qualsiasi altra colonna è lo stesso, quindi l'trascinata nell'aria Filtri, poi la stessa colonna l'ho portata anche nell'area Valori come vedi dall'immagini, ed ho avuto questo primo risultato



noterai che nella colonna B ci sono dei numeri sono quanti record sono presenti per ogni sigla.

poi sono andato nel Filtro in B1 aprendolo ho fatto selezionare solo "nullo" ma potevo anche selezionare un altro o diversi altri



il risultato se riscontri con la prima immagine è cambiato ti ha selezionato solo quelli contenenti "nullo" le altre sigle le ha eliminate, in questa immagine



a questo punto scegliendo la sigla e facendo doppio click sul numero corrispondente nella colonna B, mi genera il report relativo a quel codice in un nuovo foglio che posso manipolare a piacere o eliminare, come questo, diciamo una specie di Filtro avanzato su un nuovo foglio



ma le manipolazioni sono infinite con una tabella Pivot.

Fai le prove, la tabella originale non viene intaccata, solo se aggiungi o elimini record nella tabella originale devi aggiornare la pivot per incamerare le modifiche fatte.

ti allego il link al file in quanto è troppo grande

Ciao By Sal [SM=x423051]

http://www.filedropper.com/melissaaccess





[Modificato da by sal 15/09/2018 07:15]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 3.912
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
14/09/2018 19:57

Sal grazie del contributo.

Io purtroppo le pivot non le conosco proprio perché non mi sono mai entrate in testa.

Ma si possono estrarre anche tutti i record diversi da “nullo”; immagino di si.

Forse hai evitato a Melissa di dover imparare Access.

Alfredo
Post: 17
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
14/09/2018 20:35

Ragazzi, che dire, siete s-t-r-a-o-r-d-i-n-a-r-i!!!!! [SM=x423065]
Adesso dovrò studiare attentamente tutto quello che mi avete suggerito! Siete i miei eroi! Mi trovavo in un vicolo cieco e adesso so che ci sono delle soluzioni, complicate da comprendere in poco tempo per me... Ma so che ci sono, e vi ringrazio per avermele fatte scoprire.
Sono stata finora su Access anche perchè purtroppo sul foglio precedente, superate le 30000 righe ha iniziato a crashare.
Ho notato che quando la percentuale delle righine con "nullo" aumenta troppo excel si impalla e smette di funzionare.
Comunque, dopo queste ore con Mister Access, qualcosa sto realizzando.
Adesso studierò anche la tabella del Pivot di cui mi ha scritto By Sal (che ringrazio tantissimo per aver addirittura pubblicato le immagini con le istruzioni!!! [SM=x423017] ) e il nuovo file postato da Alfredo (che continua a supportarmi incredibilmente).
Senza di voi mi sarei già arresa...
Torno a studiare [SM=x423025]

Post: 5.483
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
15/09/2018 07:09

Tabella pivot
Ciao Alfredo, lo sai sono un Fan di Excel, ma Melissa non credo si fermerà ad Excel, visto che tratta elevate mole di dati, quindi Access gli sarà necessario, anche se Excel sarà più pratico da gestire.

si Alfredo tutti quelli che vuoi basta selezionarli nel filtro in B1, si può anche creare un menu veloce per i filtri per qualsiasi colonna anche più in contemporanea, un esempio



Ciao By Sal [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 18
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
16/09/2018 09:21

Buongiorno ragazzi, questo messaggio solo per condividere con voi la soddisfazione di aver realizzato ciò di cui avevo bisogno. Alla fine, complice le sicure esigenze nel prossimo futuro (una mole di dati sempre maggiore), ho optato per un database access, ed una query su un foglio excel.
Grazie a tutti gli angioletti [SM=x423056] che sono intervenuti in questo post.
La vostra pazienza, tutto il tempo dedicatomi e supporto sono stati un piacevolissimo e inaspettato regalo [SM=x423025]
Post: 3.916
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
16/09/2018 12:06

Ma questo vuol dire che non ti vedremo/sentiremo più? [SM=g27828]

Scherzi a parte qualora avessi la necessità di porre domande su Access, visto che qui non c'è apposita sezione, potresti iscriverti su Forumexcel.it dove troverai anche una specifica sezione dedicata ad Access.
[Modificato da alfrimpa 16/09/2018 12:21]

Alfredo
Post: 19
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
17/09/2018 09:18

Buongiorno Alfredo, purtroppo per voi, non vi libererete di me tanto facilmente [SM=x423038]
Vota: 15MediaObject5,002947 29
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 2 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 07:30. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com