Discussione:
dividere celle unite e copiarne in ognuna il contenuto
(troppo vecchio per rispondere)
SiNi
2007-09-04 07:06:50 UTC
Permalink
Ciao a tutti.

Ho questo problema:

A B C D E F G H

1 36341 1 E prova pa 10,00 5 5,00
2 36342 2 E
3 36344 3 E
4 36347 4 E
5 36348 5 E
6 36349 6 E



e vorrei poter dividere le celle unite colonne D-E-F-G-H in celle singole e
copiarne in ognuna il contenuto.
Il tutto con una macro, visto che ho parecchi casi come quello sopra
riportato nel mio foglio di lavoro.
Il risultato è qui sotto.


A B C D E F G H

1 36341 1 E prova pa 10,00 5 5,00
2 36342 2 E prova pa 10,00 5 5,00
3 36344 3 E prova pa 10,00 5 5,00
4 36347 4 E prova pa 10,00 5 5,00
5 36348 5 E prova pa 10,00 5 5,00
6 36349 6 E prova pa 10,00 5 5,00


Il tutto con una macro, visto che ho parecchi casi come quello sopra
riportato nel mio foglio di lavoro.

Qualcuno puo' aiutarmi?

Grazie.

SiNi
eliano
2007-09-04 10:00:01 UTC
Permalink
Post by SiNi
Ciao a tutti.
A B C D E F G H
1 36341 1 E prova pa 10,00 5 5,00
2 36342 2 E
3 36344 3 E
4 36347 4 E
5 36348 5 E
6 36349 6 E
e vorrei poter dividere le celle unite colonne D-E-F-G-H in celle singole e
copiarne in ognuna il contenuto.
Il tutto con una macro, visto che ho parecchi casi come quello sopra
riportato nel mio foglio di lavoro.
Il risultato è qui sotto.
A B C D E F G H
1 36341 1 E prova pa 10,00 5 5,00
2 36342 2 E prova pa 10,00 5 5,00
3 36344 3 E prova pa 10,00 5 5,00
4 36347 4 E prova pa 10,00 5 5,00
5 36348 5 E prova pa 10,00 5 5,00
6 36349 6 E prova pa 10,00 5 5,00
Il tutto con una macro, visto che ho parecchi casi come quello sopra
riportato nel mio foglio di lavoro.
Qualcuno puo' aiutarmi?
Ciao Sini.
Avevo già rifilato qualcosa di simile in tempi recenti, per cui prova:

Sub provasplit()
Dim CL As Range
Dim MC As String
Dim RNG As Range
Dim B() As String
Dim I As Long
Dim X As Long
Dim Y As Long
Sheets("Foglio1").Select
Set RNG = Range("a1:a10") ' <----- da variare
For Each CL In RNG
If CL.Value = "" Then Exit Sub
Y = 3
Cells(CL.Row, CL.Column + Y).Select
MC = Cells(CL.Row, CL.Column + Y)
With Selection
.MergeCells = False
End With
X = 2
B = Split(MC, " ")
For I = LBound(B) To UBound(B)
X = X + 1
Cells(CL.Row, CL.Column + X) = B(I)
Next
Next
End Sub

Non testata, provala e facci sapere.
Eliano
SiNi
2007-09-04 12:51:56 UTC
Permalink
Post by eliano
Ciao Sini.
Sub provasplit()
Dim CL As Range
Dim MC As String
Dim RNG As Range
Dim B() As String
Dim I As Long
Dim X As Long
Dim Y As Long
Sheets("Foglio1").Select
Set RNG = Range("a1:a10") ' <----- da variare
For Each CL In RNG
If CL.Value = "" Then Exit Sub
Y = 3
Cells(CL.Row, CL.Column + Y).Select
MC = Cells(CL.Row, CL.Column + Y)
With Selection
.MergeCells = False
End With
X = 2
B = Split(MC, " ")
For I = LBound(B) To UBound(B)
X = X + 1
Cells(CL.Row, CL.Column + X) = B(I)
Next
Next
End Sub
Non testata, provala e facci sapere.
Eliano
Ciao Eliano,

mi da errore qui:

With Selection --->errore
.MergeCells = False
End With ---> errore

Si potrebbe fare una cosa piu' dinamica cioè in base alle celle che io
seleziono e faccio partire la macro con una combinazione di tasti?

Grazie.
eliano
2007-09-04 22:22:02 UTC
Permalink
Post by SiNi
Post by eliano
Ciao Sini.
Sub provasplit()
Dim CL As Range
Dim MC As String
Dim RNG As Range
Dim B() As String
Dim I As Long
Dim X As Long
Dim Y As Long
Sheets("Foglio1").Select
Set RNG = Range("a1:a10") ' <----- da variare
For Each CL In RNG
If CL.Value = "" Then Exit Sub
Y = 3
Cells(CL.Row, CL.Column + Y).Select
MC = Cells(CL.Row, CL.Column + Y)
With Selection
.MergeCells = False
End With
X = 2
B = Split(MC, " ")
For I = LBound(B) To UBound(B)
X = X + 1
Cells(CL.Row, CL.Column + X) = B(I)
Next
Next
End Sub
Non testata, provala e facci sapere.
Eliano
Ciao Eliano,
With Selection --->errore
.MergeCells = False
End With ---> errore
Si potrebbe fare una cosa piu' dinamica cioè in base alle celle che io
seleziono e faccio partire la macro con una combinazione di tasti?
Grazie.
Ciao Sini.
Dire che da errore non significa niente se non si specifica il tipo di errore.
Comunque vedi sul mio disco remoto:
http://mio.discoremoto.alice.it/falinieliano/ il file splittacelleunite.xls
L'ho fatto or ora con xl2003 di una amica, spostando solo una istruzione
dopo la selection, anche se funzionava tutto normalmente nella versione
originale.
Mi spieghi cosa significa per te "una cosa più dinamica" e perchè vuoi una
cosa simile; per caso esistono delle celle unite da suddividere negli
elementi contenuti ed altre invece da non trattare?
Mah, facci sapere.
Eliano
SiNi
2007-09-05 07:42:02 UTC
Permalink
Post by eliano
Ciao Sini.
Dire che da errore non significa niente se non si specifica il tipo di errore.
http://mio.discoremoto.alice.it/falinieliano/ il file
splittacelleunite.xls
L'ho fatto or ora con xl2003 di una amica, spostando solo una istruzione
dopo la selection, anche se funzionava tutto normalmente nella versione
originale.
Mi spieghi cosa significa per te "una cosa più dinamica" e perchè vuoi una
cosa simile; per caso esistono delle celle unite da suddividere negli
elementi contenuti ed altre invece da non trattare?
Ciao Eliano.

