La consultazione del forum è libera per tutti.
Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).
Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.
salve,
ho una cartella excel con diversi fogli. ho necessità di copiare dati (diverse righe ma di numero variabile) da un foglio all'altro. Ho provato con una macro presente nel foglio allegato. Ma non funziona: le mie conoscenze sono +ttosto limitate. Più nello specifico, devo copiare i seguenti dati:
MACRO 1: copiare da foglio ScadFiscPrev a foglio ScadGen
copiare tutti i dati presenti a partire dalla riga 12 colonne C e D (il numero delle righe è variabile) in C37 del foglio ScadGen dove però sono gia presenti altri dati e quindi la Macro dovrà inserire un numero di righe pari a quello relativo ai dati da copiare e dopo aver copiato i dati eliminare ogni riga vuota a partire dalla 37.ma; Vai in C37 fine macro;
MACRO 2: copiare da foglio ScadRev a foglio ScadGen
copiare tutti i dati (in modalità statica e cioè solo il contenuto delle celle e nn le formule escludendo le righe vuote attraverso il comando Autofilter) presenti nell'area M12:P3000 in C37 del foglio ScadGen dove però sono gia presenti altri dati e quindi la Macro dovrà inserire un numero di righe pari a quello relativo ai dati da copiare e dopo aver copiato i dati eliminare ogni riga vuota a partire dalla 37.ma; Vai in C37 fine macro;
MACRO 3: copiare da foglio ScadRev a foglio ScadAgenda
- copiare tutti i dati (in modalità statica e cioè solo il contenuto delle celle e nn le formule escludendo le righe vuote attraverso il comando Autofilter) dell'area M12:M3000 in C30 del foglio ScadAgenda dove però sono gia presenti altri dati e quindi la Macro dovrà inserire un numero di righe pari a quello relativo ai dati da copiare e dopo aver copiato i dati eliminare ogni riga vuota a partire dalla 30.ma;
- copiare tutti i dati (in modalità statica e cioè solo il contenuto delle celle e nn le formule escludendo le righe vuote attraverso il comando Autofilter) dell'area O12:O3000 in D30 del foglio ScadAgenda dove però sono gia presenti altri dati e quindi la Macro dovrà inserire un numero di righe pari a quello relativo ai dati da copiare e dopo aver copiato i dati eliminare ogni riga vuota a partire dalla 30.ma;
- copiare tutti i dati (in modalità statica e cioè solo il contenuto delle celle e nn le formule escludendo le righe vuote attraverso il comando Autofilter) dell'area N12:N3000 in E30 del foglio ScadAgenda dove però sono gia presenti altri dati e quindi la Macro dovrà inserire un numero di righe pari a quello relativo ai dati da copiare e dopo aver copiato i dati eliminare ogni riga vuota a partire dalla 30.ma;
- copiare tutti i dati (in modalità statica e cioè solo il contenuto delle celle e nn le formule escludendo le righe vuote attraverso il comando Autofilter) dell'area P12:P3000 in F30 del foglio ScadAgenda dove però sono gia presenti altri dati e quindi la Macro dovrà inserire un numero di righe pari a quello relativo ai dati da copiare e dopo aver copiato i dati eliminare ogni riga vuota a partire dalla 30.ma; Vai in C29 Fine macro
Grazie 1000 anticipatamente.
Buongiorno am.value.
Questa discussione andrebbe postata (e spostata) su Macro e VBA.
Per la regola "prima cercare, poi chiedere", qui c'è una discussione simile.
Dovrai studiarla e adattarla un po' ma fa questo:
copia i dati da un foglio a un altro, con ultima riga (LR) variabile.
Per il discorso righe vuote/piene dovrai invece costruire una macro che testi cella per cella, con le conseguenti lungaggini.
A meno che tu non scelga di utilizzare un vettore (matrice, array, ...), il che potrebbe ridurre notevolmente il tempo di esecuzione. Facce sape'
grazie del tuo riscontro "emme".
non riesco a trovare quanto da te indicato nella sezione Macro.
Che bisogno c'era di bloccarmi immediatamete? e se uno chiedo una mano, pensi che sia in grado di scrivere in autonomia un codice Vba che funzioni alla perfezione?
Nessuna polemica, beninteso! solo per capire come un forum importante svolga la sua funzione didattica e di confronto cui è destinato.
Nessuno è stato bloccato, sei ancora attivo.
Il link funziona e porta direttamente a "Calcolo rimanenza a magazzino".
Il concetto base è "aiutati che il ciel t'aiuta", ché trovare codice già bell'e pronto non è la miglior soluzione per imparare a risolvere i problemi.
Ora, lo sai solo tu cosa esattamente deve fare il codice: quali celle considerare, quali condizioni rispettare, quali valori trasportare da un foglio all'altro, ecc.
Il codice linkato copia una colonna intera di un foglio (StrtSht) in una colonna di un altro foglio (DestSht) senza considerare celle vuote o piene.
Non lo so (ora non ho tempo, è Pasqua) quante righe abbia il tuo foglio.
Ma SE sono (es.) 500 E volendo considerare solo le piene la prima domanda da farsi è:
- il numero di riga del foglio di destinazione corrisponde al numero di riga del foglio di partenza?
Ovvero:
il valore di DestSht(Cells(R, 18) deve corrispondere esattamente al valore in StrtSht(Cells(R, 18)
il valore di DestSht(Cells(R, 323) deve corrispondere esattamente al valore in StrtSht(Cells(R, 323)
ecc...
SE SI, il codice nel link funzionerà egregiamente;
SE NO, dovrai, per ogni cella del foglio di partenza, trovare la corrispondente nel foglio di arrivo.
E quindi, SE NO, ci sono due soluzioni:
leggi la cella in StrtSht, cerchi la corrispondente in DestSht e la scrivi.
Questa soluzione, abbastanza sempliciotta, ti procurerà un gran mal di ... testa perché la lettura/scrittura passo passo di una mole consistente di dati è un lavoro infinito.
Quindi sarà utile qui passare attraverso la gestione delle matrici (vettor, array, schiere, ... Dipende da quale linguaggio si proviene, ma la menata è sempre la stessa).
Se non hai infarinatura sull'argomento, prima di iniziare consiglio la ricerca di un po' di informazioni sull'argomento su questo stesso sito.
Conoscere l'utilizzo delle matrici risolverà questo e i problemi futuri.
Adesso vado a controllare la roba nel forno, riprenderò domani.
Intanto leggi un po' l'argomento matrici. Non serve capire perfettamente come funziona (impossibile senza metterci mano), per ora basterà basta sapere che c'è almeno un metodo per risolvere i casi, anche i più complessi.
Discussione spostata nella sezione "Macro e VBA"
"Fatti non foste a viver come bruti,
ma per seguir virtute e canoscenza"