Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

creazione tabelle taglie

Ultimo Aggiornamento: 05/04/2017 18:49
Post: 1
Registrato il: 04/04/2017
Città: MILANO
Età: 44
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à: 44
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à: 44
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 [SM=x423023]

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 [SM=g27819]



[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à: 44
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à: 44
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à: 44
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à: 44
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à: 44
Utente Junior
EXCEL 2013
OFFLINE
05/04/2017 18:40

ciao ho risolto....mi manca l'ultimo passaggio [SM=x423038]

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]
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 12:23. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com