Condividi:        

Aggiornamento distinte materiali

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

Aggiornamento distinte materiali

Postdi mizio36 » 07/11/16 10:36

Ciao a tutti, vi chiedo cortesemnete un aiuto, è diversi giorni che provo a trovare dei suggerimenti tra i vari siti ma non ci riesco; ho un file excel che chiamerò “Distinta rev. 1” che contiene la colonna F con il codice articolo, la colonna G con la famiglia del prodotto e la colonna L con il prezzo del prodotto; poi ho un altro file excel che chiamerò “Distinta rev. 2” più aggiornato con ulteriori righe che contiene sempre la colonna F con il codice articolo, la colonna G con la famiglia del prodotto e la colonna L con il prezzo del prodotto;
nel file excel “Distinta rev. 2”, nella colonna F ci possono essere:
1) dei codici articoli che trovo già anche nel file excel “Distinta rev. 1” ma che non hanno associato ne la famiglia ne il prezzo; il mio obiettivo sarebbe, attraverso una macro penso, di aggiornare ” la colonna G e la colonna L del file excel “Distinta rev. 2 andando a prelevare per questi codici la famiglia e il prezzo dal file excel “Distinta rev. 1”;
2) dei codici articoli nuovi che non trovo nel file excel “Distinta rev. 1” ai quali vorrei associare intanto solo la famiglia e questo lo potrei fare andando a riconoscere i primi 3 caratteri del codice articolo, questo mi sembra più facile e realizzabile anche solo con una funzione ma se fosse possibile con una macro sarebbe meglio;
Le righe (quindi i codici articoli) in totale sono massimo 5000, il codice articolo è un alfanumerico di circa 20 caratteri e le famiglie sono circa 40.
Ringrazio anticipatamente coloro che saranno così gentili a darmi una mano.
mizio36
Newbie
 
Post: 8
Iscritto il: 07/11/16 09:47

Sponsor
 

Re: Aggiornamento distinte materiali

Postdi patel » 07/11/16 12:53

una mano te la diamo, ma tu allega un piccolo file di esempio con dati, spiegazioni e risultato desiderato
patel
Utente Senior
 
Post: 309
Iscritto il: 24/04/12 16:03

Re: Aggiornamento distinte materiali

Postdi mizio36 » 07/11/16 13:38

Ok come posso fare per allegare dei file ?
mizio36
Newbie
 
Post: 8
Iscritto il: 07/11/16 09:47

Re: Aggiornamento distinte materiali

Postdi mizio36 » 07/11/16 14:29

forse ce la faccio, in http://dropcanvas.com/stu8l ho messo i due file esempio con 30/40 righe, Distinta rev. 1.xlsx con foglio1 e Distinta rev. 2.xlsx con foglio1 che contiene l'aggiornamento con delle righe in più (ma possono anche essere in meno) tutte senza famiglia e senza prezzo e con foglio2 di come vorrei il risultato; speriamo sia chiaro per voi
mizio36
Newbie
 
Post: 8
Iscritto il: 07/11/16 09:47

Re: Aggiornamento distinte materiali

Postdi Anthony47 » 08/11/16 00:42

