Iskanje koščkov besedila v večjem besedilu

21.02.2023

Pred kratkim se je pojavila potreba, da bi v bazi artiklov iz šifre ugotovil, kdo je dobavitelj artikla iz posamezne vrstice.

Na voljo so bili sledeči podatki:

  • Stolpec, ki je vseboval vse dobavitelje:

  • Stolpec, ki je vseboval šifre vseh artiklov. Šifre pa na žalost niso bile sistematično urejene. Vsebovale so vse sorte podatkov, posebnih znakov ipd., ime dobavitelja pa se je pojavljalo na različnih mestih v šifri.

Treba je bilo torej poiskati, kateri dobavitelj se pojavlja v posamičnih celicah, brez da bi si lahko pomagali s kakšnim skupnim imenovalcem (npr. dobavitelj se nahaja pred prvim presledkom). Rešitev je bila uporaba klasične kombinacije funkcij INDEX in MATCH z dodatkom COUNTIF. Poglejmo, kako lahko problem rešimo.

Prvi korak je, da ugotovimo, ali neka šifra katerega od dobaviteljev sploh vsebuje in kje v naboru dobaviteljev se le-ta nahaja. Funkcija izgleda takole:

=COUNTIF(B3;"*"&$E$7:$E$10&"*")

S COUNTIF običajno štejemo, kolikokrat se v nekem naboru podatkov nahaja določen zapis, npr. kolikokrat se v neki bazi mesecev pojavi »Januar«. Funkcija na sliki pa dela sledeče: poišči mi vrednost iz celice B3 v naboru dobaviteljev, ki je v celicah od E7 do E10, če upoštevaš, da so lahko tako pred kot za imenom dobavitelja še drugi znaki (kar smo mu povedali z dodajanjem simbolov zvezdic, ki je en od Excelovih nadomestnih znakov).

Rezultat te funkcije bi bil sledeč: {0;1;0;0}. To pomeni, da šifra v celici B3 vsebuje dobavitelja, ki se v seznamu dobaviteljev nahaja na drugem mestu (0 pomeni, da ujemanja ni, 1 pomeni, da je našel ujemanje). S temi enkami in ničlami si sicer ne moremo še nič pomagati. Preko neke druge funkcije moramo dobiti številko mesta ujemanja, torej 2. Pri tem nam pomaga funkcija MATCH, ki izgleda takole:

=MATCH(1;COUNTIF(B3;"*"&$E$7:$E$10&"*");0)

Funkciji MATCH smo povedali, naj nam poišče številko 1 v naboru ujemanj, ki smo ga dobili s COUNTIF ({0;1;0;0}). Kot že rečeno, se enica nahaja na 2. mestu, kar seveda predstavlja mesto dobavitelja iz celice B3, torej BBB, v naboru dobaviteljev. Z zadnjim argumentom smo funkciji MATCH še povedali, naj išče natančno ujemanje (v podatkih, ki jih vrača COUNTIF poišči izključno 1, nič manjšega, nič večjega).

Na koncu pa je treba še ugotoviti, kaj se nahaja na 2. mestu v naboru dobaviteljev. Idealna funkcija za iskanje vsebine celice glede na njeno pozicijo v določenem območju pa je INDEX:

=INDEX($E$7:$E$10;MATCH(1;COUNTIF(B3;"*"&$E$7:$E$10&"*");0))

Funkciji INDEX smo s prvim argumentom povedali, iz katerega območja želimo dobiti neko točno določeno vrednost. Funkcija MATCH pa je prevzela nalogo argumenta št_vrstice funkcije INDEX. Kot smo povedali prej, je rezultat funkcije MATCH za ta primer 2 (BBB se v naboru dobaviteljev nahaja na 2. mestu), INDEX pa bo iz nabora dobaviteljev izpisal vrednost, ki se nahaja na 2. mestu.

Funkcijo lahko kopiramo navzdol po celotnem stolpcu (s tem v mislih smo vmes uporabljali fiksiranje) in naš končni cilj je dosežen.

Klemen Vončina
Microsoft Office Specialist Master,
predavatelj, MCT
klemen.voncina@kompas-xnet.si



Če bi se radi naučili še kaj več, se lahko že danes prijavite na tečaje Excela, kjer boste vse skupaj spoznali še dosti hitreje in podrobneje.

Uvod v Excel BI

Kdaj: 27.2 - 28.2

Poglej več
Microsoft Excel nadaljevalni

Kdaj: 27.3 - 29.3

Poglej več

Need assistance?
Need assistance?