Onko mahdollista ja miten?
Minulla on kaksi excel dokomenttia: koodi_vs_nimike.xls ja lista.xls
koodi_vs_nimike.xls sisältää sarakkeet: "tuotekoodi" ja "nimike".
Lista.xls sisältää monia sarakkeita sekä sarakkeen "tuotekoodi", sarakkeessa oleva tieto on sama kuin toisessa dokumentissa mutta järjestys eri.
Miten ohjelmoin lista.xls dokumentin niin, että "tuotekoodi" sarakkeen informaatio korvautuu "nimike" tiedoilla, jotka sijaitsevat ensin mainitussa dokumntissa.
Eli jos lista.xls taulukossa on riveillä tuotekoodi, ohjelma kävisi toisessa dokumentissa katsomassa löytyykö vastaavaa koodia. Jos löytyy, niin se korvautuisi nimike tiedolla. Joka rivillä on tietysti eri tuotekoodi ja jokaisella koodilla on eri nimike.
Kiitän avusta.
-kanttila
Terve,
Onnistuuhan se. Käyt lista.xls taulukkoa läpi rivi riviltä, ja samalla käyt läpi koodi_vs_nimike taulua.
Tästä mallia http://appro.mit.jyu.fi/doc/tiedonhallinta/vba/
Silmukka ei ehkä ole tehokkain, mutta ainakin tulee tehtyä. Joku muu voi sitten kertoa optimoidumman ratkaisun.
Auttaisikohan Excelin VLOOKUP funktio: http://techonthenet.com/excel/formulas/vlookup.
Kiitän vinkeistä, pitääpä tutkailla molempia. VLOOKUP funktio näytti nopealla vilkaisulla juurikin siltä jota haen.
Vlookup funktiolla sain tehtyä.
Vielä pieni lisäkysymys liittyen tuohon funktioon.
Eli tilanne, jossa tuotekoodia ei ole koodi_vs_nimike.xls dokumentissa, vlookup palauttaa arvon #N/A. Mitenkä saan helposti funktioon lisättyä parametrin, jotta tuo #N/A korvautuisi tyhjällä, eli solu jäisi tyhjäksi.
=VLOOKUP(H2;'polku/koodi_vs_nimike.xls'#
-kanttila
Onnistuu esimerkiksi tutkimalla IF ja ISNA funktionlla onko arvo #N/A.
=IF(ISNA(VLOOKUP(H2;'polku/koodi_vs_nimike.xls'#$Taulukko1.C$2:D$1006;2)),"",VLOOKUP(H2;'polku/koodi_vs_nimike.xls'#$Taulukko1.C$2:D$1006;2))
Tuo jättäisi #N/A arvot tyhjiksi.
Tarkempi selitys löytyy tuolta aiemin lähettämästäni linkistä, Frequently Asked Questions kohdasta.
Yleensä vastaavien ongelmien ratkaisussa käytetään SQL:llää. M$-ympäristössä lieneen suosituin Access.
Aihe on jo aika vanha, joten et voi enää vastata siihen.