nel file excel “Distinta rev. 2”, nella colonna F ci possono essere:
1) dei codici articoli che trovo già anche nel file excel “Distinta rev. 1” ma che non hanno associato ne la famiglia ne il prezzo; il mio obiettivo sarebbe, attraverso una macro penso, di aggiornare ” la colonna G e la colonna L del file excel “Distinta rev. 2 andando a prelevare per questi codici la famiglia e il prezzo dal file excel “Distinta rev. 1”
Guardando il risultato atteso (foglio2 di Distinta rev. 2.xlsx mi pare che tu vorresti in realta' importare i dati da Distinta rev. 1.xlsx quando manca O la famiglia O il prezzo (non SIA la famiglia SIA il prezzo).
Allo scopo ti potrebbe aiutare una macro come questa, da mettere all'interno del file Distinta rev. 2, che pertanto dovra' essere poi salvato nel formato .xlsm
Codice: Seleziona tutto
Sub PerMizio()
Dim lookIn As Worksheet, myMatch
Dim I As Long, Max1 As Long
'
Set lookIn = Workbooks("Distinta rev. 1.xlsx").Sheets("Foglio1")
'
Sheets("Foglio1").Select
Max1 = lookIn.Cells(Rows.Count, "F").End(xlUp).Row
For I = 1 To Cells(Rows.Count, "F").End(xlUp).Row
    If Cells(I, "G") = "" Or Cells(I, "L") = "" Then
        myMatch = Application.Match(Cells(I, "F").Value, lookIn.Range("F1").Resize(Max1, 1), 0)
        If Not IsError(myMatch) Then
            Cells(I, "G").Value = lookIn.Cells(myMatch, "G").Value
            Cells(I, "L").Value = lookIn.Cells(myMatch, "L").Value
        End If
    End If
Next I
MsgBox ("Completato aggiornamento...")
End Sub

Quanto all'eventuale inserimento della Famiglia credo che si possa fare, ma non hai fornito nessun elemento per capire cosa concludere dopo aver esaminato i primi tre caratteri del codice.

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

Re: Aggiornamento distinte materiali

Postdi mizio36 » 08/11/16 15:02

Grazie Anthony47, ottimo, la macro funziona; bravo;
la Distinta rev. 2 è quella che ricevo più aggiornata con degli articoli in più o in meno; gli articoli possono anche ripetersi uguali nella distinta; tutti gli articoli di questa Distinta rev. 2 non hanno il prezzo mentre per alcuni articoli può non esserci la famiglia; la precedente Distinta rev. 1 è invece già completa dei prezzi e dove presente anche delle famiglie; vorrei importare i dati dalla precedente Distinta rev. 1. e aggiornare la Distinta rev. 2 andando ad aggiungere la famiglia (dove non c'è) e il prezzo; in sostanza, alcuni altri articoli, già presenti nella precedente distinta Distinta rev. 1, devono di nuovo essere completati andando ad aggiungere la famiglia se mancante e il prezzo, altri articoli possono essere nuovi (cioè non presenti nella precedente distinta) ed eventualmente mancanti della famiglia;
per la famiglia volevo intervenire sempre con la macro assegnandogli la famiglia, una tra quelle già presenti, attraverso il riconoscimento delle prime 3 cifre, oppure una nuova famiglia (nell'esempio vedi 5 famiglie ma ipotizziamo la necessità di una sesta famiglia MI6) magari attraverso una domanda (famiglia non riconosciuta, manca la famiglia, vuoi assegnarne una nuova?) oppure colorando le celle ma questo credo sia già più difficile;
per il prezzo di questi articoli nuovi o interverrei manualmente (stessa cosa che potrei fare anche con la famiglia) oppure stavo pensando, siccome abbiamo i listini prezzi delle varie case costruttrici ed il ns. codice articolo è molto simile, se c'è il modo di fare un confronto con il codice articolo della casa costruttrice, una sorta di riconoscimento (esempio il ns. articolo è LMN123OPQ456RST789 quello della casa costruttrice è LMN123-OPQ456.RST789.XYZ000 http://dropcanvas.com/#qJ8nwClOL5DY8s con struttura solita dei listini), il nostro alfanumerico è scuramente contenuto nell'alfanumerico della casa costruttrice ma anche tutto questo mi sembra piuttosto difficile e impegnativo da chiederti.
Ciao
mizio36
Newbie
 
Post: 8
Iscritto il: 07/11/16 09:47

Re: Aggiornamento distinte materiali

Postdi Anthony47 » 09/11/16 01:12

Per prelevare la famiglia da righe simili allora si puo' modificare la macro come segue:
Codice: Seleziona tutto
Sub PerMizio2()
Dim lookIn As Worksheet, myMatch, wArr
Dim I As Long, Max1 As Long, Max0 As Long
Dim J As Long, cFam As String, lB0 As Long, lB1 As Long
'
Set lookIn = Workbooks("Distinta rev. 1.xlsx").Sheets("Foglio1")
'
Sheets("Foglio1").Select
Max0 = Cells(Rows.Count, "F").End(xlUp).Row
wArr = Range("F1:G" & Max0).Value
lB0 = LBound(wArr, 1)
lB1 = lB0 + 1
Max1 = lookIn.Cells(Rows.Count, "F").End(xlUp).Row
For I = 1 To Max0
    If Cells(I, "G") = "" Or Cells(I, "L") = "" Then
        myMatch = Application.Match(Cells(I, "F").Value, lookIn.Range("F1").Resize(Max1, 1), 0)
        If Not IsError(myMatch) Then
            Cells(I, "G").Value = lookIn.Cells(myMatch, "G").Value
            Cells(I, "L").Value = lookIn.Cells(myMatch, "L").Value
        Else
            cFam = Left(Cells(I, "F"), 3)
            For J = 1 To Max0
                If Left(wArr(J, lB0), 3) = cFam And wArr(J, lB1) <> "" Then
                    Cells(I, "G") = wArr(J, lB1)
                    Exit For
                End If
            Next J
        End If
    End If
Next I
MsgBox ("Completato aggiornamento...")
End Sub

Se famiglia mancante su Distinta rev. 2 e quel Codice Articolo manca su Distinta rev. 1 allora sara' inserito la famiglia da un codice simile (confronto fatto sui primi 3 crt del codice; alla prima uguaglianza la ricerca viene terminata). Se non viene trovata una famiglia la cella rimane vuota, quindi applicando il filtro automatico alla colonna hai la vista delle righe da correggere.
Quanto al prezzo, spero che non sia una macro a determinare i prezzi dei vostri nuovi codici; insomma e' da risolvere in altro modo.

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

Re: Aggiornamento distinte materiali

Postdi mizio36 » 09/11/16 11:23

Grazie Anthony47, in verità i prezzi li andrei a prelevare da Listino casa costruttrice (che sarebbe posizionato in una cartella del server), tieni presente che ho listini di diverse case costruttrici (per semplificare in http://dropcanvas.com/#qJ8nwClOL5DY8s ho inserito un esempio soprattutto per la struttura); provo intanto ad esercitarmi con delle funzioni,
dopo aver ricondotto l'articolo LMN123OPQ456RST789 all'artico del listino LMN123-OPQ456.RST789.XYZ000,
a questo punto sto cercando di verificare l'utilizzo della funzione
=INDICE('[Listino casa costruttrice.xlsx]Foglio1'!B:J;CONFRONTA(F23;'[Listino casa costruttrice.xlsx]Foglio1'!J:J;0);9),
ipotizzando intanto di tenere aperto Listino casa costruttrice.xlsx ma non funziona, il risultato è #N/D, non capisco perché.
mizio36
Newbie
 
Post: 8
Iscritto il: 07/11/16 09:47

Re: Aggiornamento distinte materiali

Postdi mizio36 » 09/11/16 11:35

Ok forse ce l'ho fatta con questa funzione, c'era un errore, così dovrebbe esser corretta =INDICE('[Listino casa costruttrice.xlsx]Foglio1'!B:J;CONFRONTA(F23;'[Listino casa costruttrice.xlsx]Foglio1'!B:B;0);9)
mizio36
Newbie
 
Post: 8
Iscritto il: 07/11/16 09:47

Re: Aggiornamento distinte materiali

Postdi mizio36 » 09/11/16 13:24

sto facendo dei tentativi, pensavo di riuscirci ma non ci riesco, adesso starei provando ad estrarre, ho LMN123-OPQ456.RST789.XYZ000 e devo eliminare il segno meno - e il segno punto . per far diventare l'articolo LMN123OPQ456RST789XYZ000 ed eventualmente eliminare anche l'ultima parte XYZ000 per far diventare l'articolo LMN123OPQ456RST789, ma non ci riesco
mizio36
Newbie
 
Post: 8
Iscritto il: 07/11/16 09:47

Re: Aggiornamento distinte materiali

Postdi Anthony47 » 09/11/16 23:22

Per passare ripulire LMN123-OPQ456.RST789.XYZ000 dai "-" e "." puoi usare la formula
Codice: Seleziona tutto
=SOSTITUISCI(SOSTITUISCI(A2;"-";"");".";"")

Puoi annidare ulteriori SOSTITUISCI per eliminare altri caratteri.

Se vuoi togliere in coda anche una eventuale componente XYZ000 potresti usare ad esempio
Codice: Seleziona tutto
=SE(DESTRA(SOSTITUISCI(SOSTITUISCI(A2;"-";"");".";"");LUNGHEZZA("XYZ000"))="XYZ000";SINISTRA(SOSTITUISCI(SOSTITUISCI(A2;"-";"");".";"");LUNGHEZZA(SOSTITUISCI(SOSTITUISCI(A2;"-";"");".";""))-LUNGHEZZA("XYZ000"));SOSTITUISCI(SOSTITUISCI(A2;"-";"");".";""))

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

Re: Aggiornamento distinte materiali

Postdi mizio36 » 10/11/16 22:15

Grazie e buon lavoro.
mizio36
Newbie
 
Post: 8
Iscritto il: 07/11/16 09:47


Torna a Applicazioni Office Windows


Topic correlati a "Aggiornamento distinte materiali":


Chi c’è in linea

Visitano il forum: Nessuno e 22 ospiti