Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

excel/vba/acces: copiare i dati sotto una cella variabile

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

excel/vba/acces: copiare i dati sotto una cella variabile

Postdi paloma » 29/10/07 10:28

Buongiorno a tutti,
vi scrivo dopo aver preso coraggio da tutti i casi disperati che avete risolto positivamente in questo forum.
Il quesito è il seguente: partendo da un foglio excel dove nella cella A1 c'è scritto "classe utente A" devo selezionare tutte le righe successive e riportarle in altro foglio di lavoro fino alla successiva "classe utente B". A questo punto devo prendere nuovamente il contenuto delle righe successive alla "classe utente B" per riportarle su altro foglio ancora fino alla successiva "classe utente C".
Il tutto per circa una sessantina di volte! Capite bene che rottura!oltre al rischio di sbagliare ogni volta!
Mi chiedevo a questo punto se ci fosse una qualche funzione in grado di:
1-accorgersi del cambiamento di classe;
2-copiare il contenuto di quello che c'è sotto (a ciascuna "classe utente" diversa) in un altro foglio di lavoro.
Qualsiasi contributo per semplificarmi il lavoro sarà ben accetto!!!
Grazie mille!
;)
PS: se la cosa non si può fare in excel mi va bene al limite anche in access purchè le istruzioni siano "a prova di stupido"!!
paloma
Utente Junior
 
Post: 64
Iscritto il: 29/10/07 09:38

Sponsor
 

Postdi Anthony47 » 29/10/07 16:20

Ciao coraggioso e benvenuto nel forum.
Si puo' fare; mi dici solo se l' intestazione "classe utente x" e' in una sua colonna (se SI, se si ripete su ogni riga o se compare solo al cambio), o se e' intercalata con altre le altre informazioni; in ogni caso, in quale colonna si trova?
Quali colonne dell' elenco devi copiare?

Ed e' giusto che intenti mettere l' elenco degli appartenenti a ogni classe su un foglio a se' stante (foglio dello stesso file, si intende)?
E questi fogli possono o devono essere azzerati, o bisogna scrivere accodando all' elenco che esiste gia'?

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

Postdi paloma » 29/10/07 16:36

Anthony47 ha scritto:Ciao coraggioso e benvenuto nel forum.
Si puo' fare; mi dici solo se l' intestazione "classe utente x" e' in una sua colonna (se SI, se si ripete su ogni riga o se compare solo al cambio), o se e' intercalata con altre le altre informazioni; in ogni caso, in quale colonna si trova?
Quali colonne dell' elenco devi copiare?

Ed e' giusto che intenti mettere l' elenco degli appartenenti a ogni classe su un foglio a se' stante (foglio dello stesso file, si intende)?
E questi fogli possono o devono essere azzerati, o bisogna scrivere accodando all' elenco che esiste gia'?

Ciao.


Grandissimo Anthony47 proprio in te confidavo!!
dunque la cosa dovrebbe esser semplice perchè l'intestazione classe utente x si trova sempre nella prima colonna e compare solo al cambio di classe e devo copiare tutte le righe sotto ciascuna colonna ognuna in fogli di lavoro diversi o al limite su colonne diverse dello stesso foglio. I dati in partenza sono così tutti sulla prima colonna:
CLASSE A
ag01
ag02
...
CLASSE B
ag01
ag03
...
Quello che vorrei ottenere è avere sulla prima colonna:
CLASSE A
ag01
ag02
...
sulla seconda colonna o su un altro foglio di lavoro:
CLASSE B
ag01
ag03
...
e così per ogni classe.
Spero di essermi spiegato.
Ancora grazie ;)
paloma
Utente Junior
 
Post: 64
Iscritto il: 29/10/07 09:38

Postdi Anthony47 » 29/10/07 20:44

paloma ha scritto:proprio in te confidavo!!


Per l' entusiasmo non hai risposto alle domande...
-quali colonne devi copiare (solo la A?)
-i dati pre-esistenti devono essere cancellati o ci si accoda

Poiche' lo sforzo e' per me uguale, preferisci ogni classe in un foglio (dello stesso file) o copiamo solo su foglio2, una colonna per ogni classe (vale solo se devi copiare solo la col. A)?

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

Postdi paloma » 30/10/07 09:51

