Condividi:        

[Excel]Macro per trovare corrispondenze

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

[Excel]Macro per trovare corrispondenze

Postdi ferrox82 » 17/06/08 12:45

Ciao a tutti, vorrei chiedere come potrei fare per assegnare una macro per il seguente problema:

ho 5 clienti diversi, che sono 1100, 1200, 1300, 1500, 2100. Ciascuno mi fornisce dei materiali, lo stesso materiale può essere fornito da più fornitori, secondo lo schema seguente:

Materiale Fornitore Codice bolla
126052 1200 M1095
126052 1300 R6001
126052 1500 W3011
126053 1200 M1095
126062 1100 B0260
126062 2100 A00109
203007 1300 R6001

Ora, io posso avere 3 tipi diversi di bolla, che chiamerò bolla1, bolla2, bolla3.
Per il fornitore 1100 la bolla1 inizia con la lettera A, oppure B, oppure C, oppure D, mentre la bolla2 inizia con V. Per il forn. 1300 il tipo bolla1 inizia con R7, R8 o R9, mentre il tipo bolla1 con R1, R2, R3, fino ad R6.
In definitiva ho una codifica diversa per ogni fornitore (la discriminante è comunque nella prima o al massimo nelle prime 2), ma i 3 tipi di bolla diversi sono comuni a tutti.
Ora, io vorrei riuscire a "tirare fuori", per ogni riga della tabella, il tipo di bolla corrispondente.
Grazie a tutti per il momento...
ferrox82
Utente Junior
 
Post: 21
Iscritto il: 16/07/07 16:10

Sponsor
 

Re: [Excel]Macro per trovare corrispondenze

Postdi Anthony47 » 17/06/08 13:39

Quindi concretamente, con i dati elencati, puoi scrivere in colonna D che cosa vorresti ottenere?

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

Re: [Excel]Macro per trovare corrispondenze

Postdi ferrox82 » 17/06/08 14:08

Ciao, in colonna D vorrei ottenere il tipo di Bolla, se bolla1, bolla2, bolla3.
Praticamente ho 5 codifiche diverse per ogni tipo di bolla, a seconda del fornitore.
Ho provato con una funzione SE, facendo SE(sinistra(C2,1)="M";"bolla1;SE(sinistra(C2,1)="V";"bolla2";......)
ma ci sono troppi argomenti e visto che ci sono tanti argomenti da immettere non è efficace per nulla.

Come potrei fare?
ferrox82
Utente Junior
 
Post: 21
Iscritto il: 16/07/07 16:10

Re: [Excel]Macro per trovare corrispondenze

Postdi Anthony47 » 17/06/08 14:56

Ti fai una tabella che riepiloga le possibili combinazioni, es
Codice: Seleziona tutto
A----B
M---Bolla1
V---Bolla2
R7--Bolla1
etc

Poi usi la stringa ottenuta con SINISTRA come chiave di ricerca di un CERCA.VERT nella tabella; poiche' a seconda del codice devi estrarre 1 o 2 crt, userai ad esempio SE(o(Codice=uno;Codice=due);2;1) per definire che vuoi estrarre 2 crt sui codici "uno" e "due".
In linea di massima:
Codice: Seleziona tutto
=Cerca.vert(Sinistra(Numero bolla;Se(o(codice=uno;codice=due);2;1));Tabella;2;0)
Se servono altri dettagli fatti sentire.
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel]Macro per trovare corrispondenze

Postdi ferrox82 » 18/06/08 09:32

ho capito a grandi linee cosa fare, ma in realtù nel cerca.vert quel codice=uno o quel codice=due varia a seconda del fornitore, per cui dovrei farmi due tabelle, una per la codifica e una per stabilire quanti caratteri tirare fuori per ogni fornitore?
ferrox82
Utente Junior
 
Post: 21
Iscritto il: 16/07/07 16:10

Re: [Excel]Macro per trovare corrispondenze

Postdi Anthony47 » 18/06/08 14:01

Non devi fare due tabelle.
Poiche' per alcuni fornitori la discriminante e' 1 carattere del CodiceBolla e per altri invece sono 2 caratteri, quel SE(O(etc etc serve a dire se da CodiceBolla devi prendere 2 caratteri oppure 1. Purtroppo la tua descrizione iniziale e' stata un po' parziale (non hai chiarito per quali Fornitori serve 1 crt e per quali ne servono 2, non hai dato la chiave per identificare Bolla1, Bolla2 e Bolla3 ma hai fatto solo alcuni esempi) e un po' imprecisa (ad esempio per il codice 1300 hai descritto due casi di Bolla1); quindi mi sono tenuto sul generico. Nella formula tutte le eguaglianze che metti sotto quell' "O" (cioe' OR) sono quelli che hanno 2 crt come chiave.
Un esempio di formula in D2 potrebbe essere:
Codice: Seleziona tutto
=Cerca.vert(Sinistra(C2;Se(o(B2=1300;B2=2100);2;1));$Z$1:$AA$20;2;0)

In questo caso ho ipotizzato che per i Fornitori 1200 e 2100 devi sondare 2 crt e che la tabella sia in Z1:AA20

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

Re: [Excel]Macro per trovare corrispondenze

Postdi ferrox82 » 19/06/08 08:12

Il discorso è che alla fine devo ricondurre i vari materiali con i relativi codici bolla a 3 tipi di bolla, bolla1, bolla2, bolla3.
Per il fornitore 1100 devo tirare fuori 1 carattere, per il 1300 2 caratteri, per il 1400 2 caratteri, per il 1900 2 caratteri.

per il 1100 se la prima lettera del codice bolla è A oppure B, oppure C oppure D ----> tipo bolla1 (1 crt)
per il 1400 " è 10 ---> tipo bolla1 (2 crt)
per il 1900 " " è 62, SC, o 87 -----> bolla1 (2 crt)

per il 1100 se la prima lettera del codice bolla è K -----> tipo bolla2 (1 crt)
per il 1300 se " " R7,R8, R9, s1 ---> bolla2 (2 crt)
per il 1400 se " " 13, 14 ---> bolla2 (2 crt)
per il 1900 se " " 85, 63 ---> bolla2 (2 crt)

per il 1100 se la prima lettera del codice bolla è V -----> tipo bolla3 (1 crt)
per il 1300 se " " R1, R2, R3, R4 ---> bolla2 (2 crt)
per il 1400 se " " V ---> bolla3 (1 crt)
per il 1900 se " " M ----> bolla3 (1 crt)

secondo te sarebbe opportuno fare 1 tabella x le corrispondenze con una colonna per il fornitore, una con i caratteri e una con il tipo bolla cui corrisponde, e cioè:

fornitore codifica tipo bolla
1100 k bolla2
1300 R1 bolla2
1900 M bolla2
.
.
.
e poi da li fare il cerca vert o 1 macro?
ferrox82
Utente Junior
 
Post: 21
Iscritto il: 16/07/07 16:10

Re: [Excel]Macro per trovare corrispondenze

Postdi Anthony47 » 19/06/08 12:04

Qualora lavorando sulle prime 1 o 2 lettere ci fossero dei conflitti (es A2 significa Bolla2 per il cod 1300 e Bolla1 per il cod 1100; non ho controllato se nel dettaglio che hai dato il problema esiste), allora fai la tabella dal concatenamento delle prime lettere (1 o 2) e il codice separato da "spazio" (per leggibilita'), e in col 2 il tipo Bolla.
Es
Codice: Seleziona tutto
Col A-----Col B
A2 1300--Bolla2
A2 1100--Bolla1
M 1200---Bolla1
etc

e poi nella formula concateni analogamente il codice, es.
Codice: Seleziona tutto
=Cerca.vert(Sinistra(C2;Se(o(B2=1300;B2=2100);2;1))&" "&B2;$Z$1:$AA$20;2;0)


Se invece questo problema non esiste io non mi complicherei la vita.

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


Torna a Applicazioni Office Windows


Topic correlati a "[Excel]Macro per trovare corrispondenze":


Chi c’è in linea

Visitano il forum: Nessuno e 53 ospiti