Ho scaricato il tutto, ma non è come dicevo io il discorso.
Praticamente dalla cella D2 alla cella H6 è un'unica cella (quindi l'unione
di celle)
Io volevo fare in modo che il range (quindi l'unica cella) dalla D2 alla
H6, si dividesse nelle rispettive celle e poi il contenuto della D1, E1, F1,
G1, H1 fossero copiate nelle celle divise. (non come hai fatto tu che in un
unica cella hai diviso le varie parole in piu' celle, qui le parole sono già
all'interno delle singole celle D1, E1, F1, G1, H1 )

A B C D E F G
H

1 36341 1 E prova pa 10,00 5 5,00
2 36342 2 E
3 36344 3 E
4 36347 4 E
5 36348 5 E
6 36349 6 E


Il risultato dovrebbe essere questo


A B C D E F G H

1 36341 1 E prova pa 10,00 5 5,00
2 36342 2 E prova pa 10,00 5 5,00
3 36344 3 E prova pa 10,00 5 5,00
4 36347 4 E prova pa 10,00 5 5,00
5 36348 5 E prova pa 10,00 5 5,00
6 36349 6 E prova pa 10,00 5 5,00

Per quanto riguarda la cosa "dinamica", mi riferisco al fatto che vorrei
scegliere al momento io le celle mediante selezione col mouse e non
impostare:

Set RNG = Range("a1:a10") ' <----- da variare

ma bensi le celle che seleziono al momento poichè nel mio foglio ci sono piu
celle da splittare e copiare e quindi non solo nel range A1:a10

Spero di essermi spiegato bene...se cosi non fosse...cerchero' di fare
meglio...

Grazie ancora!
SiNi
eliano
2007-09-05 10:16:02 UTC
Permalink
Post by SiNi
Post by eliano
Ciao Sini.
Dire che da errore non significa niente se non si specifica il tipo di errore.
http://mio.discoremoto.alice.it/falinieliano/ il file
splittacelleunite.xls
L'ho fatto or ora con xl2003 di una amica, spostando solo una istruzione
dopo la selection, anche se funzionava tutto normalmente nella versione
originale.
Mi spieghi cosa significa per te "una cosa più dinamica" e perchè vuoi una
cosa simile; per caso esistono delle celle unite da suddividere negli
elementi contenuti ed altre invece da non trattare?
Ciao Eliano.
Ho scaricato il tutto, ma non è come dicevo io il discorso.
Praticamente dalla cella D2 alla cella H6 è un'unica cella (quindi l'unione
di celle)
Io volevo fare in modo che il range (quindi l'unica cella) dalla D2 alla
H6, si dividesse nelle rispettive celle e poi il contenuto della D1, E1, F1,
G1, H1 fossero copiate nelle celle divise. (non come hai fatto tu che in un
unica cella hai diviso le varie parole in piu' celle, qui le parole sono già
all'interno delle singole celle D1, E1, F1, G1, H1 )
A B C D E F G
H
1 36341 1 E prova pa 10,00 5 5,00
2 36342 2 E
3 36344 3 E
4 36347 4 E
5 36348 5 E
6 36349 6 E
Il risultato dovrebbe essere questo
A B C D E F G H
1 36341 1 E prova pa 10,00 5 5,00
2 36342 2 E prova pa 10,00 5 5,00
3 36344 3 E prova pa 10,00 5 5,00
4 36347 4 E prova pa 10,00 5 5,00
5 36348 5 E prova pa 10,00 5 5,00
6 36349 6 E prova pa 10,00 5 5,00
Per quanto riguarda la cosa "dinamica", mi riferisco al fatto che vorrei
scegliere al momento io le celle mediante selezione col mouse e non
Set RNG = Range("a1:a10") ' <----- da variare
ma bensi le celle che seleziono al momento poichè nel mio foglio ci sono piu
celle da splittare e copiare e quindi non solo nel range A1:a10
Spero di essermi spiegato bene...se cosi non fosse...cerchero' di fare
meglio...
Ciao Sini.
Evidentemente io non avevo capito che le celle unite andavano dalla D2 alla
H6 e d'altra parte tu non lo avevi specificato nel post iniziale; partendo
dal presupposto forse sbagliato di una certa coerenza, mi sembrava strano che
esistessero delle celle unite e delle celle disunite nelle medesime colonne.
Comunque, prova questa macro e fammi sapere, grazie.

Sub prova()
Dim cl As Range
Dim rng As Range
Dim r As Long
Dim c As Long
Dim x As Long

Range("D1:H10").Select ' <----- da variare
With Selection
.MergeCells = False
End With
Range("D1").Select

For Each cl In Range("D1:D10") ' <----- da variare
r = cl.Row
c = cl.Column
If cl.Value = "" Then
For x = 4 To 8
Cells(r, x) = Cells(r - 1, x)
Next
End If
Next
End Sub
Post by SiNi
Set RNG = Range("a1:a10") ' <----- da variare
ma bensi le celle che seleziono al momento poichè nel mio foglio ci sono piu
celle da splittare e copiare e quindi non solo nel range A1:a10
Sinceramente questa non l'ho capita; se i tuoi riferimenti sono diversi da
quelli di prova, provvedi a cambiarli con i tuoi.:-))
Facci sapere
Eliano
SiNi
2007-09-05 13:46:08 UTC
Permalink
Post by eliano
Ciao Sini.
Evidentemente io non avevo capito che le celle unite andavano dalla D2 alla
H6 e d'altra parte tu non lo avevi specificato nel post iniziale; partendo
dal presupposto forse sbagliato di una certa coerenza, mi sembrava strano che
esistessero delle celle unite e delle celle disunite nelle medesime colonne.
Comunque, prova questa macro e fammi sapere, grazie.
Sub prova()
Dim cl As Range
Dim rng As Range
Dim r As Long
Dim c As Long
Dim x As Long
Range("D1:H10").Select ' <----- da variare
With Selection
.MergeCells = False
End With
Range("D1").Select
For Each cl In Range("D1:D10") ' <----- da variare
r = cl.Row
c = cl.Column
If cl.Value = "" Then
For x = 4 To 8
Cells(r, x) = Cells(r - 1, x)
Next
End If
Next
End Sub
Post by eliano
Set RNG = Range("a1:a10") ' <----- da variare
ma bensi le celle che seleziono al momento poichè nel mio foglio ci sono piu
celle da splittare e copiare e quindi non solo nel range A1:a10
Sinceramente questa non l'ho capita; se i tuoi riferimenti sono diversi da
quelli di prova, provvedi a cambiarli con i tuoi.:-))
Ciao Eliano,

allora per splittare le celle, lo fa correttamente, ma poi non copia i dati
compresi tra il D1 e D10 dalla riga 1 alla 10.

Per quanto riguarda i riferimenti che tu non riesci a capire...dunque
vediamo...
Per capirci dovrei cambiare continuamente range, cioè aprire la macro e
mettere come range D1:H10 e farla partire, poi riaprirla e mettere il range
D52:H60 poi farla partire, poi riaprirla etc...

Quindi volevo utilizzare la selezione del mouse come range dinamico...cioè
che cambi da solo i valori...D1:H10...cioè in base alle celle che seleziono.

Intanto ti ringrazio ancora...

SiNi
eliano
2007-09-05 14:58:07 UTC
Permalink
Post by SiNi
Post by eliano
Ciao Sini.
Evidentemente io non avevo capito che le celle unite andavano dalla D2 alla
H6 e d'altra parte tu non lo avevi specificato nel post iniziale; partendo
dal presupposto forse sbagliato di una certa coerenza, mi sembrava strano che
esistessero delle celle unite e delle celle disunite nelle medesime colonne.
Comunque, prova questa macro e fammi sapere, grazie.
Sub prova()
Dim cl As Range
Dim rng As Range
Dim r As Long
Dim c As Long
Dim x As Long
Range("D1:H10").Select ' <----- da variare
With Selection
.MergeCells = False
End With
Range("D1").Select
For Each cl In Range("D1:D10") ' <----- da variare
r = cl.Row
c = cl.Column
If cl.Value = "" Then
For x = 4 To 8
Cells(r, x) = Cells(r - 1, x)
Next
End If
Next
End Sub
Post by eliano
Set RNG = Range("a1:a10") ' <----- da variare
ma bensi le celle che seleziono al momento poichè nel mio foglio ci sono piu
celle da splittare e copiare e quindi non solo nel range A1:a10
Sinceramente questa non l'ho capita; se i tuoi riferimenti sono diversi da
quelli di prova, provvedi a cambiarli con i tuoi.:-))
Ciao Eliano,
allora per splittare le celle, lo fa correttamente, ma poi non copia i dati
compresi tra il D1 e D10 dalla riga 1 alla 10.
Per quanto riguarda i riferimenti che tu non riesci a capire...dunque
vediamo...
Per capirci dovrei cambiare continuamente range, cioè aprire la macro e
mettere come range D1:H10 e farla partire, poi riaprirla e mettere il range
D52:H60 poi farla partire, poi riaprirla etc...
Quindi volevo utilizzare la selezione del mouse come range dinamico...cioè
che cambi da solo i valori...D1:H10...cioè in base alle celle che seleziono.
Intanto ti ringrazio ancora...
SiNi
Ciao Sini.
Non so che dirti, a me funziona correttamente; una possibilità potrebbe
essere che esistano caratteri blank (sembrerebbero all'inizio) nella stringa
che deve essere splittata e copiata. Controlla quella eventualità ed elimina
gli spazi inutili; eventualmente il file di prova è disponibile.
Tanto per intenderci esistono righe contenenti dati nelle celle, ad esempio,
da D1 a H1, seguiite da un blocco di celle unite, ad esempio da D2 a H5 e
così di seguito; la celle unite possono avere ampiezza diversa in termini di
righe; ogni dato esistente, ad esempio, da D1 ad H1 deve essere riportato
nelle righe vuote successive, finchè non si trova un'altra base di dati ( da
Dn ad Hn ) da copiare nelle righe vuote successive, e così via.
Ser così non fosse, mi sa che non si fa affari!:))
E' strano quello che dici rispetto ai riferimenti; se li cambi, ad esempio,
da D1:D10 a D1:D50000 la macro dovrebbe funzionare normalmente da D1 a
D50000, a meno che il file non sia stato masturbato manualmente e le celle
dalle quali deve prendere i dati per copiarli o le celle che devono ricevere
la copia abbiano un significato concettuale diverso zona per zona.
Sii così cortese da riprovare e da farci sapere.
Eliano
SiNi
2007-09-06 06:26:59 UTC
Permalink
Post by eliano
Ciao Sini.
Non so che dirti, a me funziona correttamente; una possibilità potrebbe
essere che esistano caratteri blank (sembrerebbero all'inizio) nella stringa
che deve essere splittata e copiata. Controlla quella eventualità ed elimina
gli spazi inutili; eventualmente il file di prova è disponibile.
Tanto per intenderci esistono righe contenenti dati nelle celle, ad esempio,
da D1 a H1, seguiite da un blocco di celle unite, ad esempio da D2 a H5 e
così di seguito; la celle unite possono avere ampiezza diversa in termini di
righe; ogni dato esistente, ad esempio, da D1 ad H1 deve essere riportato
nelle righe vuote successive, finchè non si trova un'altra base di dati ( da
Dn ad Hn ) da copiare nelle righe vuote successive, e così via.
Ser così non fosse, mi sa che non si fa affari!:))
E' strano quello che dici rispetto ai riferimenti; se li cambi, ad esempio,
da D1:D10 a D1:D50000 la macro dovrebbe funzionare normalmente da D1 a
D50000, a meno che il file non sia stato masturbato manualmente e le celle
dalle quali deve prendere i dati per copiarli o le celle che devono ricevere
la copia abbiano un significato concettuale diverso zona per zona.
Sii così cortese da riprovare e da farci sapere.
Ciao Eliano!

Ti ringrazio, ho scaricato il file e tutto funziona regolarmente!
L'unica chicca sarebbe che la macro si fermasse quando trova la prima cella
della colonna A senza dati.
Per capirci se io metto come range D1:H50, pero' dalla cella A20 non ci sono
più dati, la macro si ferma come range D1:D20.
Ecco...queto sarebbe il massimo...cmq hai fatto un ottimo lavoro, ancora i
miei complimenti!

SiNi
eliano
2007-09-06 13:16:02 UTC
Permalink
Post by SiNi
Post by eliano
Ciao Sini.
Non so che dirti, a me funziona correttamente; una possibilità potrebbe
essere che esistano caratteri blank (sembrerebbero all'inizio) nella stringa
che deve essere splittata e copiata. Controlla quella eventualità ed elimina
gli spazi inutili; eventualmente il file di prova è disponibile.
Tanto per intenderci esistono righe contenenti dati nelle celle, ad esempio,
da D1 a H1, seguiite da un blocco di celle unite, ad esempio da D2 a H5 e
così di seguito; la celle unite possono avere ampiezza diversa in termini di
righe; ogni dato esistente, ad esempio, da D1 ad H1 deve essere riportato
nelle righe vuote successive, finchè non si trova un'altra base di dati ( da
Dn ad Hn ) da copiare nelle righe vuote successive, e così via.
Ser così non fosse, mi sa che non si fa affari!:))
E' strano quello che dici rispetto ai riferimenti; se li cambi, ad esempio,
da D1:D10 a D1:D50000 la macro dovrebbe funzionare normalmente da D1 a
D50000, a meno che il file non sia stato masturbato manualmente e le celle
dalle quali deve prendere i dati per copiarli o le celle che devono ricevere
la copia abbiano un significato concettuale diverso zona per zona.
Sii così cortese da riprovare e da farci sapere.
Ciao Eliano!
Ti ringrazio, ho scaricato il file e tutto funziona regolarmente!
L'unica chicca sarebbe che la macro si fermasse quando trova la prima cella
della colonna A senza dati.
Per capirci se io metto come range D1:H50, pero' dalla cella A20 non ci sono
più dati, la macro si ferma come range D1:D20.
[cut]

