| | Post: 1 | Registrato il: 18/10/2017
| Città: VINOVO | Età: 42 | Utente Junior | 2007 | | OFFLINE | |
|
18/10/2017 11:50 | |
Ciao a tutti!
Ho necessità di inserire dopo due righe una riga. Ho provato sbirciando le discussioni precedenti e sono riuscita a inserire per ogni riga una due o tre righe ma non riesco a fare al contrario.
Mi spiego meglio. Ho un foglio con molte righe compilate
marco
marco
giuseppe
giuseppe
mario
mario
Ora ho necessità di aggiungere una riga ogni due in modo che i nomi vengano distaccati. Ho provato ma nel mio codice ci deve essere un errore perchè mi mette una riga sotto marco e poi sotto marco giuseppe, poi sotto giuseppe mario etc.. E' che sono andata un po' a caso a modificare la macro perchè non le conosco e ora non so proprio cosa scrivere nel modulo.
Grazie mille
|
|
| | Post: 2.028 | Registrato il: 21/03/2008
| Città: LOCATE VARESINO | Età: 76 | Utente Veteran | 2007 / 13 | | OFFLINE | |
|
18/10/2017 12:08 | |
ciao
per questo lavoro devi sempre partire dalla fine con il coclo For
ammettiamo i tuoi dati in colonna A:A
Sub inserisci()
Dim i As Long
For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
If Cells(i, 1) <> Cells(i - 1, 1) Then
Cells(i, 1).EntireRow.Insert
End If
Next i
End Sub
Ciao da locate
excel 2007 / 13 |
| | Post: 1 | Registrato il: 18/10/2017
| Città: VINOVO | Età: 42 | Utente Junior | 2007 | | OFFLINE | |
|
18/10/2017 12:32 | |
In questo modo mi ha inserito una riga solo sotto marco marco. Dove ho sbagliato? |
| | Post: 2.029 | Registrato il: 21/03/2008
| Città: LOCATE VARESINO | Età: 76 | Utente Veteran | 2007 / 13 | | OFFLINE | |
|
18/10/2017 12:41 | |
ciao
la macro o la sub lavora con i dati che tu ai esposto in partenza
prima
------------
marco
marco
giuseppe
giuseppe
mario
mario
dopo la sub
-----------
marco
marco
giuseppe
giuseppe
mario
mario
come vedi questa a insirito due righe di divisorio
ora deduco che i tuoi dati non sono conformi da come li ai esposti allinizio quindi allega un file tuo con dati fittizi per capire la struttura del tuo foglio e adequare la macro o la sub() al tuo proplema
Ciao da locate
excel 2007 / 13 |
| | Post: 2 | Registrato il: 18/10/2017
| Città: VINOVO | Età: 42 | Utente Junior | 2007 | | OFFLINE | |
|
18/10/2017 13:51 | |
|
| | Post: 2.030 | Registrato il: 21/03/2008
| Città: LOCATE VARESINO | Età: 76 | Utente Veteran | 2007 / 13 | | OFFLINE | |
|
18/10/2017 14:44 | |
ciao
la sub sul mio excel funziona
ho inserito un controllo per non fare il lavoro di inserimento doppio
Sub inserisci()
Dim i As Long
For i = Cells(Rows.Count, 1).End(xlUp).Row To 6 Step -1
If Cells(i, 1) <> Cells(i - 1, 1) Then
If Cells(i, 1) <> "" And Cells(i - 1, 1) <> "" Then '' controllo per riga gia' inserita
Cells(i, 1).EntireRow.Insert
End If
End If
Next i
End Sub
riallego il tuo file con sub() inserita
Ciao da locate
excel 2007 / 13 |
| | Post: 3 | Registrato il: 18/10/2017
| Città: VINOVO | Età: 42 | Utente Junior | 2007 | | OFFLINE | |
|
18/10/2017 16:18 | |
Grazie.. sei gentilissimo ma a me continua a non funzionare, mi inserisce solo una riga dopo le prime due e basta. Però sono riuscita a risolverla con questa
Sub Ins_Righe()
Dim uriga, n, x
uriga = Cells(Rows.Count, "A").End(xlUp).Row
n = 1
For x = uriga To 2 Step -2
Rows(x + 1 & ":" & x + n).Insert
Next x
End Sub
Non ho idea di come abbia fatto e di cosa ho scritto perchè non ho mai visto Visual Basic in vita mia prima di stamattina! Ci sono arrivata confrontando un po' di discussioni e facendo delle prove.. poi magari ho scritto una cavolata ma mi funziona.. e non so perchè!!!!
Grazie mille!!!!! |
| | Post: 1.636 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
22/10/2017 11:43 | |
Ciao Manu
è pur vero che la "tua" macro funziona (anche se ti sposta l'elenco originale in basso di una riga), ma solo se la esegui una volta, e solo se i nominativi sono in coppia, se per esempio hai:
...
...
MARCO
ANTONIO
...
...
la tua sub li lascia uniti.
Inoltre se (magari per errore) la esegui 2 o più volte, succede un patatrac.
La routine proposta da locate (ciao) invece funziona molto correttamente ed evita i suddetti errori.
Ti suggerisco di usare quest'ultima; se hai problemi sottoponi il tuo file perchè è evidente che c'è qualcosa di diverso da quanto dici nella tua struttura.
Saluti
[Modificato da dodo47 22/10/2017 11:45] Domenico
Win 10 - Excel 2016 |
| | Post: 4 | Registrato il: 18/10/2017
| Città: VINOVO | Età: 42 | Utente Junior | 2007 | | OFFLINE | |
|
23/10/2017 09:24 | |
Ragazzi vi ringrazio per la disponibilità.
Con calma ho riprovato quella di locate. Mi mette una riga ogni due ma mi lascia uniti 4 nomi uguali. Es:
marco
marco
antonio
antonio
enrico
enrico
enrico
enrico
mi diventa
marco
marco
antonio
antonio
enrico
enrico
enrico
enrico
Non mi divide "enrico".
Vi allego il file su cui ho fatto la prova. Spero di non disturbarvi troppo, purtroppo per me è arabo. |
| | Post: 2.031 | Registrato il: 21/03/2008
| Città: LOCATE VARESINO | Età: 76 | Utente Veteran | 2007 / 13 | | OFFLINE | |
|
23/10/2017 10:03 | |
ciao
piccola modifica per questi casi
prima della sub()
marco
marco
antonio
antonio
pippo
pluto
paperino
enrico
enrico
enrico
enrico
pippo
la sub() o macro
Sub inserisci()
Dim i As Long
Dim Nrig As Long
Nrig = 1
For i = Cells(Rows.Count, 1).End(xlUp).Row To 6 Step -1
If Nrig = 2 Then
If Cells(i - 1, 1) = "" Then
Nrig = 1
Else
Cells(i, 1).EntireRow.Insert
Nrig = 1
End If
Else
If Cells(i, 1) <> Cells(i - 1, 1) Then
If Cells(i, 1) <> "" And Cells(i - 1, 1) <> "" Then '' controllo per riga gia' inserita
Cells(i, 1).EntireRow.Insert
End If
Else
Nrig = Nrig + 1
End If
End If
Next i
End Sub
dopo la sub eseguita per tre volte il risultato e' questo
marco
marco
antonio
antonio
pippo
pluto
paperino
enrico
enrico
enrico
enrico
pippo
Ciao da locate
excel 2007 / 13 |
| | Post: 5 | Registrato il: 18/10/2017
| Città: VINOVO | Età: 42 | Utente Junior | 2007 | | OFFLINE | |
|
23/10/2017 11:33 | |
Grazie.. siete dei grandi!!!!
|
|
|