Condividi:        

[ Excel ]: estrarre dati da un elenco e filtrarli...

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

[ Excel ]: estrarre dati da un elenco e filtrarli...

Postdi Estrudi » 29/09/06 10:37

Intanto premetto che sono nuovo del Forum e spero di trovare aiuto in tutti voi, quindi grazie in anticipo a chiunque vorrà aiutarmi.

Il problema è questo:
ho un elenco con di nominativi a cui sono legati dei valori (es data, compagnia assicuratrice, infortunio si/no, note, etc....) che mi funziona come database ed in cui continuo ad inserire nominativi.....
Da questo, vorrei estrapolare i nominativi (con tutti i dati legati nella stessa riga) che soddisfano determinati requisiti (in particolare, per compagnia assicuratrice), premetto inoltre che l'elenco prevede circa 50 nominativi (ad oggi) e circa 30 compagnie assicurative.

Avrei bisogno inoltre di poter estrapolare i dati e poterli stampare raggruppati per compagnie e separati da almeno 4 o 5 righe di spazio.
Inoltre, dovrò anche estrapolare tutto il databse e poterlo stampare in ordine alfabetico dei nominativi, ma vorrei evitare di utilizzare il foglio del database per poterlo utilizzare solo come strumento d'inserimento dati.

Premetto che ho provato con l'importazione dei dati tramite odc esterno e inserendoli in fogli singoli (uno per compagnia) filtrando il database importato con i filtri automatici..., ma così facendo incappo in 2 inconvenienti che vorrei evitare, ovvero:

1) per quanto riguarda la stampa, il risultato è che ho un foglio per ogni compagnia ma (come dicevo prima) lo spreco di carta è disumano...

2) l'importazione dei dati mediante odc esterno, è limitante l'addove dovessi spostare e/o rinominare il file database.xls, requisito (quest'ultimo) fondamentale in quanto lo stesso file dovrà necessariamente essere modificato in altri computer e/o spostato/copiato tramite PENDRIVE USB...

So che la spiegazione è un pò articolata ma sono a disposizione per chiarimenti.....
P.S.: per ragioni di Privacy non posso inviare (a parte che non saprei nemmeno farlo - sono neofita dei forum) il database.xls posso pero inviare il file con i campi (vuoti) impostato.....


GRAZIE E A PRESTO....
Estrudi
Newbie
 
Post: 5
Iscritto il: 29/09/06 10:12

Sponsor
 

Postdi Anthony47 » 30/09/06 19:20

Ciao Estrudi, benvenuto nel forum.
La prima cosa, "estrapolare i nominativi (con tutti i dati legati nella stessa riga) che soddisfano determinati requisiti" io la farei con il filtro automatico (selezioni tutte le colonne che ti interessano, Menu ->Dati ->Filtro ->Filtro automatico). Cosi' potrai filtrare manualmente per ognuno dei criteri (vai sulla freccina in testa alla colonna e scegli un criterio; scegli eventualmente altri criteri; per rivedere tutto: Menu ->Dati ->Filtro ->Mostra tutto); prova e facci sapere se e' sufficiente.

La stampa io la farei via macro excel; se mi dai il tracciato record (intestazione colonne di excel) penso di poterti proporre qualcosa.

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

Postdi Estrudi » 02/10/06 08:23

Grazie per avermi risposto Anthony47.

vorrei inviarti il file database.xls con i campi ovviamente vuoti.....
ma non so come fare....

.... tramite messaggio privato è possibile?????

.... ora ci provo ma se non riesco mi potresti spiegare come fare???

GRAZIE 1000
Estrudi
Newbie
 
Post: 5
Iscritto il: 29/09/06 10:12

Postdi Anthony47 » 02/10/06 10:21

Puoi caricare il tuo file su http://rapidshare.de/ (opzione upload); poi posta il riferimento che il sistema ti segnala.

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

Postdi Estrudi » 02/10/06 10:36

il riferimento che devo "postare" qual'è???
il link generato o quella serie di numeri che sono sotto al link stesso????

ed inoltre... (sono nuovo dei forum e non conosco il gergo utilizato) postare che significa copiare e incollare qualche cosa all'interno del box per il messaggio???

comunque io adesso incollo (o posto...) il link e spero che vada a buon fine.

http://rapidshare.de/files/35195541/DATABASE_VUOTO.xls
Estrudi
Newbie
 
Post: 5
Iscritto il: 29/09/06 10:12

Postdi Anthony47 » 02/10/06 22:24

Ciao Estrudi,
Credo che tu abbia fatto tutto bene, ma io non sono riuscito a scaricare il file; credo che sia un problema tra me e rapidshare (un po’ mi dice “invalid session", un po’ mi dice che sono gia’ in sessione da un altro IP address). Se puoi, invialo via mail: ti ho mandato il mio indirizzo via messaggio privato.

Se ti incuriosisce il gergo dei forum, allora guarda http://it.wikipedia.org/wiki/Forum , http://it.wikipedia.org/wiki/Topic e http://it.wikipedia.org/wiki/Post

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

Postdi Anthony47 » 03/10/06 16:57

Ciao Estrudi,
ho ricevuto il file e procederei in questo modo:
Crea un foglio (Inserisci ->Foglio di lavoro) a cui assegni il nome Print (doppio click sul tab del nome, digita il nuovo nome).
Apri il VBA editor (tramite <Alt>F11); guarda se nel frame di Progetto (la finestrella a sx) c' e' gia' una cartelletta "Moduli" (sotto il nome del tuo file e dei suoi Fogli); se c' e' gia' (cioe' hai gia' delle macro), apri Modulo1 e incollaci la macro che che indico sotto; se non c' e', allora fai Menu ->Inserisci ->Modulo che ti crea Modulo1.

La macro da usare:
Codice: Seleziona tutto
Sub PrePrint()
'parametri chiave
ColSoc = "C"        '<< Colonna Societa'
PrimaDati = 2       '<< Prima riga di dati
Spazio = 2          '<< N° di interlinee al cambio Societa'
ColonneDati = "A:F" '<< .. come da nome
'
'
PrimaCo = ColSoc & PrimaDati
Sheets("Print").Select
Cells.Select
Selection.Clear
Sheets("Database").Select
Range(ColonneDati).Copy
Sheets("Print").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
'Ordina per Compagnia/Assicurato/Data
Columns(ColonneDati).Select
Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:=Range("A2") _
        , Order2:=xlAscending, Key3:=Range("B2"), Order3:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
        xlSortNormal
Range("A1").Select
'Formatta per spaziature
LastRow = Range(ColSoc & 65536).End(xlUp).Row
OldCo = Range(PrimaCo).Value
I = 0
Cicla:
Range(PrimaCo).Offset(I, 0).Select
CurrCo = ActiveCell.Value
If OldCo <> CurrCo Then
  If CurrCo <> "" Then
    CurRiga = ActiveCell.Row
    Rows(CurRiga & ":" & (CurRiga + Spazio - 1)).Select
    Selection.Insert Shift:=xlDown
    OldCo = CurrCo
    I = I + Spazio
    LastRow = LastRow + Spazio
  End If
End If
I = I + 1
If I <= LastRow - PrimaDati Then GoTo Cicla

End Sub


Eventualmente assegnagli un tasto di scelta rapida (es. <Contr><Maiusc>p) in modo da poterla avviare piu’ comodamente: Menu ->Strumenti ->Macro ->Macro; quindi seleziona PrePrint dall’ elenco, premi Opzioni, e nell’ area “tasto di scelta rapida” digita il carattere P (in maiuscolo); chiudi con Ok e poi chiudi la finestrella “macro” con <Esc> o premi sulla x in alto.

Particolarita’:
in testa alla macro puoi modificare alcuni parametri per adattarsi a formati diversi da quelli che hai messo sul modello vuoto e per cambiare la spaziatura al cambio della Societa’ assicuratrice; ora e’ settata a 2 linee vuote, se vuoi cambia la riga Spazio = 2 in Spazio = 3 o quello che preferisci.

Uso:
Lancia la macro (es tramite tasto di scelta rapida); essa azzera il foglio Print, poi vi copia il database dal foglio Database, lo ordina per Compagnia/Assicurato/Data, poi esamina riga per riga e se cambia la societa’ aggiunge la spaziatura.

Ciao, dicci come funziona per te.

E il "filtro automatico" lo hai usato?

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

Postdi Estrudi » 03/10/06 17:46

:D :D :D ....BINGO.... :D :D :D


SONO STATO CHIARO???????

GRAZIE 1000

SE POSSO RICAMBIARE IO SO UN PO DI COSE SU CAD (AutoCAD 2006) E RENDERING (CINEMA 4D)

E FOTORITOCCO (PHOTOSHOP CS)

NON ESITARE....
Estrudi
Newbie
 
Post: 5
Iscritto il: 29/09/06 10:12

Postdi Anthony47 » 04/10/06 00:08

Un Utente soddistatto del Forum, bene.

Come "penitenza" potresti ogni tanto dare un' occhiata nel forum "Audio/Video e masterizzazione" e vedere se la tua esperienza puo' aiutare qualcuno.

Alla prossima!
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi Estrudi » 04/10/06 09:52

Contaci.......

ieri ho fatto visionare il file al "committente" (mio suocero) ed entusiasta mi ha anche detto che sarebbe necessaria una modifica....
...mi ha fatto cadere le braccia....

1 perchè non si accontenta mai....
2 perchè non si è reso conto che il lavoro lo hai fatto tu per mio conto...

In sostanza, credo di aver capito che nell'estrapolazione dei dati sara necessario intervenire in modo da accorpare alcune compagnie assicuratrici perché (fondendsi e/o attuando delle temporanee associazioni) hanno la stessa sede d'intervento e in definitiva dovrò farle comparire insieme anche se non sono in ordine alfabetico.

Ora credo che con le macro sia possibile basta sapere quali sono le compagnie che devo accorpare.

Quindi se non ti dispiace, mi farò vivo quando avrà (mio suocero) le idee più chiare e mi dirà quali compagnie accorpare.

Io nel frattempo mi adopererò per imparare (tramite tutorial e/o guide) l'utilizzo delle macro.

Grazie ancora e a presto
Estrudi
Newbie
 
Post: 5
Iscritto il: 29/09/06 10:12


Torna a Applicazioni Office Windows


Topic correlati a "[ Excel ]: estrarre dati da un elenco e filtrarli...":


Chi c’è in linea

Visitano il forum: Nessuno e 63 ospiti