Excel: uniikin ID:n löytäminen

Viestiketju Windows -ongelmat -osiossa. Ketjun avasi thezan 11.08.2009.

  1. thezan

    thezan Member

    Liittynyt:
    08.03.2005
    Viestejä:
    55
    Kiitokset:
    0
    Pisteet:
    16
    Eli ongelma on tämä: Minulla on Sarake jossa on tietoa, josta pitää löytää se yksi uniikki ID. Sarakkeesta löytyy 16 solua, jossa lukee "ei löydy" ja aina yksi "A - Q" eli siis uniikki ID tässä tapauksessa on jokin kirjain väliltä "A - Q".

    Tässä esimerkkki sarakkeesta:
    ei löydy
    B
    ei löydy
    ei löydy
    ei löydy
    ei löydy
    ei löydy
    ei löydy
    ei löydy
    ei löydy
    ei löydy
    ei löydy
    ei löydy
    ei löydy
    ei löydy
    ei löydy
    ei löydy

    Eli tarvitsisin funktion tai VBA koodin pätkän, joka voisi etsiä tuossa tapauksessa tuon "B" kirjaimen. Huomioidaan vielä, että tässä tapauksessa ei tule kuuloonkaan Excelin pika / erikoisuodatus ominaisuus. Sen tarvitseen nimenomaan olla yhteen soluun löydetty uniikki kirjain. Esimerkkinä funktio =PHAKU("B";A1:A17;1;EPÄTOSI) ei tule kysmykseen, koska jossain muussa tapauksessa kirjain "B" voi olla, joku muu väliltä "A - Q" niin kuin aikaisemmin mainitsin. Periaatteessa tämän olisi pystynyt rakentamaan yhteen soluun käyttämällä JOS funktioita ja PHAKU funktioita sisäkkäin, mutta yhden solun maksimi koko ei riittänyt tähän. Joten mikä avuksi?
     
  2.  
  3. tukis

    tukis Guest

    Entä tälläinen

    Koodi:
    Function OmaID(Hakualue As Range)
        Dim Solu As Range
        For Each Solu In Hakualue.Cells
         If Solu.Value <> "ei löydy" Then OmaID = Solu.Value: Exit For Else OmaID = ""
        Next
    End Function
    Funtion käyttö: soluun esim. =OmaID(A1:A17)

    Funktio ei päivity jollei muuta jotain solua. Pitäisikö muuttaa pysymättämäksi. F9 painamalla saa päivitettyä kaavan muokkauksen jälkeen muuttamatta solujen arvoja. Tuo tulee siis eteen vain kaavaa muokatessa esim. kokeiltaessa kaavan muutoksia.

    En osaa VBA tai muutakaan ohjelmointia.

    Poistettu ELSE -lause ja korvattu se OmaID = "":lla
    Koodi:
    Function OmaID(Hakualue As Range)
        OmaID = ""
        Dim Solu As Range
        For Each Solu In Hakualue.Cells
         If Solu.Value <> "ei löydy" Then OmaID = Solu.Value
        Next
    End Function
    Jos ottaa : Exit For pois myös, niin toimii muuten samoin, mutta useamman "osuman" tapauksessa jää viimeinen voimaan.
     
    Moderaattorin viimeksi muokkaama: 11.08.2009
  4. thezan

    thezan Member

    Liittynyt:
    08.03.2005
    Viestejä:
    55
    Kiitokset:
    0
    Pisteet:
    16
    Aivan mahtavaa! Se toimii juurikin niin kuin pitää. Itse kuitenkin osaan ohjelmointia jonkun verran, että hieman nolottaa, etten keksinyt tuota. Kuitenkin iso kiitos vielä.
     
  5. tukis

    tukis Guest

    Ei koodin kirjoittaminen minullekaan täysin vierasta ole, mutta tarkoitin etten ole perehtynyt mihinkään kuin pintapuolisesti, joten jälki voi olla mitä on ja voi löytyä paljon parempi tapa ratkaista tehtävä.
     

Jaa tämä sivu