Condividi:        

Come unire due fogli

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: Come unire due fogli

Postdi Flash30005 » 18/05/12 13:51

ricky53 ha scritto:Nel tuo codice ScreeUpdating non c'è nel file che utilizzi lo avrai sicuramente messo.


Non l'ho messo perché stranamente in una macro identica e con screenUpdating impiega centesimi di secondi in più :D

Le due macro sono state eseguite in successione Macro1 e Macro2 (non potendole azionare contemporaneamente)
e invertendo la sequenza (Macro2 e Macro1) tra una e l'altra escludo che si verifichino carichi del Pc in coincidenza sempre della macro1 :D .

ricky53 ha scritto:Se vogliamo continuare e chiairci è meglio aprire una nuova discussione


Ho già perso troppo tempo dedicandolo a "quisquilie e pinzellacchere" (come diceva il grande Totò) e meno tempo per risolvere il quesito a M@rtin@ quindi vorrei evitare di utilizzarlo per questo genere di discorsi.
Hai tutti i dati e le macro fai le tue prove e trai le tue conclusioni, io sono già soddisfatto così. 8)

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Sponsor
 

Re: Come unire due fogli

Postdi ricky53 » 18/05/12 13:59

Ciao,
premesso che non volevo far alterare nessuno.

Le prove le avevo già fatte altrimenti non scrivevo ...
ecco il codice su cui le avevo fatte
Codice: Seleziona tutto
Sub Trovadate2()
    Dim Num_Cicli As Long
    Application.ScreenUpdating = False
    Start = Timer
    Set WS1 = Worksheets("Foglio1")
    Set WS2 = Worksheets("Foglio2")
    WS1.Range("B2:H50000").ClearContents
    UR1 = WS1.Range("A" & Rows.Count).End(xlUp).Row
    UR2 = WS2.Range("A" & Rows.Count).End(xlUp).Row
    Num_Cicli = 0
    For RR2 = 2 To UR2
        Data2 = WS2.Range("A" & RR2).Value
        For RR1 = 2 To UR1
            Num_Cicli = Num_Cicli + 1 ' <<====== Inserita per contare i cicli
            If Data2 = WS1.Range("A" & RR1).Value Then
                WS2.Range("B" & RR2 & ":H" & RR2).Copy Destination:=WS1.Range("B" & RR1)
               
                Exit For  ' <<============== Cambiare per le due prove

'                GoTo saltaRR2 '<<============== Cambiare per le due prove
           
            End If
        Next RR1
saltaRR2:
    Next RR2
   
    WS2.Range("N1").Value = Timer - Start
    Application.ScreenUpdating = False
    MsgBox "Effettuata copia dei dati !!!" & vbCrLf & vbCrLf & "Tempo impiegato:  " & _
        (Timer - Start) & vbCrLf & "Con: " & _
        Format(Num_Cicli, "#,###") & " Cicli elaborativi"
End Sub


Termino qui per non intasare ulteriormente la discussione.
Ci sentiamo privatamente.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Come unire due fogli

Postdi M@rtyn@ » 18/05/12 18:02

Permesso...Buongiorno a tutti :)
ricky53 ha scritto:alla mia formula non mancava un pezzo; non avevo volutamente scritto la gestione del caso di data non trovata in cui si ottiene #N/D che è fastidioso da vedere e crea problemi in caso di somma fra i dati. Non lo avevo scritto per darti la possibilità di provare la formula, leggere la guida e poi applicare l'implementazione.

Avevo capito, scusami, ho usato l'espressione "mancava un pezzo" per tagliare corto. #DisfunzioneTwittarola
Flash30005 ha scritto:(avvia la macro e, per vincere la paranoia, prova ad andare a prendere un caffé, se ci riesci... :D )

Ma stai scherzando spero! Stò col naso attaccato alla ventola e un estintore in mano per intervenire in caso di surriscaldamento! Tu sarai anche bravo con excel ma NON sai cos'è la paranoia!
Comunque visto che vi siete appassionti tanto perché non me le fate tutte provviste di cronometro :idea: , tipo che appere un messaggio "tempo di esecuzione tot".(Non che mi serva così per sfidarvi)
Concludendo le soluzioni sono molte e molto buone grazie a tutti.
xp con Excel 2007
windows 8 con excel 2013
M@rtyn@
Utente Junior
 
Post: 88
Iscritto il: 02/03/11 21:03

Re: Come unire due fogli

Postdi Anthony47 » 18/05/12 18:15

Z0K, pensaci tu a raffreddare gli animi...
Ma poi, ci riscaldiamo a discutere di come fare meglio un lavoro una-tantum? Perche' e' evidente che se Martina ha riepito di formule il foglio con tutte le date (con 27000 righe dovrebbe coprire vari anni...) adess1o le bastera' scrivere le nuove attivita' e se le ritrovera' automaticamente nell' altro foglio, come voleva.
E perche' parliamo di macro quando basta scrivere le formule sulla prima riga e poi copiarle sulle righe sottostanti? (Tempo stimato circa 15minuti, di cui 14:45 per pausa caffe')
:D :D

Non perdete il messaggio e i ringraziamenti di Martina (vedi sopra)
Ciao a tutti.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Come unire due fogli

Postdi ricky53 » 18/05/12 19:27

Ciao Martina,
prima leggi l'intervento di Anthony.

Il tempo di esecuzione dell'elaborazione c'è già.
Ti dice quanti secondi ha impiegato a fare n-cicli (ti dice anche il numero di cicli) di controllo date uguali e di "copia" dei dati delle colonne B-H.

Ahi, Ahi ... Ricavo che non hai provato la mia macro ... ci sono rimasto male !!!
Scherzo ovviamente.


Anthony: la prima cosa che avevo proposto era il CERCA.VERT poi ci siamo lasciati prendere la mano con Flash, Scossa e ovviamente io.
Spero che tutta questa dissertazione possa essere utile anche a qualche altro utente ... per esempio come utilizzare due cicli for/next e le array per minimizzare i tempi di elaborazione.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Come unire due fogli

Postdi Flash30005 » 18/05/12 19:53

M@rtyn@ ha scritto:...
Comunque visto che vi siete appassionti tanto perché non me le fate tutte provviste di cronometro :idea: , tipo che appere un messaggio "tempo di esecuzione tot"....
...


Vedo che non hai provato nemmeno la macro inviata (a saperlo prima non avrei perso tempo a realizzartela)
perché non perdo tempo a farti visualizzare un messaggio dicendoti cosa hai fatto tempo impiegato e altro ma ti scrive il tempo in secondi e decimi di secondo nella cella N1 del foglio2 in modo "silente" (solo per soddisfare la tua curiosità)
con questo codice già disponibile alla fine della macro postata
Codice: Seleziona tutto
WS2.Range("N1").Value = Timer - Start


Non avendo lo stato dei tuoi dati ti posso dire che ho testato la macro con 14.000 righe nel foglio1 e +o- 200 nel foglio2
i tempi sono quelli postati 0,45 secondi circa
per 28.000 presumo sia intorno al secondo ma mi aspettavo da te questo dato.

Devo considerare di aver perso solo tempo?

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Come unire due fogli

Postdi M@rtyn@ » 18/05/12 20:18

Carissimi, non vi ringrazierò mai abbastanza per l'aiuto che mi date ma mi dispiace leggere che rimanete male se non provo tutte le varianti, vi ho chiesto aiuto per un progetto che non riuscivo a mandare avanti, e il 16/05/12 alle 17:54 Zer0Kelvin mi ha dato lo spunto per superare lo scoglio che mi fermava, non biasimatemi se voglio finire quello che stavo facendo. In fondo come io ho trovato spesso quello che mi serviva nelle disussioni degli altri sicuramente quello che avete scritto servirà a molti, magari anche a me in futuro; non sarebbe la prima volta che ritorno su una discussione perché mi ricordo di qualcosa che al momento non era quel che cercavo ma in un altro progetto mi é tornata utile.
Notte
xp con Excel 2007
windows 8 con excel 2013
M@rtyn@
Utente Junior
 
Post: 88
Iscritto il: 02/03/11 21:03

Re: Come unire due fogli

Postdi Flash30005 » 18/05/12 20:36

Perdona M@rtin@ ma mi potresti dire dove hai "chiuso" il topic?
Nel senso di aver trovato la soluzione per il tuo quesito
Rileggendo non c'è nessun post nella quale dichiari di aver risolto, e forse per questo, e anche per il fatto che dicevi ad ognuno che c'era un "difetto" : parte mancante, tempi lunghissimi etc etc, tutti gli altri compreso me ci siamo dati da fare per darti una soluzione definitiva.
Se, invece, avessi detto: "grazie ho risolto così..." (anche senza grazie), avremmo impegnato il nostro tempo a fare altre cose e il topic sarebbe stato più chiaro, anche per futuri utenti.

Buonanotte
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Come unire due fogli

Postdi M@rtyn@ » 18/05/12 20:54

M@rtyn@ ha scritto:Eccomi! Ciao a tutti e grazie per essere accorsi così numerosi.
Allora...Prima di tutto premetto che uso Excel 2007
Caro Ricky siccome hai confessato che alla tua prima formula mancava un pezzo prima che mi riconnettessi,devi scusarmi ma l'ho allegramente ignorata.
Ho provato invece la formula di Zer0Kelvin : però quando la trascinavo non succedeva niente :?: (per questo la premessa)
così ho fatto un po' di decoupage di codice e messo insieme questa:
Codice: Seleziona tutto
Sub Macro2()
'
' Macro2 Macro
'
' Scelta rapida da tastiera: CTRL+a
For x = 1 To 27011
    Selection.Copy
    ActiveCell.Offset(1, 0).Range("B1:H1").Select
    ActiveSheet.Paste
Next
End Sub

Tempo di elaborazione dati 11'22''

Qui ho finito, il confronto sui tempi e i problemi con alcune soluzioni erano per rispondere a tutti, altrimenti mi sembrava di ignorare chi cercava di aiutarmi.
xp con Excel 2007
windows 8 con excel 2013
M@rtyn@
Utente Junior
 
Post: 88
Iscritto il: 02/03/11 21:03

Re: Come unire due fogli

Postdi Flash30005 » 18/05/12 21:13

:?:
Quindi non hai usato formule ma macro "decoupage" di 11' e 22"" ?
In ogni caso sarebbe opportuno che spiegassi cosa fa quel codice
sai, solo per renderlo utile agli altri utenti 8)
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Come unire due fogli

Postdi Zer0Kelvin » 18/05/12 21:40

Credo che abbia usato la macro per copiare le formule!
Anche se il codice mi lascia un pò perplesso ...
Può darsi che, quando ha provato a trascinare in basso le formule, invece di agganciare il riquadro di riempimento, abbia trascinato la selezione, spostando solamente le celle selezionate invece di copiare le formule, ed è ricorsa a questo "trucco" per riempire il foglio.
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 388
Iscritto il: 08/04/12 11:23

Re: Come unire due fogli

Postdi M@rtyn@ » 19/05/12 09:39

Zer0Kelvin ha scritto:Credo che abbia usato la macro per copiare le formule!

Si!
Zer0Kelvin ha scritto:Può darsi che, quando ha provato a trascinare in basso le formule, invece di agganciare il riquadro di riempimento, abbia trascinato la selezione, spostando solamente le celle selezionate invece di copiare le formule, ed è ricorsa a questo "trucco" per riempire il foglio.

Ho sia "allargato" che trascinato la selezione verso il basso ma non é successo niente.
xp con Excel 2007
windows 8 con excel 2013
M@rtyn@
Utente Junior
 
Post: 88
Iscritto il: 02/03/11 21:03

Re: Come unire due fogli

Postdi Flash30005 » 19/05/12 09:54

Quella macro è errata per copiare le formule:
L' ActiveCell.Offset(1, 0).Range("B1:H1").Select
fa slittare a destra l'indirizzo, ad ogni ciclo

Unl codice per copiare il range B1:H1 fino alla riga 27011 potrebbe essere questo (*)
Codice: Seleziona tutto
 Range("B1:H1").AutoFill Destination:=Range("B1:H27011"), Type:=xlFillDefault


Se hai delle formule da copiare partendo dalla prima formula (prima riga)
dovrai innanzitutto rendere la formula idonea...
inserendo il simbolo $ (alla colonna e/o alla riga) se prevede una matrice che non deve variare durante il trascinamento (copia).

Ciao

EDIT*: Aggiunto codice copia riga
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "Come unire due fogli":


Chi c’è in linea

Visitano il forum: Nessuno e 46 ospiti