Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

esportare dati da una tabella e incolonnarli

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

esportare dati da una tabella e incolonnarli

Postdi matzap » 07/09/13 10:41

Ciao,
ho una tabella di dati ai quali devo dare una veste grafica diversa.
vi posto un file di esempio:
http://rapidshare.com/files/2000890118/ ... licare.xls

il primo passo è quello di selezionare correttamente tutte le righe in cui compare lo stesso nome e gia sono in difficoltà, una volta selezionate, dovrei correttamente accodarle in basso
all'interno del file c'è una macro che dovrebbe selezionare tutte le righe con lo stesso nome, ma non va molto bene dato che non sono molto pratico di cicli DO....

mi aiutate
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27

Sponsor
 

Re: esportare dati da una tabella e incolonnarli

Postdi Anthony47 » 07/09/13 14:38

Perdona, dovresti spiegare quali sono, nel file allegato, i dati di partenza e quali quelli da creare; non escludo che questo si possa dedurre da una macro che "quella cosa" non la fa, ma per il mutuo benessere suggerisco che sia tu a spiegare.

Ciao, ti aspettiamo.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: esportare dati da una tabella e incolonnarli

Postdi matzap » 07/09/13 15:57

ok, pensavo di aver rinominato i fogli del file....
i dati di partenza sono nel foglio "report"
quelli di arrivo nel "Foglio4".
1) da report dovrei selezionare tutte le date (riga5) e incollarle nel folgio4 in colonna (colonnaA);
2) dalla colonnaB, selezionare il primo nome e incollarlo in tutte le righe in cui compare la data
3) a partire dalla colonnaB, selezionare tutte le righe che in cui compare lo stesso nome( esempio nel file: selezionare da B6 a AJ9)
e incollarle a fianco delle date sul foglio4
4) ripetere tutto questo per tutti i nomi della tabella in Report.
quello che vorrei ottenere è un elenco tipo quello del Foglio4.

si capisce? :-? :neutral:
intanto grazie, come sempre
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27

Re: esportare dati da una tabella e incolonnarli

Postdi Anthony47 » 08/09/13 00:50

Hummm...
Questo mi sembra il classico lavoro inutile; sono infatti convinto che quel report sia stato preparato partendo da dati analitici delle timbrature giornaliere dei singoli dipendenti aventi l' aspetto esattamente simile ai dati che vuoi ricreare...

Il report inoltre e pieno di grossolane inesattezze
-vedasi Entrate e Uscite talvolta invertite
-vedasi dati scritti su tre righe + totale invece di 2+totale, es i dati di Gianluca e Andrea
-vedasi come esempio la totale "sconfusione" delle timbrature di Francesco e Vincenzo nella prima settimana (vedi "associazioni ragionevoli" in marrone nell' immagine rispetto a quella a caso nel report)

Ti chiederei quindi di verificare nella tua organizzazione se quanto da me insinuato sia reale o solo immaginario e se la trasposizione che devi fare e' realmente come l' hai descritta (quindi ad esempio, vedi Diego in data 19/1, una riga che in due colonne adiacenti della stessa riga datata 19/1 riporta "6:00 u" e poi "21:48 e") oppure un dato piu' elementare che riporta ogni timbratura su una riga (quindi, nell' esempio di prima, una riga Diego 19/1 "6:00 u", una riga Diego 19/1 "21:48 e"; nella riga prima ci sarebbe Diego 18/1 "21:47 e" e nella riga dopo ci sarebbe Diego 20/1 "06:03 u") in modo tale che poi, associando in modo sequenziale le "E=entrata" con le "U=uscita", si possano ricostruire i reali turni lavorativi e la loro durata.

Ecco alcuni delle grossolane inesattezze:
Immagine

Uploaded with ImageShack.us

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: esportare dati da una tabella e incolonnarli

Postdi matzap » 08/09/13 07:47

Buongiorno Anthony,
si in effetti ci sono diversi timbrature che potrebbero sembrare errori, ma lavorando anche su turni di notte pò capitare di avre tre timbrature nello steso giorno. noltre qualcuno fa ance turni giornalieri con timbrature un intormno alle 8.00 di mattina o anche alle 7.00.
dovrei avere 5 tipi di turni:
t1: 06.00-14.00
t2: 14.00-22.00
t3: 22.00-06.00
g1:07.00-15.00
g2:08.00-16.00
Comunque quello che dovrei fare è proprio determinare il turno per oguno di essi.
Perciò, andrebbe bene, e forse meglio, avere il dato elementare e una timbratura su ogni riga come dici tu.
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27

Re: esportare dati da una tabella e incolonnarli

Postdi matzap » 10/09/13 13:59

Ciao Anthony,
sono riuscito a creare qualcosa.
http://rapidshare.com/files/238255119/r ... 0nuovo.xls
nel file sul primo foglio c'è un tastino che fa partire una macro.
alla fine nel foglio "Analisi", ottengo
una pivot dove nome per nome ci sono le timbrature della giornata.
ora nelle colonne adiacenti dovrei determinare il turno di lavoro in base ai turni indicate nelle celle L e M dello stesso foglio.
ovviamente ad esempio il turnista del 1 turni (6-14) entrerà alla 5:50 e uscirà alle14:25.
puoi darmi una mano su come individuare il turno esatto e magari cancellare gli errori? ( ad esempio una tibmbratura di uscita al posto di una entrata o due timbrature consecutive a distanza di uno o due secondi?

P.S. mia moglie mi pressa! :P
grazie
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27

Re: esportare dati da una tabella e incolonnarli

Postdi Anthony47 » 11/09/13 01:24

Ho guardato il tuo nuovo file, ma non conoscendo il processo tuo completo non sono in grado di capire quanto hai fatto.
Mi limito pertanto a riprendere quanto era stato detto prima, cioe' che l' obiettivo era quello di ricostruire i turni di lavoro partendo dalla tabella REPORT.
Per questo ho elaborato questa macro, che ricrea l' elenco delle timbrature, in ordine di Dipendente, Data e Orario.
Codice: Seleziona tutto
Sub creatimbrat()
Dim DBSh As String, Stamp0 As String, YY As Long, XX As Long, Tipo As String
Dim LastDt As Long, LastB As Long, NewCL As Long, OutSh As String

DBSh = "REPORT"     '<< Il foglio con il report di partenza
Stamp0 = "E5"       '<< La prima cella con la data
Tipo = "D"          '<< La colonna con Rilev /Totale
OutSh = "Foglio1"   '<< Il foglio in cui sara' creato il report; deve gia' esistere
'
Sheets(DBSh).Select
LastB = Cells(Rows.Count, "B").End(xlUp).Row
LastDt = Range(Stamp0).End(xlToRight).Column
'
Sheets(OutSh).Range("A:G").ClearContents
Sheets(OutSh).Range("A1:G1").Value = Array("Nome", "Data", "Orario", "E/U", "SeqErr", "LenghtErr", "StartErr")
For YY = Range(Stamp0).Row + 1 To LastB
    If Cells(YY, Tipo) = "Rilev." Then
        For XX = Range(Stamp0).Column To LastDt
            If Cells(YY, XX) <> "" Then
                NewCL = Sheets(OutSh).Cells(Rows.Count, 1).End(xlUp).Row + 1
                Sheets(OutSh).Cells(NewCL, 1) = Cells(YY, 2)
                Sheets(OutSh).Cells(NewCL, 2) = DateValue(Cells(Range(Stamp0).Row, XX).Value)
                Sheets(OutSh).Cells(NewCL, 3) = TimeValue(Left(Cells(YY, XX).Value, 5))
                Sheets(OutSh).Cells(NewCL, 4) = Right(Cells(YY, XX).Value, 1)
                Sheets(OutSh).Cells(NewCL, 5) = "=IF(AND(RC[-1]=R[-1]C[-1],RC[-4]=R[-1]C[-4]),1,0)"
                Sheets(OutSh).Cells(NewCL, 6) = "=IF(AND(RC[-5]=R[-1]C[-5],RC[-6]=""u""),IF((RC[-4]+RC[-3]-R[-1]C[-4]-R[-1]C[-3])>TIMEVALUE(""15:00""),1,0),"""")"
                Sheets(OutSh).Cells(NewCL, 7) = "=IF(RC[-6]<>R[-1]C[-6],IF(RC[-3]=""u"",1,0),"""")"
           
            End If
        Next XX
    End If

Next YY

Sheets(OutSh).Select
LastB = Cells(Rows.Count, 1).End(xlUp).Row

Columns("A:G").Select
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Key:=Range("A2:A" & LastB _
    ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveSheet.Sort.SortFields.Add Key:=Range("B2:B" & LastB _
    ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveSheet.Sort.SortFields.Add Key:=Range("C2:C" & LastB _
    ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveSheet.Sort
    .SetRange Range("A1:G" & LastB)
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
'
    Columns("E:G").EntireColumn.Select
    Selection.Style = "Comma"
    Selection.NumberFormat = "_-* #,##0_-;-* #,##0_-;_-* ""-""??_-;_-@_-"
Range("A1").Select
End Sub


Il risultato e' come da immagine:
Immagine

Uploaded with ImageShack.us
Le colonne Data e Orario sono delle vere date e veri orari; in colonna D indico se si tratta di Entrato oppure Uscita.
In colonna E-F-G ho calcolato delle condizioni di errore:
-SeqError indica se E ed U non si susseguono alternandosi
-LenghtError indica se la durata complessiva, calcolata alla data/ora di uscita, e' superiore a 15 ore
-StartErr indica che per una certa persona le timbrature non cominciano con una E

Questi errori vanno gestiti a occhio e a mano, identificando il perche' del flag e correggendo i dati in colonna A:D (ma se la macro viene rieseguita le modifiche vengono tutte annullate, perche' vengono ripristinati i dati presenti sul foglio REPORT), oppure direttamente su foglio Report.
Ad esempio, guardando i dati di Andrea (che mostrano dei SeqErr), e' facile dedurre che il poveretto e' stato costretto a fare quasi per tutto il mese un doppio turno e nella confusione ha sbagliato spesso la timbratura dopo le prime otto ore (stranamente non e' andato peggiorando man mano che lavorava 16 ore al giorno per varie settimane...); per cui i suoi orari vanno modificati da 21:58e-5:57e-6:00u-14:00u a 21:58e-5:57U-6:00e-14:00u

Partendo da queste timbrature non dovrebbe essere difficile ricreare il calendario di turni.

Pero' ti faccio notare che non hai risposto al mio invito a verificare che l' elenco delle timbrature, in formato di "elenco" (come quello ricreato), sia gia' esistente all' interno della tua organizzazione; e se ti dicono che non esiste chiedigli come hanno creato il foglio Report.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: esportare dati da una tabella e incolonnarli

Postdi matzap » 12/09/13 11:29

Ciao Anthony,
la tua macro funziona benissimo,
grazie.
è molto più snella e veloce della mia. la studierò con attenzione per capire cosa fa e soprattutto studiare le istruzioni che non conocsco.

Se avessi avuto le timbrature in colonna sarebbe stato tutto miù facile ma:
non è la mia azienda ma di mia moglie ( nel senso che lavora li!) :)
i dati vengono estratti da un gestionale in rete da cui lei può estrarre solo questa tabella. :(
l'ufficio di egstione è nazionale e se ti da retta lo fa con tempi molto molto lunghi :diavolo:

perciò grazie ancora
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27


Torna a Applicazioni Office Windows


Topic correlati a "esportare dati da una tabella e incolonnarli":


Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti