Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Copia righe in excel saltando righe nel foglio di destinazione

Ultimo Aggiornamento: 22/02/2017 22:48
Post: 1
Registrato il: 21/02/2017
Città: MONTALTO UFFUGO
Età: 45
Utente Junior
2010/2016
OFFLINE
21/02/2017 10:56

Buongiorno a tutti. Sono nuovo nel forum e non espertissimo in excel. Vorrei porre una domanda ai più esperti. Io ho la necessità di copiare delle celle da un foglio ad un altro saltando alcune celle nel foglio di destinazione. Mi spiego meglio:
Nel "foglio1" ho la cella A5, A6, A7, A8...... e devo copiarle nel foglio2 nelle celle A4, A14, A24, A34..... In pratica ho un intervallo di 10 celle nel foglio di destinazione, e devo fare la stessa cosa con le colonne B, C, D ed E. Esiste qualche formula da impostare per poi trascinarla visto che devo farlo fino alla riga 1117? Ho cercato sul forum ma mi sembra che non ci sia nulla.
Grazie in anticipo.
Post: 5.067
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
21/02/2017 12:06

Copia dati
Ciao deadman, credo che dovresti fa uso del VBA, si risolve prima che con le formule.

ma lo stesso discorso vale per le colonne B-C-D-E, cioè b4 va a b14-24-etc..

quindi la riga 4 diciamo A4:E4 va al secondo foglio a A14:E14, ma tali righe sul 2° foglio sono vuote?

inserisci un esempio togliendo dati sensibili

Ciao By Sal [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 2.543
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
21/02/2017 12:18

Buona giornata, Deadman.78;
considerando la quantità di Record da analizzare, avrei proposto un Codice WBA di questo tipo:
Option Explicit

Sub Copia()
Application.ScreenUpdating = False
Dim NRc As Long, x As Long, y As Long

    With Worksheets("Foglio1")
    Sheets("Foglio2").Select
        Columns("A:A").ClearContents
            y = 4
            NRc = .Range("A" & Rows.Count).End(xlUp).Row
                For x = 5 To NRc
                    .Cells(x, 1).Copy Cells(y, 1)
                        y = y + 10

                Next x
    End With
Application.ScreenUpdating = True
End Sub


Questo Codice non è velocissimo, ma, se hai una discreta conoscenza di VBA, si potrebbe pensare all'uso di una Matrice; il Codice sarebbe un pò più complesso ma dovrebbe essere più performante.

Fai sapere se hai problemi.




A disposizione.

Buon Lavoro e buona serata.

Giuseppe

Edit: Leggo solo ora la Risposta di by sal (che saluto); mi scuso per la sovrapposizione.
[Modificato da GiuseppeMN 21/02/2017 12:22]

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 0
Registrato il: 24/04/2014
Città: MILANO
Età: 53
Utente Junior
OFFLINE
21/02/2017 14:49

bravi
ottimo forum
Post: 1
Registrato il: 21/02/2017
Città: MONTALTO UFFUGO
Età: 45
Utente Junior
2010/2016
OFFLINE
21/02/2017 16:45

Ciao a tutti ragazzi/e.
Grazie innanzitutto per le risposte. Considerate che io sono quasi ai primi rudimenti con excel, quindi per fare un VBA non saprei neanche da dove iniziare [SM=x423037] ...detto questo, se può servire inserisco un file in modo da rendere più chiara la cosa
Post: 2
Registrato il: 21/02/2017
Città: MONTALTO UFFUGO
Età: 45
Utente Junior
2010/2016
OFFLINE
21/02/2017 17:01

Come potete notare dal file in allegato, devo copiare il contenuto del foglio "Elenco Prezzi" nel foglio "Analisi", saltando 10 righe nel foglio "Analisi", e devo farlo per 1079 voci che arrivano alla riga 1117 del foglio "Elenco Prezzi". Quello che mi frega è quello che c'è tra una voce e un altra perchè altrimenti lo avrei fatto nel modo più semplice (trascina col mouse). Finora, seguendo le indicazioni trovate qua e la in internet ho utilizzato la seguente formula:

=INDICE('Elenco Prezzi'!$A$5:$F$1117;MAX($A$1:A3)+1;RIF.COLONNA())

il problema è che arrivato ad un certo punto, alla riga 114 del foglio "Analisi" corrispondente alla voce n°12, nella cella della quantità compare il numero 12 e questa cosa si ripete fino alla fine.
E per ultimo, arrivato alla voce n°54, corrispondente alla riga 544 del foglio "Analisi", se continuo a incollare la formula, oltre a ripetermi il n°12 come quantità, mi visualizza, fino alla fine, sempre la voce 54.

Vi prego aiutatemi altrimenti divento vecchio a fare copia e incolla per ogni singola voce.

Grazie
Post: 2.545
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
21/02/2017 19:00

Deadman.78, scrive:


... per fare un VBA non saprei neanche da dove iniziare ...



Buona giornata, Deadman.78;
nel File in allegato, nel Foglio di lavoro "Analisi", dovresti semplicemente premere il Pulsante "Copia".

Sono consapevole che non è molto formativo per iniziare a conoscere la programmazione VBA, ma, potrebbe essere di stimolo per scoprire le potenzialità di questo linguaggio.

Fai sapere se hai problemi.




A disposizione.

Buon Lavoro e buona serata.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 3
Registrato il: 21/02/2017
Città: MONTALTO UFFUGO
Età: 45
Utente Junior
2010/2016
OFFLINE
21/02/2017 19:29

Buonasera Giuseppe.
Grazie innanzitutto per l'interesse e per l'ottimo lavoro svolto.

E' inutile che ti dica che sono rimasto a bocca aperta appena ho premuto il pulsante copia.

In effetti è un ottimo stimolo questo per iniziare a studiare il linguaggio VBA, e dato che col lavoro che faccio ho di questi problemi giornalmente, cercherò di trovare in rete qualche guida per iniziare.

Ho copiato sul file che mi hai mandato tutte le altre voci del computo metrico, che per ovvie ragioni ho omesso dal file di esempio, e ho premuto il pulsante copia....la rotellina sta ancora girando...penso che ci vorrà ancora molto perché sono 1079 voci.

Ti posso chiedere come fare per trovare in rete una buona guida per il linguaggio in Visual Basic?

Grazie ancora
Post: 2.549
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
22/02/2017 09:17

Buona giornata, DeadMan;
temo che, con questi numeri di Record, il tempo di esecuzione diventi di alcune decine di minuti.
Tempo assolutamente inaccettabile.

Per mia curiosità, proverò ad ipotizzare l'utilizzo di un Array, ma, temo che il tempo di esecuzione sarà sempre improponibile.

Quello che farei, disponendo della Licenza, utilizzerei sicuramente ACCESS; la programmazione sarebbe un pò più complessa, ma, una volta definte:
-    Tabelle
-    Maschere
-    Query
-    Report
il risultato sarebbe immediato.

Per quanto concerne una buona guida per iniziare l'approccio con VBA (Visual Basic for Application), credo di essere la persona meno adatta per poterti fornire un valido aiuto.

Sono un autodidatta; sono partito con il "Registratore di macro".
Valutando i Codici che venivano proposti con questo strumento, eliminando e/o modificando le istruzioni che venivano registrate, mi sono creato una certa cultura in materia.
Cultura che ho poi affinato con approfondimenti in biblioteca su temi specifici.
In realtà ho anche acquistato un volume dedicato alle Macro (Codici VBA) sviluppato su Excel 2000, ma, oggi, è un testo che servirebbe a poco; molti dei Codici VBA riferiti a Excel 2000 non trovano riscontro nelle Release di Excel più recenti.
Non posso trascurare quanto imparato nei vari Forum che ho frequentato; anche questo tipo di approfondimento, mi è servito moltissimo.

Quello che mi permetto di consigliarti e di dare uno sguardo a quanto proposto in:

http://forum.wintricks.it/showthread.php?t=155252

Potrebbe essere una base di riflessione su come procedere; non è un Corso completo, ma, propone sounti interessanti per iniziare ad utilizzare VBA.




A disposizione.

Buon Lavoro e buona serata.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 4
Registrato il: 21/02/2017
Città: MONTALTO UFFUGO
Età: 45
Utente Junior
2010/2016
OFFLINE
22/02/2017 09:29

Buongiorno Giuseppe.

Si in effetti ieri sera, dopo una ventina di minuti di elaborazione, ho bloccato l'applicazione. Temo che ci voglia molto per elaborare 1079 voci.

Per quanto riguarda Access considera che avrei sempre voluto imparare ad usarlo ma, causa il poco tempo a disposizione, non ho mai iniziato, e quindi lo conosco molto meno di Excel.

Attendo eventuali tue nuove.

Buona giornata e grazie ancora.
Post: 2.550
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
22/02/2017 09:56

Buona giornata, DeadMan;
ma Tu disponi di una Licenza ACCESS?

Sono anni che non programmo più in ACCESS, ma non mi dispiacerebbe dare una ripassata alle Regole e questa potrebbe essere una buona occasione.
Sicuramente dovrei intervenire nella sezione adeguata, non in questa che è dedicata a Excel, e dovrei confrontarmi con i Guru di ACCESS che, molto spesso hanno giudicato poco etico il mio metodo di programmazione (Celle calcolate e Maschere con Campi ridondanti), ma, tant'è.
Diciamo che, molto probabilmente utilizzo ACCESS come il Contadino che, al posto del trattore, utilizza una Ferrari però, ...
fino a quando il motore regge!!! e, in attesa di soluzioni più performanti ...

In attesa di un Tuo eventuale interesse per una soluzione in ACCESS, procedo, anche se con scarse speranze, con l'utilizzo di Array in Excel.



Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 2.551
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
22/02/2017 10:49

Buona giornata, DeadMan;
niente da fare, anche utilizzando Array, i tempi di elaborazione, a mio avviso, non sono accettabili.



A disposizione.

Buon Lavoro e buona serata.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 1
Registrato il: 27/12/2016
Città: ROMA
Età: 57
Utente Junior
2013
OFFLINE
22/02/2017 20:50

Re:
Deadman.78, 21/02/2017 17.01:

Come potete notare dal file in allegato, devo copiare il contenuto del foglio "Elenco Prezzi" nel foglio "Analisi", saltando 10 righe nel foglio "Analisi", e devo farlo per 1079 voci che arrivano alla riga 1117 del foglio "Elenco Prezzi". Quello che mi frega è quello che c'è tra una voce e un altra perchè altrimenti lo avrei fatto nel modo più semplice (trascina col mouse). Finora, seguendo le indicazioni trovate qua e la in internet ho utilizzato la seguente formula:

=INDICE('Elenco Prezzi'!$A$5:$F$1117;MAX($A$1:A3)+1;RIF.COLONNA())

il problema è che arrivato ad un certo punto, alla riga 114 del foglio "Analisi" corrispondente alla voce n°12, nella cella della quantità compare il numero 12 e questa cosa si ripete fino alla fine.
E per ultimo, arrivato alla voce n°54, corrispondente alla riga 544 del foglio "Analisi", se continuo a incollare la formula, oltre a ripetermi il n°12 come quantità, mi visualizza, fino alla fine, sempre la voce 54.

Vi prego aiutatemi altrimenti divento vecchio a fare copia e incolla per ogni singola voce.

Grazie



ciao Deadman.78
non sono una grande esperta ma io userei questa fornmula in A14 del foglio ANALISI che poi puoi copiare ogni 10 righe:

=INDICE('Elenco Prezzi'!$A$5:$F$1117;MAX($A4:$A5);RIF.COLONNA())
Post: 2.552
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
22/02/2017 22:48

Buona sera, DeadMan;
consentimi di salutare @ Manu2016 e ringraziarla per il Contributo alla Discussione.

Fatto ciò, dopo un'analisi più approfondita e una limatina al Codice VBA, considerando un DataSet di 1.133 Record, ho ridotto il Tempo di elaborazione a ~ 70 secondi.
Un tempo ancora decisamente alto, ma, più "umano".

Giusto il tempo di un breve scambio di convenevoli con il Collega d'Ufficio.

Fai sapere se hai ancora problemi.



A disposizione.

Buona serata.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Vota: 15MediaObject5,00114 1
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 06:17. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com