Condividi:        

INCOLONNARE DEI DATI DI ALTRE COLONNE

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

INCOLONNARE DEI DATI DI ALTRE COLONNE

Postdi luca62 » 18/01/13 00:26

ho un foglio di lavoro con molte colonne
desidero incolonnare i dati a gruppi di 5 colonne
a partire dalla 3^riga ALLA N^100
esempio
colonne
A B C D E F G H I L M N O P

METTERLE
A B C D E (LE RIGHE DA 3 ALLA 100)
F G H I L (LE RIGHE DA 3 ALLA 100)
M N O P Q (LE RIGHE DA 3 ALLA 100)

E COSì VIA

E COS' VIA ELIMINANDOLE RIGHE CON VALORI NULLI
è POSSIBILE?
IL TUTTO IN UN ALTRO FOGLIO DI LAVORO CHIAMATO INCOLONNA
luca62 office2007 window7
luca62
Utente Senior
 
Post: 173
Iscritto il: 23/12/12 14:54

Sponsor
 

Re: INCOLONNARE DEI DATI DI ALTRE COLONNE

Postdi Anthony47 » 18/01/13 01:03

Prima di lavorare per niente vorrei sapere se avrai singole celle vuote in mezzo all' elenco di origine, righe vuote in mezzo all' elenco, colonne compatte ma alte ognuna un numero variabile di righe, oppure colonne compatte (senza vuoti intermedi) alte tutte lo stesso numero di righe.

Per favore imposta la tua configurazione di lavoro (vedi qui per come fare: viewtopic.php?f=26&t=97449)

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: INCOLONNARE DEI DATI DI ALTRE COLONNE

Postdi luca62 » 18/01/13 07:45

win7+Office 2003ita
nell'elenco origine posso avere delle celle vuote,mai righe completamente vuote
ad esempio posso avere alla riga 53
A53=56666 B53=12 C53=0 D53=0 E53=0
e alla riga 54
A54=56666 B54=13 C54=SUPPORTO D54=8889999 E53=1

e così per le altre colonne
F G H I L (LE RIGHE DA 3 ALLA 100)
M N O P Q (LE RIGHE DA 3 ALLA 100)
etc etc etc.........................
e ho la necessità che quando la colonna C (che poi sarà anche la H,O etc....)presenta dei valori
=0 di non copiare la riga medesima (in questo caso non voglio copiare la riga 53)

grazie Anthony riesci sempre a farmi riflettere sulla problematica da affrontare in
maniera più scientifica, poi non risolvo niente perchè sono acerbo ,ma step by step...
faccio progressi (ma qui ...un gliela fo!)
luca62 office2007 window7
luca62
Utente Senior
 
Post: 173
Iscritto il: 23/12/12 14:54

Re: INCOLONNARE DEI DATI DI ALTRE COLONNE

Postdi Flash30005 » 18/01/13 08:59

Potresti pubblicare un file con la distribuzione dati origine e relativo esempio di cosa vorresti ottenere?

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: INCOLONNARE DEI DATI DI ALTRE COLONNE

Postdi Anthony47 » 18/01/13 10:45

Vedi la richiesta di Flash sopra.
In particolare mi interessa questo caso:
1) supponiamo che A10 sia vuota (unica cella vuota in A3:E100)
E' giusto che nell' output il valore di A11 si trovera' quindi affiancato dai valori di B10, C10, D10 ed E10? e che nella riga successiva avremo A12, B11, C11, D11, E11? e che l' ultimo blocco sara' quindi "vuoto", B100, C100, D100, E100?
2) Quando passiamo al secondo blocco di colonne, dove mettero' il contenuto di F3:
-accanto a B100, C100, ..., occupando cioe' la posizione lasciata libera in colonna A dal vuoto che avevamo in A10?
-oppure ???

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: INCOLONNARE DEI DATI DI ALTRE COLONNE

Postdi luca62 » 18/01/13 10:50

ecco il file

http://rapidshare.com/files/1976677571/ESEMPIO.xls

come vedi dal foglio RIEPILOGO PART-COMM , ho la necessità di creare altre 3 fogli di lavoro
(in realtà il foglio INCOLONNA potrei anche farne a meno ma penso sia necessario come step
intermedio)
INCOLONNA che mi mette tutti gli elementi del foglio RIEPILOGO PART-COMM in fila ordinati
secondo la colonna A con eliminazione delle righe dove è presente uno zero nella colonna C
PARTICOLARI che dal foglio INCOLONNA mi estrae tutti quelli con COD (colonna D) che vanno
da 1 a 999999 ordinandoli per numero di COD (colonnaD)
COMMERCIALI che dal foglio INCOLONNA mi estrae tutti quelli con COD (colonna D) che vanno o
da 1000000 a 99999999 o sono =0 ordinandoli per numero di COD (colonnaD) .

lo sto facendo quali manualmente!
e il quasi è merito vostro!
luca62 office2007 window7
luca62
Utente Senior
 
Post: 173
Iscritto il: 23/12/12 14:54

Re: INCOLONNARE DEI DATI DI ALTRE COLONNE

Postdi Flash30005 » 18/01/13 10:55

Il link è errato usa questo server host

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: INCOLONNARE DEI DATI DI ALTRE COLONNE

Postdi luca62 » 18/01/13 13:08

luca62 office2007 window7
luca62
Utente Senior
 
Post: 173
Iscritto il: 23/12/12 14:54

Re: INCOLONNARE DEI DATI DI ALTRE COLONNE

Postdi Flash30005 » 18/01/13 13:51

Prova questa macro

Codice: Seleziona tutto
Sub Compila()
Set Ws1 = Worksheets("RIEPILOGO PART-COMM")
Set Ws2 = Worksheets("INCOLONNA")
Set Ws3 = Worksheets("PARTICOLARI")
Set Ws4 = Worksheets("COMMERCIALI")
UC1 = Ws1.Cells(1, Columns.Count).End(xlToLeft).Column
Ws2.Cells.Clear
Ws3.Cells.Clear
Ws4.Cells.Clear
For CCR = 1 To UC1 - 4 Step 5
UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
Ws1.Range(Ws1.Cells(1, CCR), Ws1.Cells(UR1, CCR + 4)).Copy
Ws2.Select
UR2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row + 1
Range("A" & UR2).Select
    ActiveSheet.Paste
Next CCR
UR2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row
For RR2 = UR2 To 1 Step -1
If Ws2.Range("C" & RR2).Value = 0 Or Ws2.Range("B" & RR2).Value = "Ins." Or Ws2.Range("C" & RR2).Value = "" Then Rows(RR2).Delete
If RR2 > 5 And Ws2.Range("B" & RR2).Value = "POS" Then Rows(RR2).Delete
Next RR2
UR2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row
For RR2 = 1 To UR2
If Val(Ws2.Range("D" & RR2)) <= 999999 Then
Ws2.Range("A" & RR2 & ":E" & RR2).Copy Destination:=Ws3.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Else
Ws2.Range("A" & RR2 & ":E" & RR2).Copy Destination:=Ws4.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
End If
Next RR2
Ws2.Range("A1:E1").Copy Destination:=Ws3.Range("A1")
Ws2.Range("A1:E1").Copy Destination:=Ws4.Range("A1")
End Sub


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: INCOLONNARE DEI DATI DI ALTRE COLONNE

Postdi Flash30005 » 18/01/13 13:57

Mi sono dimenticato di avvisarti che il nome del tuo foglio
"RIEPILOGO PART-COMM "
ha uno spazio finale che dovresti eliminare dal nome del foglio
altrimenti
modifica questa riga codice inserendo anche qui lo spazio
Codice: Seleziona tutto
Set Ws1 = Worksheets("RIEPILOGO PART-COMM ")


ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: INCOLONNARE DEI DATI DI ALTRE COLONNE

Postdi luca62 » 18/01/13 18:37

Flash quasi perfetto!
l'unica cosa : come faccio a sostituire
If Val(Ws2.Range("D" & RR2)) <= 999999 Then con la condizione che se il valore è tra 1(compreso) e 999999 compreso?
quando il valore è zero infatti devo metterlo nel foglio COMMERCIALI
luca62 office2007 window7
luca62
Utente Senior
 
Post: 173
Iscritto il: 23/12/12 14:54

Re: INCOLONNARE DEI DATI DI ALTRE COLONNE

Postdi Flash30005 » 18/01/13 20:12

E' sufficiente aggiungere la condizione ma replico la macro modificata (anche perché ho aggiunto delle righe-codice che eliminano lo sfarfallio)
Codice: Seleziona tutto
Sub Compila()
Application.ScreenUpdating = False  '<<<< evita l'aggiornamento schermate (sfarfallio)
Application.Calculation = xlManual '<<<< ferma il calcolo e velocizza la macro

Set Ws1 = Worksheets("RIEPILOGO PART-COMM")
Set Ws2 = Worksheets("INCOLONNA")
Set Ws3 = Worksheets("PARTICOLARI")
Set Ws4 = Worksheets("COMMERCIALI")
UC1 = Ws1.Cells(1, Columns.Count).End(xlToLeft).Column
Ws2.Cells.Clear
Ws3.Cells.Clear
Ws4.Cells.Clear
For CCR = 1 To UC1 - 4 Step 5
UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
Ws1.Range(Ws1.Cells(1, CCR), Ws1.Cells(UR1, CCR + 4)).Copy
Ws2.Select
UR2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row + 1
Range("A" & UR2).Select
    ActiveSheet.Paste
Next CCR
UR2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row
For RR2 = UR2 To 1 Step -1
If Ws2.Range("C" & RR2).Value = 0 Or Ws2.Range("B" & RR2).Value = "Ins." Or Ws2.Range("C" & RR2).Value = "" Then Rows(RR2).Delete
If RR2 > 5 And Ws2.Range("B" & RR2).Value = "POS" Then Rows(RR2).Delete
Next RR2
UR2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row
For RR2 = 1 To UR2
If Val(Ws2.Range("D" & RR2)) >= 1 And Val(Ws2.Range("D" & RR2)) <= 999999 Then
Ws2.Range("A" & RR2 & ":E" & RR2).Copy Destination:=Ws3.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Else
If Val(Ws2.Range("D" & RR2)) > 999999 Then Ws2.Range("A" & RR2 & ":E" & RR2).Copy Destination:=Ws4.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
End If
Next RR2
Ws2.Range("A1:E1").Copy Destination:=Ws3.Range("A1")
Ws2.Range("A1:E1").Copy Destination:=Ws4.Range("A1")

Application.Calculation = xlCalculationAutomatic  '<<<< ripristina il calcolo
Application.ScreenUpdating = True   '<<<< ripristina l'aggiornamento schermate
End Sub


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: INCOLONNARE DEI DATI DI ALTRE COLONNE

Postdi luca62 » 18/01/13 23:27

effettivamente va meglio senza lo sfarfallio,
mi manca da inserire la condizione del valore 0,che quando si verifuca deve essere messa in COMMERCIALI
ossia
If Val(Ws2.Range("D" & RR2)) > 999999 Then Ws2.Range("A" & RR2 & ":E" & RR2) a questa dovrei aggiungere anche quando il valore
è =0, ho provato ad aggiungerlo ma mi da errore
If Val(Ws2.Range("D" & RR2)) = 0 And Val(Ws2.Range("D" & RR2)) > 999999 Then Ws2.Range("A" & RR2 & ":E" & RR2)
mi da errore
luca62 office2007 window7
luca62
Utente Senior
 
Post: 173
Iscritto il: 23/12/12 14:54

Re: INCOLONNARE DEI DATI DI ALTRE COLONNE

Postdi Flash30005 » 19/01/13 00:15

Ti dà errore perché la riga-codice è troncata
ma se vuoi che quando in D = 0 sia inserito nel foglio "Commerciale" (pensavo che non volessi gli zero)
devi togliere la condizione esistente e modificare così la riga dopo "Else"
Codice: Seleziona tutto
Else '<<<< esistente
 Ws2.Range("A" & RR2 & ":E" & RR2).Copy Destination:=Ws4.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)  '<<<< modificata
End If '<<<< esistente


Quindi o sostituisci la riga o togli questa parte
"If Val(Ws2.Range("D" & RR2)) > 999999 Then" <<<<<< toglie questa condizione alla riga esistente

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: INCOLONNARE DEI DATI DI ALTRE COLONNE

Postdi luca62 » 19/01/13 12:01

tutto ok piano piano col 99% del lavoro fatto da Voi e quel 1% che piano piano riesco
a capire...sto raggiungendo lo scopo.
Allego un nuovo file
http://www.filedropper.com/esempiobis

in pratica da quelle liste in colonne che ho ottenuto
PARTICOLARI e COMMERCIALI
devo creare altri 2 fogli:
COMMERCIALI COMUNI
che ha una colonna A con scritto Viteria dove mi "riporta " tutti gli articoli
che iniziano con VIT nella colonna B il suo codice (che se non esistente è 0)
e nella colonna C la quantità totale dell'articolo identificato dalla colonna B (codice)
(esempio VITE M5 X20) stando attenti a non sommare gli articoli che sono senza codice
(e quindi dove appare lo zero nella colonna B)
e questo per altri articoli che iniziano
per DADI, ROSETTE,LINGUETTE,SPINE,ANELLI ELASTICI,ANELLI DI ,GUARNIZIONI,BRONZINE,CUSCINETTI
Il foglio PARTICOLARI COMUNI invece,
mi deve fare lo stesso lavoro ma solo su una colonna e sommando i prodotti con lo stesso n^dis.
MI sono spiegato?
DI sicuro è un bel casino!
Non so se converrebbe aprire un altro Post , ma non so con quale titolo,
luca62 office2007 window7
luca62
Utente Senior
 
Post: 173
Iscritto il: 23/12/12 14:54


Torna a Applicazioni Office Windows


Topic correlati a "INCOLONNARE DEI DATI DI ALTRE COLONNE":


Chi c’è in linea

Visitano il forum: Ricky0185 e 38 ospiti