Ciao SiNi.
Pensavo che provvedessi tu in ragione delle tue necessità o abitudini;
comunque prova:

Sub prova()
Dim cl As Range
Dim rng As Range
Dim r As Long
Dim c As Long
Dim x As Long
Dim UR As Long
Dim zona As Range

Set zona = Range("A1").CurrentRegion
UR = zona.Rows.Count

Set rng = Range(Cells(1, 4), Cells(UR, 8))
rng.Select

With Selection
.MergeCells = False
End With
Cells(1, 4).Select

For Each cl In rng
'esce alla prima cella in colonna A vuota
If cl.Row > UR Then Exit Sub
r = cl.Row
c = cl.Column
If cl.Value = "" Or cl.Value = " " Then
For x = 4 To 8
Cells(r, x) = Cells(r - 1, x)
Next
End If
Next
End Sub

Eliano
Mauro Gamberini
2007-09-06 14:25:24 UTC
Permalink
Post by eliano
Sub prova()
Eliano.....
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
eliano
2007-09-07 12:42:03 UTC
Permalink
Post by Mauro Gamberini
Post by eliano
Sub prova()
Eliano.....
Ciao Mauro.
Se è una tirata di orecchi, sinceramente non riesco a configurarla, per cui
scusami ma ti prego di voler essere così gentile da chiarire il motivo della
chiamata.
Grazie,
Eliano
Mauro Gamberini
2007-09-07 14:40:05 UTC
Permalink
Post by eliano
Se è una tirata di orecchi, sinceramente non riesco a configurarla, per cui
scusami ma ti prego di voler essere così gentile da chiarire il motivo della
chiamata.
Lascia stare, qui tra [], dichiarazioni non fatte, ecc....
E mandami pure a quel paese anche tu...
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
eliano
2007-09-07 16:06:03 UTC
Permalink
Post by Mauro Gamberini
Post by eliano
Se è una tirata di orecchi, sinceramente non riesco a configurarla, per cui
scusami ma ti prego di voler essere così gentile da chiarire il motivo della
chiamata.
Lascia stare, qui tra [], dichiarazioni non fatte, ecc....
E mandami pure a quel paese anche tu...
Mauro, se si tratta di andare a quel paese, ci andiamo insieme,
correttamente affiancati spalla a spalla, a scanso di equivoci.:-))
Per le quadre, dopo che me lo hai detto la prima volta le ho evitate; per le
dichiarazioni non fatte, anche quello, dopo che per ben due volte in tre anni
me lo hai fatto rilevare, ho provveduto in merito; l'unica dichiarazione che
ancora non ho fatto è una dichiarazione di amore indirizzata a te, cosa
estremamente improponibile data la nostra natura etero. [della serie senza se
e senza ma!.:-))]
"Calma amigo" mi ha detto stamani un negretto che voleva iniziare a pulirmi
il vetro proprio quando il semaforo è scattato sul verde; quell'esortazione
la giro a te con tutti i sensi della mia amicizia.
Comunque io gli amici li bacio sulla guance, per cui calza la maschera e
para di quarta.
Eliano
Mauro Gamberini
2007-09-07 16:13:19 UTC
Permalink
Post by eliano
[della serie senza se
e senza ma!.:-))]
Hai messo le quadre...8-)

Mi riferivo a Private/Public
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
eliano
2007-09-07 23:02:02 UTC
Permalink
Post by Mauro Gamberini
Post by eliano
[della serie senza se
e senza ma!.:-))]
Hai messo le quadre...8-)
Dimenticavo, le quadre erano spudoratamente provocatorie.
eliano
2007-09-07 23:02:03 UTC
Permalink
Post by Mauro Gamberini
Post by eliano
[della serie senza se
e senza ma!.:-))]
Hai messo le quadre...8-)
Mi riferivo a Private/Public
Ciao Mauro.
Orco qiu, orco là, orco su ed orco giù!! Ragion tu hai, ma picchià 'ntu
dei!:-8)
A tutti i poeti manca un verso ed io che non sono un poeta (.. e cosa
faccio? Scrivo....e come vivo??...Vivo, almeno per ora) <--periodo
Pavarotti.:-((
Cenere in capo e sinceramente mi era sfuggito il tuo richiamo al Poeta di
pochi thread fa'.
D'orainnanzi (bello, non trovi) saranno tutte Public, resistendo alla
tentazione di dichiarare in quel modo anche tutte le variabili.:-)
Scuse reiterate e cordialmente.
Eliano

SiNi
2007-09-07 09:08:53 UTC
Permalink
Grazie Eliano per tutto l'aiuto!

SiNi
Post by eliano
Post by SiNi
Post by eliano
Ciao Sini.
Non so che dirti, a me funziona correttamente; una possibilità potrebbe
essere che esistano caratteri blank (sembrerebbero all'inizio) nella stringa
che deve essere splittata e copiata. Controlla quella eventualità ed elimina
gli spazi inutili; eventualmente il file di prova è disponibile.
Tanto per intenderci esistono righe contenenti dati nelle celle, ad esempio,
da D1 a H1, seguiite da un blocco di celle unite, ad esempio da D2 a H5 e
così di seguito; la celle unite possono avere ampiezza diversa in
termini
di
righe; ogni dato esistente, ad esempio, da D1 ad H1 deve essere riportato
nelle righe vuote successive, finchè non si trova un'altra base di dati ( da
Dn ad Hn ) da copiare nelle righe vuote successive, e così via.
Ser così non fosse, mi sa che non si fa affari!:))
E' strano quello che dici rispetto ai riferimenti; se li cambi, ad esempio,
da D1:D10 a D1:D50000 la macro dovrebbe funzionare normalmente da D1 a
D50000, a meno che il file non sia stato masturbato manualmente e le celle
dalle quali deve prendere i dati per copiarli o le celle che devono ricevere
la copia abbiano un significato concettuale diverso zona per zona.
Sii così cortese da riprovare e da farci sapere.
Ciao Eliano!
Ti ringrazio, ho scaricato il file e tutto funziona regolarmente!
L'unica chicca sarebbe che la macro si fermasse quando trova la prima cella
della colonna A senza dati.
Per capirci se io metto come range D1:H50, pero' dalla cella A20 non ci sono
più dati, la macro si ferma come range D1:D20.
[cut]
Ciao SiNi.
Pensavo che provvedessi tu in ragione delle tue necessità o abitudini;
Sub prova()
Dim cl As Range
Dim rng As Range
Dim r As Long
Dim c As Long
Dim x As Long
Dim UR As Long
Dim zona As Range
Set zona = Range("A1").CurrentRegion
UR = zona.Rows.Count
Set rng = Range(Cells(1, 4), Cells(UR, 8))
rng.Select
With Selection
.MergeCells = False
End With
Cells(1, 4).Select
For Each cl In rng
'esce alla prima cella in colonna A vuota
If cl.Row > UR Then Exit Sub
r = cl.Row
c = cl.Column
If cl.Value = "" Or cl.Value = " " Then
For x = 4 To 8
Cells(r, x) = Cells(r - 1, x)
Next
End If
Next
End Sub
Eliano
Loading...