Gulp è vero! dunque il fatto è che il file iniziale è un po' particolare perchè è un file txt che quando trasformo in excel ha inevitabilmente dei problemi di allineamento colonne. (ma non è che posso allegare almeno una parte del file??? se si come si fa??). Tali problemi mi portano generalmente ad avere nella cella a1 il testo "CLASSE", nella cella b2 "UTENTE DESCRIZIO" nella cella b3 "NE".
Quindi nella cella a2 "CAR" (che identifica il nome della mia prima classe utente), nella cella b2"Retrospor", nella cella c2"tello".
Poi nella cella a3 "D", nella b3 "LST"(informazione che non mi serve), nella c3 "prodotti di terzi"(informazione non fondamentale).
Nella cella a4"DS", nella b4"LST"(informazione che non mi serve), nella c4"stampe"(informazione non fondamentale). E così via fino a quando non arriva (dopo centinaia di righe una cella a570(ad esempio) chiamata di nuovo "CLASSE"con la cella a571 "CAS" (che identifica il nome della mia seconda classe utente). Quindi le successive a572, a573, a574 ... contengono di nuovo i dati importanti attinenti la classe in questione. Nuovamente il contenuto delle celle b572, b573, b574 e c572, c573, c574 ...non mi servirebbe.
Quello che mi piacerebbe avere è tante colonne quante sono le classi utenti e per ciascuna di queste il contenuto di quello che c'è sotto (riferito esclusivamente alla prima colonna). Ad esempio nella colonna A (nel foglio di lavoro1) relativa alla classe CAR mi piacerebbe avere nella cella A1 "CAR", nella cella A2 "D", nella cella A3"DS". Nella colonna B (dello stesso foglio di lavoro) la cella B1 dovrebbe riportare "CAS", la B2, B3 e seg. dovrebbero riportare le info relative.
Spero di aver dato qualche info in più senza aver fatto venire mal di testa![/i]
ps: i dati della prima colonna di partenza (che accolgono tutte le informazioni di decine di classi utenti) a questo punto non mi serviranno più in quanto utilizzerò i dati delle colonne di ciascuna classe utente.
paloma
Utente Junior
 
Post: 64
Iscritto il: 29/10/07 09:38

Postdi paloma » 30/10/07 17:29

e per caso si riesce ad impostare anche su access?
paloma
Utente Junior
 
Post: 64
Iscritto il: 29/10/07 09:38

Postdi Anthony47 » 31/10/07 02:00

Prova la seguente macro:
Codice: Seleziona tutto
Sub Paloma()
FoglioSorg = "Foglio1"    '<<<< Foglio dati di Origine
FoglioDest = "Foglio2"  '<<<< Foglio di uscita
'
Sheets(FoglioSorg).Select
JJ = 0
For Each Cella In Range("A1", Range("A65536").End(xlUp).Address)
If Cella = "classe" Or Cella = "CLASSE" Then
JJ = JJ + 1
End If
If JJ > 0 Then Cella.Copy Destination:=Sheets(FoglioDest).Cells(65536, JJ).End(xlUp).Offset(1, 0)
Next Cella
End Sub


Apri il vba editor con Alt-F11, fai Menu /Inserisci /Modulo; copia il codice e incollalo nel frame vuoto di dx.
Correggi se necessario le righe segnate con <<<<.
Torna su excel, eventualmente assegna un tasto di lancio rapido alla macro: Menu /Strumenti /Macro /Macro; selezioni Paloma nell’ elenco, premi Opzioni, nella casella di scelta rapida scrivi P (maiuscolo), chiudi con Ok e poi la X.
A questo punto se premi Contr-Maiusc-p la macro dovrebbe creare su foglio2 l’ elenco richiesto, ma PRIMA mi raccomando: fai 2 copie di backup del file originale.

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

Postdi Anthony47 » 31/10/07 02:05

Addendum: se vuoi pulire Foglio2 prima di creare l' elenco, aggiungi queste:

Sub Paloma()
FoglioSorg = "Foglio1" '<<<< Foglio dati di Origine
FoglioDest = "Foglio2" '<<<< Foglio di uscita
'
Codice: Seleziona tutto
    Sheets(FoglioDest).Select
    Cells.Select
    Selection.ClearContents
'
Sheets(FoglioSorg).Select
etc etc


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

Postdi paloma » 31/10/07 15:20

GRANDISSIMOOO!
Funziona perfettamente!
Domanda da cento miglioni, visto che ogni tanto il file di partenza è più grande delle 65 mila e rotte righe di excel e devo pertanto ripartire in più fogli il tutto secondo te è facilmente replicabile anche in access???
ps: non vorrei però costringerti a farti passare altre notti in bianco!
paloma
Utente Junior
 
Post: 64
Iscritto il: 29/10/07 09:38

Postdi Anthony47 » 31/10/07 19:50

Le notti in bianco le passo spesso e volentieri per la mia passione sull’ astronomia; excel aggiunge poco.
Per quanto riguarda la domanda, sui db sono un incompetente e quindi non sono io in grado di rispondere; speriamo qualcun altro stia seguendo la discussione.

Oppure valuta il passaggio a excel 2007, che di righe ne gestisce un milione e passa.

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


Torna a Applicazioni Office Windows


Topic correlati a "excel/vba/acces: copiare i dati sotto una cella variabile":


Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti