find funktio

Heips,

Voisiko joku selittää tuon FIND funktion toiminnan excelissä (tyhmälle ei mene kaaliin vaikka helppiä käyttää). Miten se toimii tai paremminkin minkä arvon se palauttaa? Eli tarkoituksena olisi saada etsittyä tietty teksti tietyltä alueelta (nyt ei kelpaa ctrl f), tämä teksti voi esiintyä useammassakin solussa. Miten saisi tehtyä sellaisen kaavan/kaavat, joka kertoisi missä soluissa kyseinen teksti on?
51663
Äänestä

Muut lukivat myös

Vastaukset 5

Vanhimmat

Se ei etsi tiettyä tekstiä tietyltä alueelta.
Vaan se etsii tietyn merkkijonon (tekstin) tietystä tekstistä.

Elikkä näin
A1 solussa teksti
aaabbbcccdddeeefff

C1 solussa etsittävä merkkijono
ccc

D1 solussa kaava
=FIND(C1;A1;1)

Antaa tulokseksi 7 elikkä merkkijono löytyy 7. merkistä eteenpäin.

Äänestä

Kuvauksesi perusteella FIND-funktio ei selvästikään vastaa tarvettasi. Sillä voi hakea tekstiä ainoastaan yhden merkkijonon (esimerkiksi yhden solun) sisältä, kun yllä jo kävi ilmi.

MATCH-funktio sen sijaan saattaa auttaa jossain määrin. MATCH osaa hakea, missä kohtaa listaa haettava arvo on.

Esimerkki. Soluissa A1-A7 on seuraavat nimet:
Vilhelmi
Jari
Mikko
Harri
Ville
Jalmari
Elmeri

Funktio MATCH("Harri";A1:A7;0) antaa tulokseksi 4, koska "Harri" on listan 4. arvo.

MATCH ei osaa hakea osamerkkijonoja, vaan ainoastaan koko merkkijonoa. MATCH ei osaa myöskään hakea monimutkaisemmasta alueesta kuin yhdestä sarakkeesta.

Jos tarvitset monimutkaisempaa hakua, joudut laatimaan VBA-makron.

--
Asiantuntevaa apua Excelin kiemuroihin - LGM Oy
http://www.lgm.fi/

Äänestä
  • moduuliin...
    muuta hakusolu=K1 ja hakualue= A1:D10 sopiviksi

    Function EtsiiKaikkiAlueelta(Hakuehto As Variant, HakuAlue As Range) As String
    Dim solu As Range
    Dim EkaOsoite As String
    Worksheets("Sheet1").Activate
    With HakuAlue
    Set solu = .Find( _
    what:=Hakuehto, _
    LookIn:=xlValues, _
    LookAt:=xlWhole, _
    SearchOrder:=xlByRows, _
    SearchDirection:=xlNext, _
    MatchCase:=False, _
    SearchFormat:=False)
    If Not solu Is Nothing Then
    EkaOsoite = solu.Address
    Do
    EtsiiKaikkiAlueelta = EtsiiKaikkiAlueelta & ", " & solu.Address
    Set solu = .FindNext(solu)
    Loop While Not solu Is Nothing And solu.Address EkaOsoite
    End If
    End With
    EtsiiKaikkiAlueelta = Right(EtsiiKaikkiAlueelta, Len(EtsiiKaikkiAlueelta) - 1)
    End Function

    Sub Etsi()
    Dim solut As String
    On Error GoTo virhe
    solut = EtsiiKaikkiAlueelta(Range("K1"), Range("A1:D10"))
    MsgBox Range("K1") & " löytyi solu(i)sta" & solut
    Exit Sub
    virhe:
    MsgBox "ei löytynyt!"
    End Sub

    Keep EXCELing
    @Kunde

    Äänestä

Vaihtoehtona olisi myös vlookup ja hlookup käskyt.

Ne osaavat käydä hakemassa tietoa useammasta solusta, mutta....
Niilläkin rajoituksena on että sinun pitää tietää tarkalleen se tieto mitä haet.
Ei riitä vain osa tiedosta.

Esim: sinä haluat löytää tiedon "kuusi"
Ja sinulla on jossakin solussa tieto "Joulukuusi"
Se ei löydä sitä.
Sinun haussa pitäisi olla "Joulukuusi" kokonaan että haku löytyy.

Äänestä

lisärajoitteita...
ei löydä kuin yhden esiintymän- yleensä ensimmäisen...
toki kikkailemalla asiaa voi parannella
VBA:lla toi oli piece of cake, ja löytää kaikki osittaisellakin vastineella, nyt tossa esim. koodissani tosin ei ole osavastinetta, mutta ei siihen tartte kuin vaihtaa
LookAt:=xlWhole --->LookAt:=xlPart

Keep EXCELing
Kunde

Äänestä

Kommentoi aloitusta


not found kirjoitti:

Heips,

Voisiko joku selittää tuon FIND funktion toiminnan excelissä (tyhmälle ei mene kaaliin vaikka helppiä käyttää). Miten se toimii tai paremminkin minkä arvon se palauttaa? Eli tarkoituksena olisi saada etsittyä tietty teksti tietyltä alueelta (nyt ei kelpaa ctrl f), tämä teksti voi esiintyä useammassakin solussa. Miten saisi tehtyä sellaisen kaavan/kaavat, joka kertoisi missä soluissa kyseinen teksti on?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu