| | Post: 1 | Registrato il: 04/04/2017
| Città: MILANO | Età: 45 | Utente Junior | EXCEL 2013 | | OFFLINE | |
|
04/04/2017 05:31 | |
Ciao a tutti, sono nuovo nel forum, ma vengo spesso a spulciare soluzioni :) Ho un file nel quale importo dei dati da un file xml, questi dati sono le misure specifiche di prodotti di abbigliamento, quuidi seno, lunghezza manica ecc.... il file contiene circa 90000 righe e sono strutturati cosi:
|
A |
B |
C |
D |
E |
1 |
DBK0040GB |
DBK0040GBS1 |
XS |
BODY LENGTH |
60 |
2 |
DBK0040GB |
DBK0040GBS1 |
XS |
SLEEVE LENGTH |
25 |
3 |
DBK0040GB |
DBK0040GBS1 |
XS |
BOTTOM |
46 |
4 |
DBK0040GB |
DBK0040GBS1 |
XS |
CHEST |
57 |
5 |
DBK0040GB |
DBK0040GBS2 |
S |
BODY LENGTH |
60 |
6 |
DBK0040GB |
DBK0040GBS2 |
S |
SLEEVE LENGTH |
26 |
7 |
DBK0040GB |
DBK0040GBS2 |
S |
BOTTOM |
48 |
8 |
DBK0040GB |
DBK0040GBS2 |
S |
CHEST |
59 |
9 |
DBK0040GB |
DBK0040GBS3 |
M |
BODY LENGTH |
62 |
10 |
DBK0040GB |
DBK0040GBS3 |
M |
SLEEVE LENGTH |
27 |
11 |
DBK0040GB |
DBK0040GBS3 |
M |
BOTTOM |
50 |
12 |
DBK0040GB |
DBK0040GBS3 |
M |
CHEST |
61 |
13 |
DBK0040GB |
DBK0040GBS4 |
L |
BODY LENGTH |
62 |
14 |
DBK0040GB |
DBK0040GBS4 |
L |
SLEEVE LENGTH |
28 |
15 |
DBK0040GB |
DBK0040GBS4 |
L |
BOTTOM |
52 |
16 |
DBK0040GB |
DBK0040GBS4 |
L |
CHEST |
63 |
17 |
DBK0040GB |
DBK0040GBS5 |
XL |
BODY LENGTH |
64 |
18 |
DBK0040GB |
DBK0040GBS5 |
XL |
SLEEVE LENGTH |
29 |
19 |
DBK0040GB |
DBK0040GBS5 |
XL |
BOTTOM |
54 |
20 |
DBK0040GB |
DBK0040GBS5 |
XL |
CHEST |
65 |
21 |
DBK0040GB |
DBK0040GBS6 |
XXL |
BODY LENGTH |
64 |
22 |
DBK0040GB |
DBK0040GBS6 |
XXL |
SLEEVE LENGTH |
30 |
23 |
DBK0040GB |
DBK0040GBS6 |
XXL |
BOTTOM |
56 |
24 |
DBK0040GB |
DBK0040GBS6 |
XXL |
CHEST |
67 |
e dovrei ottenere un risultato simile a questo:
|
A |
C |
D |
E |
F |
G |
1 |
|
|
BODY LENGTH |
SLEEVE LENGTH |
BOTTOM |
CHEST |
2 |
DBK0040GBS1 |
XS |
60 |
25 |
46 |
57 |
3 |
DBK0040GBS2 |
S |
60 |
26 |
48 |
59 |
4 |
DBK0040GBS3 |
M |
62 |
27 |
50 |
61 |
5 |
DBK0040GBS4 |
L |
62 |
28 |
52 |
63 |
6 |
DBK0040GBS5 |
XL |
64 |
29 |
54 |
65 |
7 |
DBK0040GBS6 |
XXL |
64 |
30 |
56 |
67 |
il tipo di misura e' variabile per ogni prodotto, in totale il tipo di misure sono 24. io dalla struttura iniziale ho provato a creare una tabella con i nomi delle varie misure nelle colonne di intestazione e ho concatenanto il nome dell'intestazione con il codice della taglia ottenedo cosi il valore ( se non disponibile lascia la cella vuota ), con un solo problema, il nome della misura rimane solo nella riga d'intestazione, e per ottenere la tabella devo eliminare le celle manualmente... ci ho provato, ma ho idea che la mia sia un pessimo test. Qualcuno volenteroso mi puo aiutare e spiegare anche come ha fatto a risolvere il problema ? Vorrei allegare il file ma non so come si fa Grazie a tutti Andrea [Modificato da ANDREAVIGGIANO 04/04/2017 05:54] |
|
| | Post: 1 | Registrato il: 04/04/2017
| Città: MILANO | Età: 45 | Utente Junior | EXCEL 2013 | | OFFLINE | |
|
04/04/2017 06:04 | |
Allego un file di esempio con quello che ho provato a creare io nel primo foglio e il risultato nel secondo foglio |
| | Post: 3.811 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Master | 2010 | | OFFLINE | |
|
04/04/2017 09:06 | |
nel file di esempio ci sono molte più colonne, prima avevo le idee chiare, ora non più
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
| | Post: 2 | Registrato il: 04/04/2017
| Città: MILANO | Età: 45 | Utente Junior | EXCEL 2013 | | OFFLINE | |
|
04/04/2017 11:42 | |
Ciao e grazie per il tuo interesse... il file che ho allegato e' un esempio di cio che stavo provando a fare io, allego un altro file con i dati originali... nella mia spiegazione ho omesso.. dimenticato di dire che la colonna col nome code contiene alcuni codici con una [E], questo perche il mio fornitore codifica i prodotti a seconda del magazzino da cui vengono spediti, i dati originali sono nel gruppo di colonne in giallo, i dati filtrati senza codici con la [E] nelle colonne in azzurrino, e infine in giallo verde il risultato che dovrei ottenere. di quest'ultima parte il risultato deve essere come lo vedi, ho utilizzato 2 colori per evidenziare la parte con il quale faro copia incolla nella descrizione dei miei prodotti ( in verde ) e in giallino la colonna con il codice per recuperare il prodotto esatto
Ti ringrazio per l'aiuto, io ci ho provato per 3 settimane e consultando decine di forum, ma poiche sono un autodidatta e di excel conosco poco o quasi niente non sono riuscito a trovare una soluzione
Grazie ancora
Andrea |
| | Post: 1.137 | Registrato il: 10/10/2013
| Città: VICENZA | Età: 69 | Utente Veteran | 365 | | OFFLINE |
|
04/04/2017 15:30 | |
ciao
non so se ho capito
ma il risultato sembra
quello che hai chiesto
ti allego il file
da O21 la mia prova
prima ho estratto gli univoci ( ho utilizzato le celle azzurre)
colonna P
=SE.ERRORE(INDICE($J$2:$J$242;CONFRONTA(0;INDICE(CONTA.SE($P$21:$P21;$J$2:$J$242&""););0));"")
poi ho trovato la taglia corrispondente
=CERCA.VERT(P22;J2:$M$242;2;0)
e infine estratto i dati per point-name
=SE.ERRORE(INDICE($M$2:$M$242;CONFRONTA(1;INDICE((R$21=$L$2:$L$242)*($P22=$J$2:$J$242)*($Q22=$K$2:$K$242););0));"")
spero vada bene
per inserire righe vuote tra un articolo e l'altro
ci vorrebbe il vba
e utilizzare un foglio a parte.
|
| | Post: 3.814 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Master | 2010 | | OFFLINE | |
|
04/04/2017 16:24 | |
la mia soluzione
Sub a()
LR = Cells(Rows.Count, "h").End(xlUp).Row
dr = 2
For r = 2 To LR Step 4
Range("P" & dr & ":Q" & dr).Value = Range("J" & r & ":K" & r).Value
Range("R" & dr) = Range("M" & r)
Range("S" & dr) = Range("M" & r + 1)
Range("T" & dr) = Range("M" & r + 2)
Range("U" & dr) = Range("M" & r + 3)
dr = dr + 1
Next
End Sub
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
| | Post: 1.139 | Registrato il: 10/10/2013
| Città: VICENZA | Età: 69 | Utente Veteran | 365 | | OFFLINE |
|
04/04/2017 16:52 | |
ciao
Patel
non ho provato la tua macro
ma lo step 4
mi lascia dei dubbi
DBL0151JR DBL0151JRS6 DBL0151JRS6 XXL CHEST 56
DBL0156ST DBL0156STS4 DBL0156STS4 L BODYLENGTH 59
DBL0156ST DBL0156STS4 DBL0156STS4 L SLEEVELENGTH 41
DBL0156ST DBL0156STS4 DBL0156STS4 L CHEST 73
DBL0156ST DBL0156STS5 DBL0156STS5 XL BODYLENGTH 61
i questo caso ci sono solo tre parametri
cosa succede?
ho provato
come immaginavo
comincia a sfalsare i dati
[Modificato da federico460 04/04/2017 17:03] |
| | Post: 3.816 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Master | 2010 | | OFFLINE | |
|
04/04/2017 18:20 | |
hai ragione, non avevo notato che non sempre sono 4, se la soluzione piace si può sempre correggere
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
| | Post: 3 | Registrato il: 04/04/2017
| Città: MILANO | Età: 45 | Utente Junior | EXCEL 2013 | | OFFLINE | |
|
04/04/2017 21:09 | |
ciao ragazzi, provo a facilitarvi il lavoro, non conosco excel ma se mi impegno qualcosa risolvo... vi allego un nuovo file, comprendo che la struttura dei dati iniziali facilita enormemente il lavoro cosi ho creato una macro che mi prepara tutti i vari dati che mi servono, filtrandoli rimuovendo quelli duplicati e compagnia bella......ora nel foglio "genertore tabelle" sono gia presenti i dati corretti, a questo punto devo inserire una riga quando si verifica questa condizione: se(a1<>a2) inserisci una riga. Fatto questo, sempre tramite macro, nel file ci sono alcune idee, sempre nel foglio generatore tabelle |
| | Post: 3.817 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Master | 2010 | | OFFLINE | |
|
05/04/2017 07:58 | |
per inserire le righe vuote prova questa
Sub a()
r = 3
While Cells(r, "A") <> ""
If Cells(r, "A") <> Cells(r + 1, "A") Then
Rows(r + 1).Insert
r = r + 1
End If
r = r + 1
Wend
End Sub
per il resto non ho capito
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
| | Post: 4 | Registrato il: 04/04/2017
| Città: MILANO | Età: 45 | Utente Junior | EXCEL 2013 | | OFFLINE | |
|
05/04/2017 11:25 | |
come faccio ad inserirla?
Grazie |
| | Post: 3.818 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Master | 2010 | | OFFLINE | |
|
05/04/2017 13:06 | |
io non ti capisco, hai detto
..ho creato una macro che mi prepara tutti i vari dati che mi servono, filtrandoli rimuovendo quelli duplicati e compagnia bella......
e poi non sai copiare una macro in un modulo standard e lanciarla ?
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
| | Post: 5 | Registrato il: 04/04/2017
| Città: MILANO | Età: 45 | Utente Junior | EXCEL 2013 | | OFFLINE | |
|
05/04/2017 15:07 | |
la macro e stata registrata :) |
| | Post: 3.819 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Master | 2010 | | OFFLINE | |
|
05/04/2017 17:19 | |
sotto la macro registrata incolli la mia, ti posizioni all'inizio e la lanci
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
| | Post: 6 | Registrato il: 04/04/2017
| Città: MILANO | Età: 45 | Utente Junior | EXCEL 2013 | | OFFLINE | |
|
05/04/2017 17:55 | |
va in crash... le celle devono essere aggiunte al foglio rinominato Geberatore tabelle... |
| | Post: 7 | Registrato il: 04/04/2017
| Città: MILANO | Età: 45 | Utente Junior | EXCEL 2013 | | OFFLINE | |
|
05/04/2017 18:40 | |
ciao ho risolto....mi manca l'ultimo passaggio
devo trasporre delle celle con una funzione
pippo pluto
pippo paperino
pippo minni
pluto pippo
pluto topolino
pluto paperino
in una terza colonna dovrei ottenere un risultato simile a questo
pippo pluto pluto paperino minni
pippo paperino
pippo minni
pluto pippo pippo topolino paperino
pluto topolino
pluto paperino
in pratica trasporre solo gli elementi che si trovano nella colonna B e che hanno il valore = nella colonna A
i dati da cercare si trovano nel secondo foglio ( Rimozione duplicati nelle colonne J-K ) mentre la funzione va scritta nel foglio generatore tabelle
Grazie mille a tutti per l'aiuto
Mi avevano detto che non era possibile farlo ma alla fine grazie a voi sono arrivato all'epiilogo :D |
| | Post: 1.142 | Registrato il: 10/10/2013
| Città: VICENZA | Età: 69 | Utente Veteran | 365 | | OFFLINE |
|
05/04/2017 18:49 | |
ciao
metti su un modulo questa
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("Generatore tabelle")
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).EntireRow.Insert Shift:=xlDown
Range("E2:H2").Copy Destination:=.Cells(lng, 5)
End If
Next
End With
'Set a Nothing delle variabili oggetto
Set sh = Nothing
Set wk = Nothing
End Sub
poi lanciala
nel mio pc in 7 minuti ha dato il risultato che tu vuoi
ALT F11
Inserisci
modulo
e copia dentro la macro
come non detto se hai risolto
risultato
[Modificato da federico460 05/04/2017 18:56] |
|
|