Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] ...con una Macro da un matrice.... (2° puntata)

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] ...con una Macro da un matrice.... (2° puntata)

Postdi Venerdi » 27/10/07 09:04

Anthony, torno con un altro interrogativo, simile a quello che mi hai brillantemente risolto nel mio post
http://www.pc-facile.com/forum/viewtopi ... df5820fa74

Allora, ho sempre una matrice, questa volta fatta così:
_____NomeCol1___NomeCol2____......____NomeColN
3_____Roma_______Milano______......______Napoli
1_____Palermo______Ivrea______......______Bologna
2_____Firenze______Venezia_____......_____Catania
Come la scorsa volta, questo è un esempio; la matrice reale ha circa 80 righe e 40 colonne.
L'obiettivo è di riportare su un altro foglio, dalla cella A2 le righe (dalla Col1 alla ColN) tante volte quanto indicato dal numero che si trova nella matrice nella prima cella a sinistra.
Nel caso illustrato dovrei ottenere:
Roma_______Milano______......______Napoli
Roma_______Milano______......______Napoli
Roma_______Milano______......______Napoli
Palermo______Ivrea______......______Bologna
Firenze______Venezia_____......_____Catania
Firenze______Venezia_____......_____Catania

Ho tentato di utilizzare la macro che mi hai scritto per l'altro problema, ma non avendola saputa decifrare per intero, non sono stato capace.

Approfitto anche per domandare un'ultima cosa diversa, ma che penso semplicissima.... (non per me ovviamente)
Capita spesso nelle macro di fare dei copia/incolla (o taglia/incolla).

Ad esempio
Range("A1:E2").Select
Selection.Copy
Range("G1").Select
ActiveSheet.Paste

Bene, è possibile avere un codice da inserire nelle macro dove il range di partenza venga chiesto tramite un box d'inserimento. ed altrettanto avvenga per la cella o l'intervallo di destinazione?

Grazie!

V.
Avatar utente
Venerdi
Utente Junior
 
Post: 43
Iscritto il: 18/03/02 20:05
Località: Roma

Sponsor
 

Postdi Anthony47 » 29/10/07 02:05

Per il primo quesito, la macro cambia cosi’:
Codice: Seleziona tutto
Sub venerdi2()
CWs = "Venerdi"         '<< Foglio su cui giace la tabella
Tabella = "F3:J13"      '<< Indirizzo di tabella
FOut = "Venerdi"        '<< Foglio su cui si costruisce l' output
DestCol = 13            'Colonna su cui generare: 1=A, 2=B, etc
'
'AZZERA colonna di Output sul foglio di Output
Larg = Range(Tabella).Columns.Count
Sheets(FOut).Select
Range(Cells(1, 1), Cells(65536, Larg)).Offset(0, DestCol - 1).Select
'... chiedi conferma
Mess = "Cancello la colonna selezionata???" & vbCrLf & ">>  OK per Confermare; ANNULLA per abortire"
scelta = MsgBox(Prompt:=Mess, Buttons:=vbOKCancel)
If scelta = 2 Then GoTo Esci    'Cancel
Selection.Clear
'poi crea lista
Sheets(CWs).Select
STab = Range(Tabella).Range("A1").Address
For J = 1 To Range(Tabella).Columns.Count - 1
 For I = 1 To Range(Tabella).Rows.Count - 1
 Range(STab).Offset(I, J).Select
  For K = 1 To Range(STab).Offset(I, 0).Value
   Range(STab).Offset(I, J).Copy Destination:=Sheets(FOut).Cells(65536, DestCol + J - 1).End(xlUp).Offset(1, 0)
  Next K
 Next I
Next J
Esci:
Sheets(CWs).Select
End Sub



Per il secondo quesito, se il problema e’ esattamente quello posto allora io dico che la risposta e’ fare le cose a mano: automatizzare vuol dire digitare “A1:E2”,premere Ok, poi “G1”, premere Ok; fare a mano vuol dire piu' semplicemente selezionare la prima area, Contr-c, selezionare G1, Contr-v.
Comunque la risposta piu’ asettica e’ “InputBox”, ad esempio qualcosa come
Codice: Seleziona tutto
Area = InputBox("Dimmi l' area")
Range(Area).Select


Ciao, fai sapere.
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: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi Venerdi » 29/10/07 18:13

Ti ringrazio, anche per questi due quesiti; mi hai fornito una soluzione ottimale.
Il box di richiesta è proprio ciò che andavo cercando. Non mi occorre per il caso utilizzato come esempio, ma da inserire in macro ben più lunghe dove nel momento di indicare alcuni ranges vi sono variazioni che non ho voglia di andare ad inserire "a manina".

Devo quindi rinnovarti tutta la mia gratitudine...

Ciao
V.
Avatar utente
Venerdi
Utente Junior
 
Post: 43
Iscritto il: 18/03/02 20:05
Località: Roma

Postdi castor71 » 30/10/07 02:15

Ciao a tutti, scusate l'intrusione, sto disperatamente cercando una soluzione al mio problema e mi sono imbattuto in voi...
se qualcuno è così gentile da risolverlo ne sarei mooolto grato ;)
dunque:
in un foglio excel ho una serie di olte 3000 indirizzi:
i nomi sono nelle celle a1, a7, a13 e così via cioè ogni sei celle sempre nella colonna A
la via è nelle celle a2, a8, a14 cioè sempre ogni 6 celle verso il basso
stessa cosa per CAP e città (a3, a9, 15)
vorrei creare un nuovo foglio e
copiare a1,a2,a3 e incollarli in a1,b1,c1;
copiare a7,a8,a9 e incollarli in a2,b2,c2
e così via per tutti e 3000 gli indirizzi

in parole povere, invece di avere:

pippo baudo
via cicciobello 89
40100 Roma

vorrei ottenere:

pippo baudo via cicciobello 89 0100 Roma

è possibile?
spero che qualcuno sia in grado di aiutarmi....

grazie 1000!!!!!
castor71
Newbie
 
Post: 2
Iscritto il: 30/10/07 01:58

Postdi Anthony47 » 31/10/07 02:13

Ciao castor71 e benvenuto nel forum
Vai sul secondo foglio e metti in A1 la seguente formula
Codice: Seleziona tutto
=SCARTO('Foglio1'!$A$1;(RIF.RIGA()-1)*6+RIF.COLONNA()-1;0)

(se il foglio da cui prendere i dati non e' Foglio1, modifica di conseguenza)
Poi copia A1 e incolla su B1 e C1; poi copia A1:C1 e incolla in verticale per quanti nomi devi gestire.

Ciao.

PS: sarebbe stato meglio se avessi creato una nuova discussione, con un titolo attinente alla tua domanda; vale per il prossimo problema.
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: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi castor71 » 31/10/07 13:07

Anthony47 sei grande!!
Ti ringrazio infinitamente!
in poki minuti mi hai risolto un problema che mi dava un fastidio incredibile...
soprattutto perchè da 3000 erano saliti a 7000!!!
ancora grazie mille!!!!

ps: scusa per nn aver creato una nuova discussione, lo farò senz'altro la prossima volta!

ciao
castor71
Newbie
 
Post: 2
Iscritto il: 30/10/07 01:58


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] ...con una Macro da un matrice.... (2° puntata)":


Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti