Macro per aggungere righe
Hai un problema con Excel? 
Macro per aggungere righe
di Claudio (utente non iscritto) data: 27/11/2015 12:36:09
Salve, avrei bisogno del vostro aiuto per creare una macro che svolga questa funzione.
Ho una tabella PRINCIPALE con 220 nomi e codici fiscali.
Su un secondo foglio ho una tabella con 12 righe e 20 colonne (ciascuna riga corrisponde ad un mese)
Vorrei creare in automatico – per ogni codice fiscale – 12 righe corrispondenti ai mesi dell’anno (e poi copiare il resto delle formule su tutte le righe).
Ho provato a creare una macro in Excel che ha generato questo codice che trova qui sotto.
I problemi sono 2
1) Se la ripeto sul nominativo seguente utilizza i riferimenti assoluti della prima riga anziché relativi alla riga su cui mi trovo.
Il riferimento dei figlio MODELLO devono invece restare fissi.
2)Dovrei ripetere la macro per 220 volte (ma questo sarebbe il meno)
Mi potete aiutare?
Grazie
‘ Sub Aggiungi_righe_mesi()
‘ Aggiungi_righe_mesi Macro
‘ Macro per l’aggiunta di 11 righe dopo ogni nominativo, copia dei dati delle prime tre colonne nelle 11 righe sottostanti e copia di una serie di celle FISSE con i nomi dei 12 mesi e le formule dal foglio MODELLO nelle colonne adiacenti
‘
‘ Scelta rapida da tastiera: CTRL+a
‘
Rows(“4:14”).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range(“A3:C3”).Select
Selection.Copy
Range(“A4:A14”).Select
ActiveSheet.Paste
Sheets(“MODELLO”).Select
Range(“B3:Q14”).Select
Application.CutCopyMode = False
Selection.Copy
Sheets(“NOMINATIVI”).Select
Range(“D3”).Select
ActiveSheet.Paste
End Sub |
di patel data: 27/11/2015 12:46:59
allega un file di esempio con la situazione attuale e quella desiderata
Inserire valori in una cella da una tabella
di mauritxt data: 27/11/2015 13:03:58
Buongiorno a tutti,
avrei l'esigenza di scrivere un codice VBA per compilare la colonna Name (quella con i ?) leggendo i nomi corrispondenti dallaTABELLA Name in base al proprio ID; vi copio le colonne del file excel:
prima colonna: ID
v1,v2,v3
v1
v2
v1,v2,v3,v4,v5
v4
-
-
v1
Seconda colonna: Name
?,?,?
?
?
?,?,?,?,?
?
N/D
N/D
?
Terza Colonna: TABELLA ID
v1
v2
v3
v4
v5
quarta colonna: TABELLA NAME
alfa
bravo
charlie
delta
echo
di alfrimpa data: 27/11/2015 13:45:20
@ mauritxt
Ti sei accodato ad una discussione preesistente.
Aprine una tua allegando un file di esempio con il risultato desiderato.
Da quello che dici credo che si possa risolvere con un CERCA.VERT()
Alfredo
di grisu59 data: 27/11/2015 14:32:33
File di esempio allegato
e grazie anticipate per il vostro aiuto
di alfrimpa data: 27/11/2015 14:49:25
@ mauritxt/Grisu59
Ti avevo chiesto di aprire una tua discussione e non accodarti ad una precedente e inoltre avevo chiesto un file e tu hai allegato un'immagine con la quale non si può far nulla.
Comunque con "Testo in colonne" puoi suddividere il testo contenuto nella colonna A e poi con il CERCA.VERT vai ad estrarre i relativi valori dalla tabella ID/NAME
Alfredo
di grisu59 data: 27/11/2015 15:14:13
Guardate che io sono quello che ha aperto la discussione e NON sono @mauritxt
ed ho allegato un file Excel zippato.
di mauritxt data: 27/11/2015 15:22:42
Scusatemi sono nuovo mi sono appena registrato e ho sbagliato.
Abbiate pazienza
Ciao
di alfrimpa data: 27/11/2015 15:59:50
Cit. "Guardate che io sono quello che ha aperto la discussione e NON sono @mauritxt"
Scusa ma se una volta entri come Claudio ed un'altra come Grisu59 come si fa a sapere con chi si sta parlando?
Alfredo
di grisu59 (utente non iscritto) data: 27/11/2015 16:28:45
Scusatemi
è che ho aperto la discussione prima di registrarmi.
Spero sia tutto ok
Nessun suggerimento?
di grisu59 data: 01/12/2015 10:15:21
Salve,
nessuno ha un suggerimento sul problema ed esempio che ho posto?
Grazie
di Albatros54 data: 02/12/2015 15:09:41
Allora, nel file che tua hai postato come esempio , ho aggiunto un foglio nominandolo "Foglio1", incolla il codice sotto , nel file che tu hai postato e la lanci.
Ciao
albatros54
Public Sub albatros54()
Dim sh4 As Worksheet
Dim sh5 As Worksheet
Dim sh1 As Worksheet
Dim lUltRiga As Long
Dim count As Long
Dim lng As Long
Dim ln As Long
Dim nm As String
Dim s1 As String
Dim s2 As String
With ThisWorkbook
Set sh4 = .Worksheets("Nominativi")
Set sh5 = .Worksheets("Foglio1")
Set sh1 = .Worksheets("MODELLO")
End With
With sh4
count = 1
'lUltRiga = .Range("A" & .Rows.count).End(xlUp).Row
For lng = 1 To 4 'lUltRiga << Adattare al tuo range
s1 = .Range("a" & lng)
nm = .Range("a" & lng).Offset(0, 1)
s2 = .Range("a" & lng).Offset(0, 2)
For ln = 3 To 14
sh5.Cells(count, 1) = sh4.Cells(lng, 1)
sh5.Range("b" & count) = sh4.Range("b" & lng)
sh5.Range("c" & count) = sh4.Range("c" & lng)
sh1.Cells(ln, 1).Resize(, 16).Copy sh5.Range("d" & count)
count = count + 1
Next
Next
End With
End Sub
|
Nuovo file?
di grisu59 data: 02/12/2015 15:17:08
Scusa non capisco dove sarebbe il nuovo file con FOGLIO1?
perchè se scarico il file ESEMPIO.ZIP trovo sempre quello che ho caricato io
di Albatros54 data: 02/12/2015 15:25:57
Non ho allegato il file, nel tuo file inserisci un nuovo fogli e in un modulo incolli il codice , comunque ti allego il file
di grisu59 data: 02/12/2015 20:37:01
Perdona la mia ignoranza:
come faccio ad inserire il testo che hai preparato in un modulo?
Grazie
di grisu59 data: 02/12/2015 21:08:38
Ho cercato un poco in rete e credo di aver combinato creando un pulsante in FOGLIO1 sta generando il foglio
vedo però che nella parte in basso appare la scritta riferimenti circolari M1 (cioè la cella fissa M1 nel foglio MODELLO)
Comunque poi ho risolto manualmente.
Grazie mille, gentilissimo!
di Albatros54 data: 03/12/2015 09:01:24
Gentilmente, se il problema è stao risolto, clik sul pulsante " Segnala come risolto"

Vuoi Approfondire?