Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[EXCELL] da tabella estrarre dati.

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

[EXCELL] da tabella estrarre dati.

Postdi sbs » 11/03/13 15:18

Non sapevo come nominare questo topic!
Vi spiego il problema:
ho un foglio excell con 62 righe e 47 colonne.
A intestazione di riga ho 61 cognomi
A intestazione di colonna ho i numeri di 45 settimane
nelle celle ho una ripetizione di luoghi (27 sedi)

Ora ho bisogno di estrarre
un foglio per sede con Intestazione di riga le settimane e nelle celle i cognomi (numero di colonne variabili da 1 a 5 a seconda delle sedi)

come posso affrontare il problema?
Ho tentato con una pivot (ma non ho trovato il modo)
Cerca orrizontale
cerca verticale
confronta
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

Sponsor
 

Re: [EXCELL] da tabella estrarre dati.

Postdi Anthony47 » 11/03/13 15:57

Quindi vorresti creare 27 fogli (uno per sede) che riportano inìA2:A46 le 45 settimane e in B2:??46 i nominativi; sei sicuro che non ti convenga avere sempre l' elenco dei 61 cognomi lasciando molte celle vuote ma potendo confrontare a colpo d' occhio gli N fogli?
In ogni caso ti chiederei di pubblicare un file di esempio da usare per sviluppo e collaudo.

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: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCELL] da tabella estrarre dati.

Postdi sbs » 11/03/13 19:55

Devo vedere immediatamente le varie sedi!
adesso non mi rendo conto ad esempio quante persone ho nella sede x la settimana y!
ESEMPIO RIDOTTO DEL FILE
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

Re: [EXCELL] da tabella estrarre dati.

Postdi Anthony47 » 12/03/13 00:55

Dissento dai termini di privacy del provider del servizio:
1-filehosting has the right to collect personal user data, process and utilize, in providing for the establishment, content or design changes to the service, and thus the related services are needed (inventory data) .
2-filehosting has the right to collect personal data on the use of the service, process and utilize, to the extent necessary to enable the user to use of services (usage data).
3-The User hereby consents to filehosting explicitly that filehosting uses its inventory data for the purposes of consulting, advertising, market research or for the customized design and development of its services (self-use by filehosting). The user can revoke this consent to filehosting with informal email. filehosting is required to confirm the withdrawal.
4-The user also agrees explicitly that by filehosting obtained inventory data and usage data may be transferred to third parties for storage, use and/or processing.

Pertanto non forniro' il mio indirizzo email e non posso scaricare il file.

Sorry...
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: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCELL] da tabella estrarre dati.

Postdi Flash30005 » 12/03/13 02:52

Nemmeno io!!!
Usa questo server host
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCELL] da tabella estrarre dati.

Postdi sbs » 12/03/13 20:09

CAMBIATO HOSTING!
File prova
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

Re: [EXCELL] da tabella estrarre dati.

Postdi Anthony47 » 13/03/13 01:28

Ho elaborato questo codice:
Codice: Seleziona tutto
Dim Sedi() As String
Option Explicit

Sub WFSede()
Dim CSede As Long, DBase As String, ColNomi As String, mySede As Range
Dim cWeek As Long, myName As String, LastR As Long, Weeks As String, I As Long
'
ReDim Sedi(1 To 100)
DBase = "base DATI" '<<< Il foglio col data base
ColNomi = "F"       '<<< La colonna con i nominativi
'
Sheets(DBase).Select
LastR = Cells(Rows.Count, ColNomi).End(xlUp).Row
Weeks = Range(Cells(1, ColNomi).Offset(0, 2), Cells(1, ColNomi).End(xlToRight)).Address
For Each mySede In Range(Weeks).Offset(1, 0).Resize(LastR - 1)
    If mySede.Value <> "" Then
        If newSede(mySede) Then
            On Error Resume Next
            Sheets(mySede.Value).Select
            On Error GoTo 0
            If ActiveSheet.Name <> mySede.Value Then
                Sheets.Add after:=Sheets(ThisWorkbook.Worksheets.Count)
                ActiveSheet.Name = mySede.Value
            End If
            Sheets(mySede.Value).Cells.Clear
            Range("A2").Resize(Range(Weeks).Count, 1) = Application.WorksheetFunction.Transpose(Sheets(DBase).Range(Weeks).Value)
            CSede = CSede + 1
            Sedi(CSede) = mySede.Value
        End If
        Sheets(mySede.Value).Select
        With Sheets(DBase)
            cWeek = .Cells(1, mySede.Column): myName = .Cells(mySede.Row, ColNomi).Value & " " & .Cells(mySede.Row, ColNomi).Offset(0, 1).Value
            Cells(Application.Match(cWeek, Range("A1:A1000"), 0), Columns.Count).End(xlToLeft).Offset(0, 1) = myName
        End With
    End If
Next mySede
For I = 1 To UBound(Sedi, 1)
If Sedi(I) <> "" Then
    Sheets(Sedi(I)).Cells.EntireColumn.AutoFit
End If
Next I
End Sub

Function newSede(ByVal WSede As String) As Boolean
Dim pippo
pippo = Application.Match(WSede, Sedi, 0)
If IsError(pippo) Then newSede = True Else newSede = False
End Function

Da excel premi Alt-F11 per aprire l' editor delle macro; Menu /Inserisci /Modulo; copi il codice e incolli nel frame vuoto di dx.
Controlla le due istruzioni marcate <<< (le ho impostate secondo il modello che hai pubblicato, eventualmente aggiusta), poi esegui la macro WFSede:
-da excel, Alt-F8; scegli WFSede dall' elenco che ti propone, premi Esegui.

Oppure puoi disegnare un pulsante e associarci questa macro, in modo che bastera' premere il pulsante per avviare la macro.

La macro crea tanti fogli quante sono le "sedi" in elenco, e su questi fogli (che vengono inizialmente azzerati SENZA NESSUN PREAVVISO) si crea l' elenco desiderato.
Non mi sono applicato nella formattazione del risultato, quello e' solo un gioco di pazienza che puoi realizzare con una macro autoregistrata.

Prova e fai sapere, 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: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCELL] da tabella estrarre dati.

Postdi sbs » 13/03/13 11:06

Ok fatto!

" Sheets(mySede.Value).Cells.Clear" errore runtime 9 indice non incluso.

" ActiveSheet.Name = mySede.Value"
RUNTIME 1004 impossibile rinominare il foglio con il nome ....

Sembra che però abbia estratto il tutto.

Adesso controllo
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

Re: [EXCELL] da tabella estrarre dati.

Postdi sbs » 13/03/13 11:17

controllato sui è fermato a circa metà del file (riga 32) ma non ho visto "limiti" nello script!
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

Re: [EXCELL] da tabella estrarre dati.

Postdi Anthony47 » 13/03/13 12:56

Credo che si tratti di "Sedi" la cui denominazione contiene caratteri inammissibili come nome foglio (es \ / * ? [ ]); se e' cosi' la cosa piu' semplice e' eliminare quei caratteri (es facendo un Trova /Sostituisci)

Se in con questo spunto non risolvi allora ripubblica un file di esempio e vedremo come fare.

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: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCELL] da tabella estrarre dati.

Postdi sbs » 14/03/13 08:27

Fatto, puliti i nomi dai \ / - _ + sostituiti con spazio.
Una curiosità , mi sembra che lo script legga per riga giusto? quando trova una sede nuova genera un foglio, vi incolla "trasponi" le settimane e scrive il contenuto della colonna nominativi corrispondente e poi prosegue Giusto?
Se così si ferma davanti ad una sede composta da una sola parola non complessa.
dubbio
A) Ha un numero definito di fogli che può aprire?
B) Come mai vi sono dei fogli non "nominizzati"? (foglio 26, 27, 28, 1, 2, 3, 4, 5,)

PS le sedi sono in tutto 24, i partecipanti sono 59 la sede più "cliccata" ha 45 richiedenti quella meno 0!

Una curiosità si è generato un foglio senza nome che contiene in una settimana un partecipante (ho controllato quel partecipante quella settimana non ha nulla!!!)
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

Re: [EXCELL] da tabella estrarre dati.

Postdi sbs » 14/03/13 09:33

PS nuovo problema!!
In quel file di excell le date espresse come ggg gg/mm/aaaa sono diventato "testo", importandole in access da dove lavoro non riesco a gestirle come date non riesco a convertirle!!!
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25

Re: [EXCELL] da tabella estrarre dati.

Postdi Anthony47 » 14/03/13 10:05

Nel file in mio possesso non ci sono date, quindi non so interpretare il tuo ultimo messaggio.
Per quanto riguarda tutto il resto, probabilmente la cosa piu' semplice e' che prima di generare nuovi "fogli Sede" vengono cancellati tutti quelli esistenti salvo quelli cruciali; per questo ti suggerisco nominare tutti i tuoi fogli con il prefisso "base" (es base DATI, base Foglio1, base pippo, etc) e poi in testa alla tua macro inserisci queste istruzioni che ELIMINANO TUTTI I FOGLI che non cominciano per "base" (il prefisso e' impostato nella riga marcata <<<):
Codice: Seleziona tutto
ShKeep = "base"    '<<< Il "prefisso" dei fogli da mantenere (almeno 3 caratteri)
rispo = MsgBox("Vuoi cancellare tutti i fogli il cui nome non inizia con " & ShKeep & "?" & vbCrLf & _
    "Premi SI per confermare, premi NO per interrompere il processo", vbYesNo + vbCritical)
If rispo <> vbYes Then Exit Sub
If Len(ShKeep) < 3 Then Exit Sub
Application.DisplayAlerts = False
For I = ThisWorkbook.Worksheets.Count To 1 Step -1
    If Len(Sheets(I).Name) > 3 Then
        If UCase(Left(Sheets(I).Name, Len(ShKeep))) <> UCase(ShKeep) Then
            Sheets(I).Delete
        End If
    End If
Next I
Application.DisplayAlerts = False

Va messo subito dopo Sub WFSede().
Quanto sopra ha una sua logica, che pero' e' pericolosa (rischio di cancellare per distrazione fogli invece necessari); per questo prima di attuarla valuta bene se e' idonea ai tuoi bisogni e al tuo processo, e in ogni caso fai prima due copie di backup del tuo file...
Se dopo questa pulizia totale continui a vedere cose che non quadrano ne parleremo.

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: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCELL] da tabella estrarre dati.

Postdi sbs » 14/03/13 12:05

Per le date è l'altra "tabella" dove dalle settimane si passa ai giorni.

ho però risolto tognindo con sostituisci lunedì martedì ecc!

Adesso provo e ti dico!
Avatar utente
sbs
Utente Junior
 
Post: 96
Iscritto il: 18/09/10 11:25


Torna a Applicazioni Office Windows


Topic correlati a "[EXCELL] da tabella estrarre dati.":


Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti