Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

ISTRUZIONE MACRO PER COPIARE INTERVALLO SPECIFICO

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

ISTRUZIONE MACRO PER COPIARE INTERVALLO SPECIFICO

Postdi mirmidone21 » 05/02/16 11:45

buongiorno a tutti
avrei bisogno di inserire in questa macro l'istruzione che mi copi la formula di concatenamento fino alla fine delle righe valide (riferite alla colonna J di fianco ).
il file ha le righe che non sono sempre le stesse, a volte sono 20.000 altre 25.0000, altre 12.000.
quindi io vorrei che la formula venisse copiata nella colonna K, dalla cella K2 fino alla cella utile per concatenare l'indirizzo.


Codice: Seleziona tutto
Sub Macro7()
'
' Macro7 Macro
' accorpa indirizzo
'

'
    Columns("K:K").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("K2").Select
    Columns("K:K").ColumnWidth = 24.14
    ActiveCell.FormulaR1C1 = _
        "=CONCATENATE(RC[-7],"" "",RC[-6],"" "",RC[-5],"" "",RC[-4],"" "",RC[-3],"" "",RC[-2],""("",RC[-1],"")"")"
    Range("K2").Select
    Selection.Copy
    Range("K3:K25000").Select
    ActiveSheet.Paste


io avevo usato un'istruzione di questo tipo, ma mi copia la formula fino alla fine del foglio (k1043000) e non va bene.

Codice: Seleziona tutto
ActiveSheet.Range("a1", _
   ActiveSheet.Range("a1").End(xlDown)).Select


come dovrei fare?
vi allego file di esempio
https://drive.google.com/file/d/0B2rmVF ... sp=sharing
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 124
Iscritto il: 26/10/15 16:48

Sponsor
 

Re: ISTRUZIONE MACRO PER COPIARE INTERVALLO SPECIFICO

Postdi Anthony47 » 06/02/16 00:22

Sostituisci queste righe
Range("K2").Select
Selection.Copy
Range("K3:K25000").Select
ActiveSheet.Paste

Con
Codice: Seleziona tutto
lastJ = Cells(Rows.Count, "J").End(xlUp).Row
Range("K2").Copy Range("K3:" & lastJ)

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

Re: ISTRUZIONE MACRO PER COPIARE INTERVALLO SPECIFICO

Postdi mirmidone21 » 06/02/16 10:16

grazie Anthony come sempre unico e insostituibile.
funziona mervigliosamente
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 124
Iscritto il: 26/10/15 16:48

Re: ISTRUZIONE MACRO PER COPIARE INTERVALLO SPECIFICO

Postdi mirmidone21 » 08/02/16 11:19

scusami Anthony, ma mi da quest'errore sulla riga
Range("K2").Copy Range("K3:" & lastJ)
errore di run-time '1004':
Metodo 'Range' dell'oggetto '_Global' non riuscito


forse perchè sul file ci sono tre fogli e bisogna specificare?
la macro si sviluppa sul foglio "affidato" e sul foglio "recapito0", in effetti fa la stessa cosa su ambedue i fogli (concatena)

ti allego la macro intera, ed il file di esempio più dettagliato.

https://drive.google.com/file/d/0B2rmVF ... sp=sharing

Codice: Seleziona tutto
Sub Macro7()
'
' Macro7 Macro
' accorpa indirizzo
'

'
    Columns("K:K").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("K2").Select
    Columns("K:K").ColumnWidth = 24.14
    ActiveCell.FormulaR1C1 = _
        "=CONCATENATE(RC[-7],"" "",RC[-6],"" "",RC[-5],"" "",RC[-4],"" "",RC[-3],"" "",RC[-2],""("",RC[-1],"")"")"
    lastJ = Cells(Rows.Count, "J").End(xlUp).Row
Range("K2").Copy Range("K3:" & lastJ)
    'Range("K2").Select
    'Selection.Copy
    'Range("K3:K25000").Select
    'ActiveSheet.Paste
    'Application.CutCopyMode = False
    Range("K2").Select
    Sheets("RECAPITO 0").Select
    ActiveWindow.SmallScroll ToRight:=2
    Columns("K:K").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("K2").Select
    Sheets("AFFIDATO").Select
    Selection.Copy
    Sheets("RECAPITO 0").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Selection.Copy
    Range("K3:K2000").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("K2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Columns("D:J").Select
    Range("J1").Activate
    Selection.Delete Shift:=xlToLeft
'    Columns("E:E").Select
'    Selection.Delete Shift:=xlToLeft
    Range("D2").Select
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Sheets("AFFIDATO").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Columns("D:J").Select
    Range("J1").Activate
    Selection.Delete Shift:=xlToLeft
'    Columns("E:E").Select
 '   Selection.Delete Shift:=xlToLeft
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "INDIRIZZO"
    Range("D2").Select
    Sheets("RECAPITO 0").Select
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "INDIRIZZO"
    Range("D2").Select
    Sheets("AFFIDATO").Select
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Range("A2").Select
End Sub


Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 124
Iscritto il: 26/10/15 16:48

Re: ISTRUZIONE MACRO PER COPIARE INTERVALLO SPECIFICO

Postdi Anthony47 » 09/02/16 02:02

Anthony ha scritto:
Codice: Seleziona tutto
lastJ = Cells(Rows.Count, "J").End(xlUp).Row
Range("K2").Copy Range("K3:" & lastJ)


mirmidone21 ha scritto:Grazie Anthony [....] funziona mervigliosamente

Ti ringrazio per la fiducia e la gratitudine preventiva :D :D

Purtroppo, come ti sei accorto successivamente, la riga Range("K2").Copy Range("K3:" & lastJ) e' sbagliata; quella giusta e'
Codice: Seleziona tutto
Range("K2").Copy Range("K3:K" & lastJ)
:oops:
Riprova, sarai piu' fortunato...
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: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: ISTRUZIONE MACRO PER COPIARE INTERVALLO SPECIFICO

Postdi mirmidone21 » 09/02/16 08:46

hai ragione, era fiducia a prescindere, come diceva TOTO' :lol: :lol: :lol:
cmq ora faccio doppia prova :) :) :)
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 124
Iscritto il: 26/10/15 16:48

Re: ISTRUZIONE MACRO PER COPIARE INTERVALLO SPECIFICO

Postdi mirmidone21 » 09/02/16 10:27

ok tutto bene, ho ritentato è sono stato fortunato, funziona perfettamente.
la fiducia era ben riposta :)
grazie
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 124
Iscritto il: 26/10/15 16:48


Torna a Applicazioni Office Windows


Topic correlati a "ISTRUZIONE MACRO PER COPIARE INTERVALLO SPECIFICO":


Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti