Sostituzione Campo tra due tabelle
Hai un problema con Excel? 
Sostituzione Campo tra due tabelle
di wpolo data: 13/04/2015 13:48:26
Buongiorno a tutti.
Ho la seguente necessità
Come da allegato, dove nella realtà i fogli "Dati Origine" e "Risultato Atteso" saranno in un file excel ed il foglio "Tabella Soggetti-Codice" sarà in un altro file excel, ho una serie di righe nel formato
DATA INIZIO - DATA FINE - SOGGETTO - CODICE FISCALE
I campi SOGGETTO e CODICE FISCALE non sono sempre presenti, nel senso che posso avere le seguenti combinazioni
SOGGETTO - CODICE FISCALE
SI SI
NO SI
SI NO
Per ogni riga, la combinazione SOGGETTO - CODICE FISCALE dovrà essere sostituita da un codice presente in un'altra tabella (Tabella Soggetti-Codice), dove per ogni combinazione univoca, ho un codice numerico.
Nella tabella "Tabella Soggetti-Codice" ho solo righe di relazione univoche, mentre potrei avere più SOGGETTI con CODICE FISCALE diverso o, analogamente, più CODICI FISCALI con SOGGETTI diversi (devo gestire proprio questa problematica)
La tabella "Tabella Soggetti-Codice" ha 17500 righe, quindi le funzioni filtro non funzionano, posso cmq splittarlo in due tabella sotto le 10000 righe, il noto limite di gestione dei dati univoci per i filtri di excel.
La mia esigenza, quindi, è di avere una procedura tramite macro che mi creasse un nuovo foglio come quello allegato (Risultato Atteso).
Spero di essere stato sufficentemente esaustivo.
Grazie di cuore a tutti
di alfrimpa data: 13/04/2015 15:27:00
Ciao WPolo
Magari la procedura è un po' contorta (e forse non ho neanche interpretato bene la tua richiesta) ma prova a dare un'occhiata al file che ti ho allegato.
Se ho sbagliato butta pure via il tutto
Diversamente ci si risente per eventuali approfondimenti.
Alfredo
di wpolo (utente non iscritto) data: 13/04/2015 19:15:39
Ciao alfrimpa,
innanzi tutto grazie per la tua disponibilità.
Ho provato a risolvere da solo seguendo le tue indicazioni, ma mi sono arenato sulle matrici delle tabelle da te utilizzate per dichiarare soggetticodice1 - soggetticodici - soggetticodice.
Cerco si spiegarmi meglio.
Nel tuo esempio hai inserito nello stesso foglio sia ORIGINE che RISULTALTO, che ho provveduto a dividere su due fogli distinti.
Fino a qui nessun problema, tranne il fatto che se il campo origine SOGGETTO è vuoto, la formula non funziona, ma ho maccheronicamnete risolto.
Il vero problema mi si pone se vado a sostiture l'elenco dei codici (ho pubblicato un mini elenco) con quello vero che ne contiene circa 17500.
Immagino che debba aggiornare le suddette matrici, ma non sono riuscito a identificare gli intervalli e la logica da te applicata.
Mi puoi aiutare?
Premetto che la mia conoscenza in materia è prorio base base...
Ciao
di alfrimpa data: 13/04/2015 22:17:36
Ciao WPolo
Ma sulla base del file che tu hai allegato la mia soluzione è corretta oppure ha anch'essa qualche problema.
Il fatto che trasportando il tutto sulla tua situazione reale non funzioni può essere dovuto a:
1) non hai applicato bene la mia ipotesi (sempre che sia corretta)
2) il file reale ha delle casistiche che non hai contemplato nel file allegato.
Io ho riunito il tutto sul un unico foglio solo per avere tutto sott'occhio e quindi per comodità.
Alfredo
di wpolo data: 14/04/2015 10:39:06
Ciao Alfrimpa,
hai ragione, per eccesso di zelo, nel file di esempio non ho correttamente elencato tutte le casistiche che invece avevo cercato di elencare nella descrizione del problema...
Cerco di riassumere meglio le mie esigenze.
Ho un file separato (TABELLA SOGGETTI-CODICI), in cui sono presenti circa 17500 righe riportanti
SOGGETTO - CODICE FISCALE - CODICE
che sono univoci, ma la cui loro combinazione prevede anche l'assenza, su qualche riga, o del SOGGETTO o del CODICE FISCALE, che deve fare da riferimento alle formule/macro che mi serve;
ho poi una serie di file, con un numero variabile di righe, che in un caso sono circa 11.000, che hanno i seguenti campi
DATA INIZIO - DATA FINE - SOGGETTO - CODICE FISCALE
dove, analogamente alla TABELLA SOGGETTI-CODICI, i campi SOGGETTO e CODICE FISCALE possono essere alternativamante vuoti, ma comunque uno dei due è sempre presente;
la funzionalità a me necessaria è che mi si crei un altro file (o foglio all'interno del file origine), dove per ogni riga popolata DATA INIZIO - DATA FINE - SOGGETTO - CODICE FISCALE del foglio di origine, avrò nel file/foglio eleborato, una riga che associ la riga popolata del file origine DATA INIZIO - DATA FINE - SOGGETTO - CODICE FISCALE con il corrispondente CODICE della riga della TABELLA SOGGETTI-CODICI che abbia lo stesso valore del binomio SOGGETTO-CODICE FISCALE.
Spero di non essere stato troppo arzigogolato.....
Ti allego un nuovo file corretto, dove i valori della TABELLA SOGGETTI-CODICI, nela realtà contenuti in un altro file, sono inseriti per comodità in un foglio dello stesso file.
Considerando che questo lavoro lo dovevo consegnare ieri, SONO DISPERATO!!!!!
GRAZIE!!!!
di wpolo data: 14/04/2015 12:19:45
Ciao a tutti,
ho risolto da solo, seguendo la strada indicata da Alfrimpa.
in pratica, alla fine della riga
DATA INIZIO - DATA FINE - SOGGETTO - CODICE FISCALE
prendendo a riferimento il file MatriceSoggetti per i codici da inserire, ho inserito questa formula
=SE(D2="";SE(C2="";"";CERCA.VERT(C2;'G:[MatriceSoggetti.xlsx]CODICI'!$A$2:$C$17478;3;FALSO));CERCA.VERT(D2;'G:[MatriceSoggetti.xlsx]CODICI'!$B$2:$C$17478;2;FALSO))
Grazie Alfredo per avermi indicato la strada
Ciao a tutti
di Shalom (utente non iscritto) data: 14/04/2015 12:34:24
Vogliamo dire che mi hai portato fuori strada? e diciamolo!
Spiego il perchè:
Sono partito dal tuo file "Esempio Soggetti-Codice CORRETTO.xlsx".
ho diviso il file in due file:
- Soggetti-Codice.xlsx; nel quale è presente solo il foglio "Soggetti-Codice"
- Risultato.xlsx; nel quale sono presenti due fogli:
- "Dati Origine"
- "Risultato ottenuto"
In realtà ho utilizzato anche un terzo foglio "Risultato Atteso", ma, solo per verificare i valori ottenuti nel foglio "Risultato ottenuto"
Impostando la Formula proposta, in "E2" non riuscivo ad ottenere altro che un deprimente #N/D
visto che ero piuttosto sicuro della formula, ho cercato di capire il motivo.
Se controlli i dati in "D2" e in "D3" potrai ben vedere che il "CODICE FISCALE" è precduto da ... "uno spazio".
Corretto l'inghippo, propongo la formula da inserire in "E2" e copiare nelle celle sottostanti.
Shalom
=SE($C2="";CERCA.VERT($D2;'C:Prove[Soggetti-Codice.xlsx]Tabella Soggetti-codici'!$B:$C;2;0);CERCA.VERT($C2;'C:Prove[Soggetti-Codice.xlsx]Tabella Soggetti-codici'!$A:$C;3;0)) |
di Shalom (utente non iscritto) data: 14/04/2015 12:37:18
Hoppsss!
Vedo solo ora il "Risolto" della discussione.
Non credo di poter cancellare la risposta precedente.
I'm Sorry.
Shalom
di alfrimpa data: 14/04/2015 12:40:22
Cit.: "Se controlli i dati in "D2" e in "D3" potrai ben vedere che il "CODICE FISCALE" è precduto da ... "uno spazio".
Ed infatti sono uscito pazzo con questi spazi!
Alfredo
Vuoi Approfondire?