Condividi:        

[EXCEL] Copiare gruppi di caselle dove si desidera

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] Copiare gruppi di caselle dove si desidera

Postdi nikfitz » 09/07/07 23:29

;) Ciao raga, avrei un'altro problema. E' simile ad un mio precedente topic perchè devo lavorare su un file che mi è stato dato con un formato fisso che non posso modificare. La questione è questa. Ho 5 inventari composti ognuno da 10 schede. Li ho messi in colonna così sfrutto meglio lo spazio delle righe se dovessi aggiungere delle schede. Ho bisogno di poter copiare una qualsiasi delle schede degli inventari e metterla sulla cella attiva del foglio1. La cella attiva può cambiare e quindi mi servirebbe una macro flessibile che ne tenesse conto. Ho fatto dei tentativi con le macro postatemi precedentemente da Anthony, ma non riesco a fare in modo che la scheda vada sul foglio1 a partire dalla cella attiva. Help me. Thanks :aaah :aaah :aaah
Allego il file
http://www.mediafire.com/?80zj4nzdosi/
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Sponsor
 

Postdi Anthony47 » 10/07/07 16:23

Io non ho winrar (uso winzip) quindi non sono in grado di guardare il foglio, e la descrizione e' ovviamente insufficiente.

Se non arrivano suggerimenti magari zippi e riposti.
Ciao.

PS: le faccine sono carine, ma a volte hanno un significato diverso da quello che si vorrebbe esprimere.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi nikfitz » 10/07/07 18:36

Ciao Anthony, grazie per la risposta, le faccine esprimono esattamente il mio stato di frustrazione ogni volta che mi rendo conto di essere ignorante in materia. Riposto in formato zip.

http://www.hostingfiles.net/files/20070710071645_Inventario.zip

é qualcosa di simile ad un mio precedente topic sul torneo di calcetto. Stavolta ci sono solo dati. Devo poterli organizzare in modo da pormi su una qualsiasi cella del foglio1 e trasferire, a partire da quel punto, la scheda. Al solito la scheda la seleziono con due menù a tendina (uno sceglie l'inventario,l'altro la scheda). Il mio problema è rendere flessibile il tutto in modo tale che sia in grado di copiare la scheda in differenti punti del foglio1. Ciao ;)
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Postdi Anthony47 » 11/07/07 12:16

Mi pare che sia una variante del problema delle schede con foto (quello appena chiuso da un paio di gg).
Se e' cosi', anche qui svelare il problema un pezzo alla volta non e' furbo...

Se e' una variante senza foto, allora basta sostituire in Sub Nikkk la definizione SkDest = "G5" '<< Destinazione della scheda su Foglio1
con l' istruzione SkDest=Activecell.address
Poi cancelli le istruzioni destinate ad azzerare le immagini.

Se ci sono ancora le foto in gioco, allora devi spiegare se vuoi solo aggiungere su foglio1 le schede o vuoi anche poterle eliminare.

Hai qualche spunto; nei prossimi 2-3 gg saro' in difficolta' a seguire il forum.
Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi nikfitz » 11/07/07 14:52

Ciao Anthony grazie ancora per il tuo interesse. Sto ruotando attorno a questi problemi di copia/sposta/seleziona schede perchè la persona che mi ha dato il file mi chiede varianti continue. Fino ad un certo punto sono riuscito ad andare avanti da solo, poi quando le cose si sono complicate ho dovuto ricorrere al forum. Il problema per ora é questo che ho proposto. Continuare il precedente topic non mi sembrava il caso perchè la soluzione che mi hai dato va più che bene. Ora però il problema é creare una struttura flessibile che mi permetta di variare le caselle dove devo andare a copiare le schede. Provo la soluzione che mi hai proposto. Grazie.
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Postdi nikfitz » 11/07/07 17:03

Arieccomi........ciao Anthony, ho modificato come hai detto tu, ma le foto continuava a copiarle. Così ho tolto le foto (visto che non servivano più) e ora mi copia solo i dati e le caselle nel formato giusto. Se hai notato nel nuovo file "inventario" che ho inserito sul forum la disposizione delle schede non è in orizzontale ma in verticale, perciò quello che non riesco a fare è organizzare i dati nel foglio2 tenendo conto che inventario1 ha 10 schede, Inventario2 ne ha altre 10 ecc.(le ho messe così nel caso in cui mi chiedessero di inserire altre schede, in questo modo ho più spazio). Ti ringrazio per la tua cortesia. Grazie anche a Sal che ho avuto modo di conoscere nel topic precedente.
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Postdi Anthony47 » 16/07/07 00:11

Ciao nikfitz, rieccomi.
. . . la disposizione delle schede non è in orizzontale ma in verticale. . .

Nel precedente topic, ogni linea orizzontale era una squadra; anche qui con le schede verticali (una colonna, una squadra)?
Poi: sul Foglio1 avrai sempre una sola scheda visualizzata (una alla volta)? La domanda ha a che fare con la gestione delle eventuali foto.

Il cambiamento richiede di modificare la macro per l’ inventario; di qui la domanda: ha un reale vantaggio? Se ogni colonna = una squadra, allora di vantaggi non ne vedo, visto che ci sono molto meno colonne (256) che righe (65536).
Insomma, la vedo come una peggioria e non una miglioria; che senso ha?

Se mi sfugge qualcosa, o per altre precisazioni, sai che siamo qua. Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi nikfitz » 16/07/07 21:22

Ciao Anthony, bentornato. Cercavo solo di adattare la tua soluzione precedente ad un torneo di calcio, dove i giocatori sono 18 (riserve incluse) per squadra.
Ti vorrei solo chiedere:
1)Cosa devo modificare nella macro inventario affinchè ogni squadra sia organizzata in 18 schede anzichè 6? (praticamente ogni suadra comprende tre righe di schede).

Chiedo scusa per avere aperto due topic simili, Il fatto e che non riesco ancora a capire come si fa ad organizzare i dati su foglio2 se aumenta il numero di giocatori. Ho pensato a disporli in verticale e ho tolto le foto (per rendermi la cosa meno complicata), ma mi sono perso. Su foglio1 ho sempre la solita scheda.

Grazie ancora per la disponibilità
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Postdi Anthony47 » 17/07/07 01:24

La cosa piu' semplice e' che metti le 18 schede su una unica riga e nella macro scrivi
SkPerRow = 18 '<< N° di schede per riga

In alternativa lasci 6 schede per riga ma inserisci il ciclo "For I = 0 To SkPerRow - 1" in un nuovo ciclo "For K=0 to 2" e modifichi la prima istruzione del ciclo For I in
Codice: Seleziona tutto
Range(SkRoot).Offset((J+K) * SkRows, I * SkCols).Select


Spero sia comprensibile...
Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi nikfitz » 17/07/07 15:10

Ciao Anthony, non finirò mai di ringraziarti per quante cose stò imparando. Ho ripreso il file "NIKFIZ_esempio_forum_A70704" che avevi postato e ho fatto le modifiche alla macro inventario in base a quello che ho capito:
Codice: Seleziona tutto
Sub invent()

'    DEFINIZIONI
SkRoot = "C1"      '<< "radice" delle schede
SkAdr = "A1:AI18"  '<< Dimensione della scheda
SkPerRow = 5       '<< N° di schede per riga
TeamCol = 1        '<< Colonna in cui si trova il NOME SQUADRA; 1=A, 2=B, etc

SkCols = Range(SkAdr).Columns.Count
SkRows = Range(SkAdr).Rows.Count
Sheets("Foglio2").Select
Set SubRange = Application.Intersect(Range(ActiveSheet.UsedRange.Address), Range("c1:FU1000"))
'Calcolo dell' area in cui si fara' l' elenco e composizione Squadre
TeamList = Cells(1, SkPerRow * SkCols + 10).Address
Range(TeamList).Select
   'Verifica se si puo' azzerare
   Rispo = MsgBox("Posso cancellare l' elenco e la composizione delle Squadre?", vbYesNo)
   If Rispo = vbNo Then GoTo Niente
Range(TeamList).Range("A1:Z30").ClearContents


'Calcola il nuovo elenco / composizione Squadre
For J = 0 To 30    'Max 30 Squadre
Range(SkRoot).Offset(J * SkRows, I * SkCols).Select
If ActiveCell.Value = "" Then Exit For

CTeam = Cells(ActiveCell.Row, TeamCol).Value         'Squadra corrente
Cells(ActiveCell.Row, TeamCol).Copy _
   Destination:=Range(TeamList).Offset(100, 0).End(xlUp).Offset(1, 0)
Range(TeamList).Offset(100, 0).End(xlUp).Offset(0, 1).Value = ActiveCell.Address

For K = 0 To 2                                                    '<<<<<NUOVO CICLO
For I = 0 To SkPerRow - 1
  Range(SkRoot).Offset((J + K) * SkRows, I * SkCols).Select
  ActiveCell.Offset(0, 1).Copy _
     Destination:=Range(TeamList).Offset(100, J + 2).End(xlUp).Offset(1, 0)
Next I
Next K

  Range(Range(TeamList).Offset(1, J + 2), Range(TeamList).Offset(100, J + 2).End(xlUp)).Name = CTeam
  I = 0
Next J

Range(Range(TeamList).Offset(1, 0), Range(TeamList).Offset(100, 0).End(xlUp)).Name = "Squadre"
Niente:
Application.Goto Reference:=Range(TeamList), scroll:=True
MsgBox ("Questo e' il nuovo Elenco di: " & vbCrLf & "Squadre, Posizione sk, Composizione squadre")
End Sub


Ora mi crea delle squadre con 15 schede ma non con la sequenza giusta. Mi spiego: Vorrei che la squadra1 includesse le schede dalla 1 alla 15, la squadra2 dalla 15 alla 30 e così via. Grazie
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Postdi nikfitz » 17/07/07 23:12

Correggo la precedente: squadra1 da scheda1 a scheda15; squadra2 da scheda16 a scheda30 e così via fino a 60 (dovrebbero essere 4 aquadre). Riesco a formare squadra1 con le schede da 1 a 15, ma non appena si passa a squadra2 il conteggio invece che cominciare da scheda16 comincia da scheda6. Help :roll:
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Postdi Anthony47 » 17/07/07 23:47

Ho ripreso anche io il file precedente, e in effetti dovevano esserci un paio di altre modifiche. In dettaglio:

Tra le definizioni, aggiungi:
RigheTeam = 3 '<< N° di righe occupate da ogni team

In questa sequanza, l' istruzione Range e' modificata:
For J = 0 To 30 'Max 30 Squadre
Range(SkRoot).Offset(J * RigheTeam * SkRows, I * SkCols).Select

Vista la nuova definizione, modificare:
For K = 0 To RigheTeam - 1

In questa sequanza, l' istruzione Range e' modificata:
For I = 0 To SkPerRow - 1
Range(SkRoot).Offset((J * RigheTeam + K) * SkRows, I * SkCols).Select

L' istruzione Set SubRange si puo' eliminare (non ricordo di quale schema faceva parte).

Che sia la volta buona? Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi nikfitz » 21/07/07 17:29

Ciao Anthony, ho visto la tua risposta. Non ho avuto il tempo di ringraziarti perchè ho avuto un infortunio in bici e ora sono in ospedale. Mi metterò a studiarla appena posso. Ciao ancora.
Immagine
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Postdi nikfitz » 22/07/07 21:16

Ciao Anthony la macro Inventario va benissimo, credo però che bisognerebbe modificare anche la macro nikkkkkk perchè mi copia solo le prime 5 schede della prima riga. Appena seleziono la scheda6 mi copia un range sbagliato. Ho eseguito passo passo la macro, appena arriva a:
Codice: Seleziona tutto
Range(RigaSk).Offset(, SkCols * (OffAtl - 1)).Range("A1").Select
Selection.Range(SkAdr).Select
Selection.Copy Destination:=Sheets("Foglio1").Range(SkDest)


mi copia un range lontano dalle schede. Scusa ma non ho dimestichezza con gli offset (e non solo) come posso fare a selezionare il range esatto?
Hai aggiunto delle istruzioni alla macro inventario, c'è qualcosa da aggiungere anche alla macro nikkkkkk?
Credo sia tutto,grazie.
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Postdi Anthony47 » 23/07/07 01:53

Avrei dovuto insistere per tenere le squadre su una unica riga anche con 18 giocatori...
In effetti nikkkk adesso se ne va a cercare farfalle.

Per rimediare agiamo su foglio1:
-in AU1 metti
Codice: Seleziona tutto
=RESTO(CONFRONTA(D5;INDIRETTO(B5);0)-1;AV1)

-in AU2
Codice: Seleziona tutto
=QUOZIENTE(CONFRONTA(D5;INDIRETTO(B5);0)-1;AV1)

-In AV1 metti 5 (questo e' lo stesso numero di SkPerRow in Inventario)

Poi su nikkk:
In questa sequenza OffAtly e' aggiunta
Codice: Seleziona tutto
OffAtl = Range("AU1").Value
OffAtly = Range("AU2").Value


In questa sequenza, Range e' modificata
Codice: Seleziona tutto
On Error GoTo 0
Sheets("Foglio2").Select
Range(RigaSk).Offset(OffAtly * SkRows, SkCols * (OffAtl - 0)).Range("A1").Select


O la va o la spacca (fai 2 copie di backup).

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi nikfitz » 23/07/07 10:22

La tua dimestichezza mi lascia allibito. Non posso inserire le schede su un unica riga perchè la formattazione delle colonne è molto stretta (non l'ho decisa io come sai). Ho fatto come hai detto. Su foglio1 in AU2 mi appare il codice errore
Codice: Seleziona tutto
#NOME?

mentre la macro nikkkkkk va in errore sul codice
Codice: Seleziona tutto
Range(RigaSk).Offset(OffAtly * SkRows, SkCols * (OffAtl - 0)).Range("A1").Select

dicendo errore di run-time '13': Tipo non corrispondente
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Postdi Anthony47 » 23/07/07 17:07

Non hai disponibile la funzione QUOZIENTE, che infatti fa parte del componente aggiuntivo “Strumenti di analisi”. O lo installi (Strumenti /Componenti aggiuntivi, …; ma non ricordo che cosa ti da’ come funzioni aggiuntive), oppuri usi in AU2
Codice: Seleziona tutto
=INT((CONFRONTA(D5;INDIRETTO(B5);0)-1)/AV1)

L’ errore sul vba e’ la conseguenza dell’ errore in AU2, quindi ora dovrebbe essere ok.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi nikfitz » 23/07/07 23:15

:D Grazie ora funziona. Sei stato discreto e di grande aiuto. Ogni complimento sarebbe comunque superfluo visto che ne ricevi già tanti. Spero solo di non essere stato troppo invadente.
Se avrò altre domande saranno sempre su questo argomento, visto che sono due mesi che ci sbatto la testa.
A presto.
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54

Postdi nikfitz » 24/07/07 11:19

Ciao a tutti, senza Anthony non sarei mai stato in grado di risolvere il problema delle schede. Rimanendo sullo stesso argomento (organizzare e trasportare schede) vorrei adattare la sua idea per la creazione di un database sempre con le stesse schede. Questa volta però sono tante e il file ci mette un pò prima di aprirsi. Su foglio1 questa volta ho 6 finestre nella quale voglio trasportare in modo indipendente una qualsiasi delle schede contenute in foglio2. Su foglio2 ho 6 gruppi di schede e le vorrei organizzare in gruppi da 100 (ho modificato la macro inventario facendo in modo che ogni gruppo sia composto da 20 righe di 5 schede). Ho provato e ho incontrato questi problemi:
-La macro inventario anche se vario le definizioni non mi forma i gruppi
-La macro nikkkkkk mi crea gli stessi problemi di offset quando richiamo una scheda della fila sottostante.
E' una cosa che si può fare o lascio perdere?
Grazie
allego il file per rendere l'idea e se a qualcuno può servire.
http://www.mediafire.com/?dndgjmohyvx
nikfitz
Utente Junior
 
Post: 62
Iscritto il: 01/05/07 13:54


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] Copiare gruppi di caselle dove si desidera":


Chi c’è in linea

Visitano il forum: Nessuno e 132 ospiti