Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Trasponi dati automatico se rispettate condizioni

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

Re: Trasponi dati automatico se rispettate condizioni

Postdi pany221 » 27/05/15 08:46

Ciao...ti ringrazio davvero per il lavoro fatto!

C'è un piccolo problema...non riesco ad aprile il file che mi hai mandato, per via dell'estensione XLSM.
Non è che per caso riesci a mandarmelo con un'altra estensione?
pany221
Utente Junior
 
Post: 43
Iscritto il: 06/05/15 10:08

Sponsor
 

Re: Trasponi dati automatico se rispettate condizioni

Postdi pany221 » 27/05/15 14:54

se mi dici in che foglio mettere il pulsante per la macro posso provare a farla andare
pany221
Utente Junior
 
Post: 43
Iscritto il: 06/05/15 10:08

Re: Trasponi dati automatico se rispettate condizioni

Postdi wallace&gromit » 27/05/15 21:08

hai risolto il problema del xlsm?
devi per forza aprirlo in quel formato per attivare la macro.
È indifferente dove piazzi il pulsante: l'importante è che il tuo file sia sempre impostato allo stesso modo, visto che la macro è scritta in funzione dei fogli e delle colonne che mi hai fornito nell'esempio.
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1420
Iscritto il: 16/01/12 14:21

Re: Trasponi dati automatico se rispettate condizioni

Postdi Anthony47 » 27/05/15 23:06

Se pany221 ha la versione XL2003 o inferiore e non ha installato Office Compatibility Pack (vedi https://www.microsoft.com/it-it/downloa ... .aspx?id=3 ) allora potrebbe non aprire i file ".xlsm". Tuttavia puo' copiare la macro e inserirla nel suo "VBAProject", non mi pare che ci siano istruzioni non compatibili con le vecchie versioni.

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

Re: Trasponi dati automatico se rispettate condizioni

Postdi pany221 » 28/05/15 08:49

La macro funziona ma solo nel file di prova...in quello originario (che è molto grande) mi da alcuni errori!

Vi allego il file originario, se poteste valutarlo e vedere dove sta l'errore ve ne sarei davvero grata!
pany221
Utente Junior
 
Post: 43
Iscritto il: 06/05/15 10:08

Re: Trasponi dati automatico se rispettate condizioni

Postdi pany221 » 28/05/15 08:52

pany221
Utente Junior
 
Post: 43
Iscritto il: 06/05/15 10:08

Re: Trasponi dati automatico se rispettate condizioni

Postdi wallace&gromit » 28/05/15 11:04

sto cercando di elaborare il file ma è un mostro di dimensioni spropositate.
E comunque sei incappata nell'errore che ti avevo segnalato: le colonne sono diverse (AE invece di AH).
Non mi spiego ancora perché il file è così grande, però una differenza è ovviamente dovuta al fatto che io avevo incollato solo valori mentre tu hai una serie di formule.
Magari è il caso di rendere tutto passando dalle formule alle macro e avere file più leggeri contenti solo dati.
Appena riesco a manipolare il file ti faccio una proposta in tal senso.
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1420
Iscritto il: 16/01/12 14:21

Re: Trasponi dati automatico se rispettate condizioni

Postdi pany221 » 28/05/15 11:08

Sei davvero gentilissimo!

Grazie...
pany221
Utente Junior
 
Post: 43
Iscritto il: 06/05/15 10:08

Re: Trasponi dati automatico se rispettate condizioni

Postdi wallace&gromit » 28/05/15 15:09

ti aggiorno su cosa ho elaborato:
la macro precedente andava a contare i valori in colonna A e poi li estraeva in colonna C, ho corretto questo lavorando sempre in colonna C.
Per evitare problemi con la colonna AH ho anche apportato delle modifiche. Ora può essere qualsiasi colonna, basta che sia sempre l'ultima a destra contenente dati.
Ecco il nuovo codice:
Codice: Seleziona tutto
Sub Trasponi()
    Application.ScreenUpdating = False
    Dim Ws1 As Worksheet
    Set Ws1 = Worksheets("Periodo di interesse")
    Dim Ws2 As Worksheet
    Set Ws2 = Worksheets("Analisi preliminari")
    UR1 = Ws1.Cells(Rows.Count, 3).End(xlUp).Row
    UC1 = Ws1.Cells(1, Columns.Count).End(xlToLeft).Column
    UR2 = Ws2.Cells(Rows.Count, 1).End(xlUp).Row
    Ws2.Range("C3:XFD" & UR2).Clear
    For RR2 = 3 To UR2
    Rif = Ws2.Range("A" & RR2)
    Conta = 1
        For RR1 = 3 To UR1
        If Ws1.Range("C" & RR1) = Rif Then
             Ws2.Range("B1").Offset(RR2 - 1, Conta) = Ws1.Range("A1").Offset(RR1 - 1, UC1 - 1)
             Conta = Conta + 1
        End If
        Next RR1
    Next RR2
End Sub
per il "peso" del file ho provato a copiare solo dati, come nel file che allego. Un po' si alleggerisce, ma non poi così tanto, probabilmente il santo non vale la candela di quella macro che intendevo fare (magari la faccio lo stesso se ho tempo).

Ecco il file:
http://www.filedropper.com/esempiopupilperrichiestamacrosolodati

La colonna AH contiene molti dati "FALSO", è un problema? Verifica i dati di partenza o la formula che deve esservi contenuta, magari ho sbagliato io qualcosa.
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1420
Iscritto il: 16/01/12 14:21

Re: Trasponi dati automatico se rispettate condizioni

Postdi pany221 » 03/06/15 09:05

quanto ci mette la macro a trasporre i dati???

quando la faccio andare ci mette un sacco e exel si impalla...sarà un problema del mio exel?
pany221
Utente Junior
 
Post: 43
Iscritto il: 06/05/15 10:08

Re: Trasponi dati automatico se rispettate condizioni

Postdi Anthony47 » 03/06/15 14:49

Questa macro dovrebbe essere sostanzialmente piu' veloce della precedente:
Codice: Seleziona tutto
Sub Trasponi3()
Dim myMatch, RR1 As Long, UR1 As Long, UR2 As Long, UC2 As Long, VArrIn, VArrAH, ArrOut(), MArea As Range
Dim Conta As Long, mConta As Long
'
mytim = Timer
Application.ScreenUpdating = False
Dim Ws1 As Worksheet
Set Ws1 = Worksheets("Periodo di interesse")
Dim Ws2 As Worksheet
Set Ws2 = Worksheets("Analisi preliminari")
UR1 = Ws1.Cells(Rows.Count, 3).End(xlUp).Row
UC1 = Ws1.Cells(1, Columns.Count).End(xlToLeft).Column
UR2 = Ws2.Cells(Rows.Count, 1).End(xlUp).Row
'
ReDim ArrOut(3 To UR2, 1 To 5000)
VArrIn = Ws1.Range("C3").Resize(UR1 + 2, 1).Value
VArrAH = Ws1.Range("AH3").Resize(UR1 + 2, 1).Value
'
Ws2.Range("C3:XFD" & UR2).Clear
Set MArea = Ws2.Range("A1").Resize(UR2 + 5, 1)
Conta = 1
For RR1 = LBound(VArrIn, 1) To UBound(VArrIn, 1) - 1
'DoEvents
    myMatch = Application.Match(VArrIn(RR1, 1), MArea, False)
    If Not IsError(myMatch) Then
        ArrOut(myMatch, Conta) = VArrAH(RR1, 1)
        If VArrIn(RR1, 1) <> VArrIn(RR1 + 1, 1) Then Conta = 1 Else Conta = Conta + 1
        If Conta > mConta Then mConta = Conta
    End If
Next RR1
Ws2.Range("C3").Resize(UR2, mConta).Value = ArrOut
Application.ScreenUpdating = True
MsgBox ("Completato in (Sec): " & Format(Timer - mytim, "0.00"))
End Sub

Al momento considera, nel foglio di Output, max 5000 colonne di dati; se e' un problema si puo' inserire un controllo per allargare all'occorrenza il numero di colonne.

Non ho seguito la discussione, quindi non sono certo di aver realizzato quanto richiesto da pany221; insomma dovete fare un collaudo critico.

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

Re: Trasponi dati automatico se rispettate condizioni

Postdi Anthony47 » 03/06/15 21:22

Ho dimenticato di scrivere che la macro presuppone che i dati di partenza (foglio Periodo di interesse) siano ordinati per TRIAL_LABEL crescente, come sono nel file pubblicato.
Se non e' possibile garantire questo allora bisognera' modificare la macro introducendo un leggero degrado prestazionale.

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

Re: Trasponi dati automatico se rispettate condizioni

Postdi wallace&gromit » 05/06/15 15:43

Grande Anthony,
si passa dalla mia macro, che impiegava circa 146 sec alla tua, 2:21 sec!

Comunque secondo me il problema è sempre ancora la dimensione del file e penso che sia possibile ridurla drasticamente.
Per esempio, nel foglio "Periodo di interesse": le colonne E e J sono ripetute e la AH, che è quella che poi viene ripresa ha una variazione minima con l'introduzione di qualche "FALSO".
Nelle colonne da R a Y si fa tutto un giro per tornare esattamente a R (mi sembra tutto inutile).
La colonna B estrae il valore del Trial, ma poi non viene mai utilizzato.
Potrebbe servire nel caso in cui la definizione di "PRE", "DURING" e "POST" sia legata in modo semplice al numero di trial (p.e. tutti quelli fino a 65 sono sempre PRE, ecc.). A questo punto potresti sostituire il cerca.vert con una funzione SE() molto più snella.

Infine segnalo che le formule in P3 e Q3 sono matriciali in O3 no; uniformandola alle altre il valore cambia!
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1420
Iscritto il: 16/01/12 14:21

Re: Trasponi dati automatico se rispettate condizioni

Postdi Anthony47 » 05/06/15 22:53

Sul file non ho fatto commenti, mi pare che si tratti di dati importati quindi non so se l' utente e' libero di modificarne la struttura dei dati a piacere. Mi sono limitato a cercare un algoritmo che velocizzasse il calcolo dei risultati, con l' aiuto di matrici di appoggio in modo da limitare l'accesso ai dati nel formato Excel, che e' alquanto lento.

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

Re: Trasponi dati automatico se rispettate condizioni

Postdi pany221 » 08/06/15 09:38

ringrazio davvero entrambe per l'aiuto!!!

sto lavorando sul file per cercare di renderlo più leggero come mi avete suggerito...

grazie mille
pany221
Utente Junior
 
Post: 43
Iscritto il: 06/05/15 10:08

Re: Trasponi dati automatico se rispettate condizioni

Postdi pany221 » 09/06/15 16:01

Ciao,
avete per caso indicazioni su come ridurre le dimensioni di questo file?


Ho evidenziato in verde i valori riportati (copiati e incollati dal file originario quindi che non si possono modificare), il resto è possibile modificarlo con delle formule più snelle se necessario...qualcuno riesce per caso?


Grazie
pany221
Utente Junior
 
Post: 43
Iscritto il: 06/05/15 10:08

Re: Trasponi dati automatico se rispettate condizioni

Postdi pany221 » 09/06/15 16:14

pany221
Utente Junior
 
Post: 43
Iscritto il: 06/05/15 10:08

Re: Trasponi dati automatico se rispettate condizioni

Postdi wallace&gromit » 09/06/15 17:15

mamma mia!
ho dovuto interrompere il download a 60 MB, quanto è grande il tuo file?
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1420
Iscritto il: 16/01/12 14:21

Re: Trasponi dati automatico se rispettate condizioni

Postdi pany221 » 10/06/15 08:04

80 MB...SONO TANTISSIMI DATI :=(
pany221
Utente Junior
 
Post: 43
Iscritto il: 06/05/15 10:08

Re: Trasponi dati automatico se rispettate condizioni

Postdi pany221 » 10/06/15 11:28

HO PROVATO A RIDURLO UN POCHINO...PROVATE A VEDERE SE COSI' RIUSCITE A SCARICARLO
pany221
Utente Junior
 
Post: 43
Iscritto il: 06/05/15 10:08

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "Trasponi dati automatico se rispettate condizioni":


Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti