Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

aggiungere righe vuote

916 views
Skip to first unread message

Anselmo

unread,
May 3, 2010, 7:47:07 AM5/3/10
to
Vorrei inserire una riga vuota di separazione quando il valore presente
nella prima colonna cambia .

Ad esempio , adesso ho un foglio di excel con le seguenti righe :

10
10
10
12
12
12
12
14
15
15
15

Deve diventare :

10
10
10

12
12
12
12

14

15
15
15

Grazie e ciao


Scossa

unread,
May 3, 2010, 8:20:57 AM5/3/10
to
On 3 Mag, 13:47, "Anselmo" <lib...@libero.com> wrote:
> Vorrei inserire una riga vuota di separazione  quando il valore presente
> nella prima colonna cambia .
>

Premessa: selezioni le celle della sola colonna A coi dati, poi lanci
la seguente macro VBA, da inserire in un modulo standard:

'------------------------
Option Explicit

Public Sub InsRiga()

Dim rng As Range
Dim cella As Range
Dim j As Long

Set rng = Selection
For j = rng.Rows.Count To 2 Step -1
Set cella = rng.Cells(j, 1)
With cella
If .Value <> .Offset(-1).Value Then
.EntireRow.Insert
End If
End With
Next j
Set rng = Nothing
Set cella = Nothing

End Sub
'------------------------

Fai sapere se hai risolto, grazie.

Bye!
Scossa

Mauro Gamberini

unread,
May 3, 2010, 8:34:06 AM5/3/10
to

Questa macro, da copia incollare in un
modulo standard, fa quanto chiedi sulla colonna A
del Foglio1.

Public Sub m()

'dichiaro le variabili
Dim wk As Workbook
Dim sh As Worksheet
Dim lng As Long

'metto un riferimento al workbook
'che contiene il codice
Set wk = ThisWorkbook

'metto un riferimento al Foglio1
With wk
Set sh = .Worksheets("Foglio1")
End With

With sh
'ciclo le celle interessate partendo dallultima
For lng = .Range("A" & .Rows.Count).End(xlUp).Row To 2 Step -1
'se il contenuto della cella superiore � diverso
If .Cells(lng, 1).Value <> .Cells(lng - 1, 1).Value Then
'inserisco una riga
.Cells(lng, 1).Insert Shift:=xlDown
End If
Next
End With

'Set a Nothing delle variabili oggetto
Set sh = Nothing
Set wk = Nothing

End Sub

Modifica Foglio1 con il nome del tuo foglio
e A con la lettera di riferimento alla colonna
dove hai i tuoi valori.

Grazie per l'attenzione.

--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.answers.microsoft.com/Forums/it-IT/officeexcelit/threads


__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 5081 (20100503) __________

Il messaggio � stato controllato da ESET NOD32 Antivirus.

www.nod32.it

Anselmo

unread,
May 3, 2010, 9:07:46 AM5/3/10
to
grazie , ho usato questa routine perch� mi risparmiava di dover prima
selezionare la colonna :-)

PS : la riga

.Cells(lng, 1).Insert Shift:=xlDown


inserisce una riga vuota , se io volessi invece inserire ( cio� copiare )
una certa riga o cella con dentro un certo valore , come cambierebbe
l'istruzione ?


Grazie e ciao


Mauro Gamberini

unread,
May 3, 2010, 10:29:42 AM5/3/10
to
<cut>

Grazie per il riscontro.

Vediamo di chiarire una cosa, per�.
La mia routine aggiunge una cella
vuota. Per aggiungere un'intera riga,
sostituisci:

.Cells(lng, 1).Insert Shift:=xlDown

con

.Cells(lng, 1).EntireRow.Insert Shift:=xlDown

> se io volessi invece inserire ( cio� copiare ) una certa riga o cella con

> dentro un certo valore , come cambierebbe l'istruzione ?
>

Inserire e copiare una riga sono due cose ben diverse.
Esattamente cosa devi fare?
Grazie.


__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 5082 (20100503) __________

Anselmo

unread,
May 3, 2010, 10:58:47 AM5/3/10
to
>
> Inserire e copiare una riga sono due cose ben diverse.
> Esattamente cosa devi fare?
> Grazie.

mi serviva appunto inserire una riga ( che contiene valori nelle prine 5
celle ) che si trova nel Foglio2 ( � la prima riga del foglio2)


Grazie ciao


Mauro Gamberini

unread,
May 3, 2010, 12:08:08 PM5/3/10
to
> mi serviva appunto inserire una riga ( che contiene valori nelle prine 5
> celle ) che si trova nel Foglio2 ( � la prima riga del foglio2)
>

Scusa ma non capisco.
Se(se) nelle righe che andiamo ad inserire
in Foglio1, vuoi copiare quanto contenuto
in A1:E1 del Foglio2:

Public Sub m()

'dichiaro le variabili
Dim wk As Workbook

Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim lng As Long

'metto un riferimento al workbook
'che contiene il codice
Set wk = ThisWorkbook

'metto un riferimento al Foglio1
With wk

Set sh1 = .Worksheets("Foglio1")
Set sh2 = .Worksheets("Foglio2")
End With

With sh1


'ciclo le celle interessate partendo dallultima
For lng = .Range("A" & .Rows.Count).End(xlUp).Row To 2 Step -1
'se il contenuto della cella superiore � diverso
If .Cells(lng, 1).Value <> .Cells(lng - 1, 1).Value Then
'inserisco una riga

.Cells(lng, 1).EntireRow.Insert Shift:=xlDown
'copio da A1:E1 del Foglio2 e incollo
'nella riga creata partendo dalla colonna A
sh2.Range("A1:E1").Copy Destination:=.Cells(lng, 1)


End If
Next
End With

'Set a Nothing delle variabili oggetto

Set sh1 = Nothing
Set sh2 = Nothing
Set wk = Nothing

End Sub

Se non � questo che vuoi, per favore
spiega meglio. Grazie

Anselmo

unread,
May 3, 2010, 1:35:53 PM5/3/10
to
>
> Se non � questo che vuoi, per favore
> spiega meglio. Grazie
>

va benissimo grazie


Mauro Gamberini

unread,
May 3, 2010, 1:50:16 PM5/3/10
to
> va benissimo grazie
>

Bene.
Grazie per il riscontro e buon lavoro.

__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 5083 (20100503) __________

0 new messages