Ciao,
a10n11 ha scritto:
creano riferimenti ai due fogli che poi devi utilizzare in elaborazioni successive?? se si dove e come.
in caso affermativo bisogna che mi fai vedere le macro associate.
in effetti volevo già postartele dall'inizio, ma temevo che alla fine il tuo giudizio
esatto sarebbe stato "
Arabo all'ennesima potenza"!! :)
Prima di procedere specifico che il Foglio 3 è stato eliminato, dato che riesco a fare la stessa cosa senza bisogno di averlo "tra i piedi".
Allora: Problema, dati questi valori elaborare dei dati e copiarli in fogli collegati, in posizioni tra di esse legate.
- situazione di partenza:
sett. 72'94 , seleziono la cella del settore in col.B di Foglio 1
in Foglio 2 seleziono la cella in col.AJ, pari riga di foglio 1
in foglio Sigma seleziono la cella in col.A, pari riga di Foglio 1 e Foglio 2
e da Foglio 1 faccio partire una macro che esegue una serie di operazioni di ordinamento e le restituisce in F.2 sotto forma di riga scritta sempre nella stessa riga, K22, indipendentemente dagli altri Fogli dato che F.2 è solo un foglio di calcolo)
Sub griglia_esc()
ActiveCell.Range("A1:F11").Select
Application.Run "
incolonna1"
Selection.Cut
Sheets("F.2").Select
Range("C13").Select
ActiveSheet.Paste
Application.Run "
griglia_per_esc"
Selection.Copy
Sheets("Foglio 2").Select
ActiveCell.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Offset(0, -28).Range("A1").Select
Sheets("Foglio 1").Select
ActiveCell.Offset(-20, -161).Range("A1").Select
End Sub
- - - - - - -
(le due macro richiamate)
Sub incolonna1()
ActiveCell.Offset(-10, 0).Range("A1:F11").Select
ActiveCell.Activate
Selection.Copy
ActiveCell.Offset(30, 160).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Range("A1:A11").Select
Application.CutCopyMode = False
Selection.ClearContents
ActiveCell.Offset(0, 2).Range("A1:A11").Select
Selection.Cut
ActiveCell.Offset(11, -1).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-11, 2).Range("A1:A11").Select
Selection.Cut
ActiveCell.Offset(22, -2).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-22, 3).Range("A1:A11").Select
Selection.Cut
ActiveCell.Offset(11, 1).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-11, 0).Range("A1:A22").Select
Selection.Cut
ActiveCell.Offset(33, -4).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-33, 0).Range("A1:A55").Select
Selection.Sort Key1:=ActiveCell, Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
- - - - - - -
Sub griglia_per_esc()
Selection.Copy
ActiveCell.Offset(33, 8).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
ActiveCell.Offset(-33, -8).Range("A1").Select
ActiveWindow.SmallScroll Down:=24
ActiveCell.Range("A1:A55").Select
Application.CutCopyMode = False
Selection.ClearContents
ActiveCell.Offset(9, 8).Range("A1").Select
ActiveCell.Range("A1:CL1").Select
End Sub
- - - - - -
Risultato: in Foglio 2 a partire dalla cella di Col.AJ,
nella stessa riga di quella del sett. di Foglio 1, vengono scritti dei nostri codici interni e alla fine viene puntata in Foglio 2 la cella da cui dovrà partire la macro "copia_Valori" (cella in col.H nella stessa riga) e in Foglio 1 verrà riselezionata la cella di partenza (quella di partenza di tutta l'operazione, col.B di Foglio 1, da cui dovrà partire la macro "Sigma_55". La pagina attiva torna quindi Foglio 1
- - - - - -
- faccio partire la macro
Sub Sigma_55()
Sheets("F.2").Select
ActiveWindow.SmallScroll Down:=24
ActiveCell.Offset(24, 0).Range("A1").Select
ActiveCell.Range("A1:BC1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sigma").Select
ActiveSheet.Paste
ActiveCell.Offset(0, 55).Range("A1").Select
Sheets("Foglio 1").Select
ActiveCell.Offset(1, 6).Range("A1").Select
End Sub
- - - - -
Risultato: in foglio Sigma vengono scritti dei valori a partire dalla cella A della stessa riga del sett. di Foglio 1 (e di Foglio 2). Al termine in foglio Sigma viene selezionata la cella successiva all'ultimo valore scritto dalla macro Sigma_55, e in Foglio 1 la cella in col.L della riga precedente a quella del settore (è una riga contenente delle formule che restituiscono nelle colonne A1,F1,K1,P1,U1,Z1,AE1,AJ1,AO1,AT1,AY1,BD1,BI1,BN1,BS1,BX1,CC1,CH1,CM1,CR1,CW1,DB1,DG1,DL1,DQ1,DV1 dei valori relativi al sett. in esame, che col sistema di trascinamento della cella si autocalcolano di volta in volta) La pagina su cui torna la macro è sempre Foglio 1
- - - - -
-faccio partire la macro
Sub prepara_eCopia_Sigma()
ActiveCell.Select
ActiveCell.Range("A1:DZ1").Select
Selection.AutoFill Destination:=ActiveCell.Offset(-1, 0).Range("A1:DZ2"), _
Type:=xlFillDefault
ActiveCell.Offset(-1, 0).Range("A1:DZ2").Select
ActiveCell.Offset(0, 0).Range("A1").Select
ActiveCell.Offset(0, 4).Range("A1").Select
Application.Run "
Copia_Valori"
Application.CutCopyMode = False
Sheets("Foglio 1").Select
ActiveCell.Offset(-1, -15).Range("A1").Select
End Sub
- - - - -
(la macro richiamata)
Sub Copia_Valori()
ActiveCell.Range( _
"A1,F1,K1,P1,U1,Z1,AE1,AJ1,AO1,AT1,AY1,BD1,BI1,BN1,BS1,BX1,CC1,CH1,CM1,CR1,CW1,DB1,DG1,DL1,DQ1,DV1" _
).Select
x = ActiveCell.Row
ActiveCell.Offset(0, 5).Range("A1").Activate
Selection.Copy
Sheets("foglio2").Select
Range("AJ" & x).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Offset(-1, 28).Range("A1").Select
Sheets("Sigma").Select
Range("AJ" & x).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Offset(-1, -55).Range("A1").Select
End Sub
- - - - -
Risultato: in foglio Sigma vengono scritti dei valori a partire dalla cella BD della stessa riga del sett. di Foglio 1 (e di Foglio 2), valori che vengono anche scritti in Foglio 2 a partire dalla cella selezionata dalla macro griglia_esc. Al termine in foglio Sigma viene selezionata la cella di col.A della riga superiore a quella del sett. in esame, in Foglio 2 viene selezionata la cella di col.AJ della riga superiore a quella del sett. in esame, in Foglio 1 (che rimane durante tutto il ciclo il foglio attivo) viene selezionata la cella di col.B della riga superiore a quella del sett. in esame (il tutto pronto per il giro successivo), che poi in realtà è il sett. successivo a quello in esame, ma
la tabella procede al contrario, dal basso verso l'alto...
in Arabo, appunto!!!!!!!!! ahahahahahahahaha
Spero di essere stato chiaro e preciso in modo sufficiente....
Grazie assai e buona serata,
eZio.