Tekstin poimiminen

Onko mahdollista saada seuraavanlaista toimintoa:
A-sarake      B-sarake
Virtanen Heikki      Virtanen
Virtanen Asko      Virtanen
Korhonen Ville      Korhonen
Tuominen Eetu      Tuominen
Korhonen Reino      Korhonen

Eli minulla olisi A sarkeessa ihmisten nimiä ja pitäisi saada B-sarkkeeseen kopioitua A-sarkkeen ihmisten sukunimet. Eri sukunimiä on noin 20kpl ja A-sarakkeessa nimiä noin 500kpl. Miten teen?
155034
Äänestä

Muut lukivat myös

Vastaukset 15

Vanhimmat

Tee soluun B1 kaava
=POIMI.TEKSTI(A1;1;KÄY.LÄPI(" ";A1))
ja vedät täyttökahvalla niin pitkälle kun nimiä riittää. Poimii tekstin välilyöntiin asti, jos sukunimi on kaksiosainen poimii vain ensimmäisen osan.

Äänestä
  • Nimet ovat tosiaan kaksi osaisia joten toinen osa jää pois. Olisiko mahdollista että se tutkisi listan jossa se kävisi läpi sukunimet, kun niitähän ei ole kuin se 20kpl.

    Äänestä

  • Jakke kirjoitti:

    Nimet ovat tosiaan kaksi osaisia joten toinen osa jää pois. Olisiko mahdollista että se tutkisi listan jossa se kävisi läpi sukunimet, kun niitähän ei ole kuin se 20kpl.

    Eikös kaksiosaiset sukunimet kirjoiteta väliviivalla. Silloinhan tuon pitäisi toimia. (Poikkeuksena tosin jotkut "von Hertzen"-tyyppiset nimet)

    Lisäisin tuon funktion loppupuolelle vielä "-1", niin se välilyönti ei tule mukaan:

    =POIMI.TEKSTI(A1;1;KÄY.LÄPI(" ";A1)-1)


    - Mika

    Äänestä

  • Jakke kirjoitti:

    Nimet ovat tosiaan kaksi osaisia joten toinen osa jää pois. Olisiko mahdollista että se tutkisi listan jossa se kävisi läpi sukunimet, kun niitähän ei ole kuin se 20kpl.

    Jos nimi on muodossa
    Koski-Vähälä Reino
    tuo kaava toimii, Mutta jos nimi on muodossa
    Rantala Kamunen Tuula
    poimii vain Rantala.
    Millaisessa muodossa niitä on.

    Äänestä

  • Mika kirjoitti:

    Eikös kaksiosaiset sukunimet kirjoiteta väliviivalla. Silloinhan tuon pitäisi toimia. (Poikkeuksena tosin jotkut "von Hertzen"-tyyppiset nimet)

    Lisäisin tuon funktion loppupuolelle vielä "-1", niin se välilyönti ei tule mukaan:

    =POIMI.TEKSTI(A1;1;KÄY.LÄPI(" ";A1)-1)


    - Mika

    Suurin osa on kyllä normaaleja sukunimiä, mutta löytyy myös noita saksalaisia nimiä Von, Dam, yms.

    Äänestä

  • paavali kirjoitti:

    Jos nimi on muodossa
    Koski-Vähälä Reino
    tuo kaava toimii, Mutta jos nimi on muodossa
    Rantala Kamunen Tuula
    poimii vain Rantala.
    Millaisessa muodossa niitä on.

    Ilman väliviivaa. Nyt toteutin sen niin että C-sarakkeessa on seuraava kaava:
    =JOS(B1="Herzen";KETJUTA(B1;" Von");JOS(B1="Dam";KETJUTA(B1;" Van");B1))

    En nyt ihan tarkaan muista montako ikävää sukunimi muunnosta löytyy mutta ei niitä montaa ollut.

    Äänestä

  • Jakke kirjoitti:

    Ilman väliviivaa. Nyt toteutin sen niin että C-sarakkeessa on seuraava kaava:
    =JOS(B1="Herzen";KETJUTA(B1;" Von");JOS(B1="Dam";KETJUTA(B1;" Van");B1))

    En nyt ihan tarkaan muista montako ikävää sukunimi muunnosta löytyy mutta ei niitä montaa ollut.

    se onnistuu, Mutta ei onnistu ilman -1, josta Mika jo mainitsi.

    Äänestä

  • paavali kirjoitti:

    se onnistuu, Mutta ei onnistu ilman -1, josta Mika jo mainitsi.

    Lisää moduuli ja sinne funktio

    Function Sukunimi(Teksti As String)
    Dim i As Integer
    Dim sana As String
    i = 1
    Do Until sana Like (" *")
    sana = Right(Teksti, i)
    i = i 1
    Loop
    Sukunimi = Left(Teksti, Len(Teksti) - Len(sana))
    End Function

    sitten liitä funktio nappulalla haet sukunimi funktion tai kirjoitat suoraan soluun
    =Sukunimi(A1) ja kopioit alas
    :)Kunde

    Äänestä

  • Kunde kirjoitti:

    Lisää moduuli ja sinne funktio

    Function Sukunimi(Teksti As String)
    Dim i As Integer
    Dim sana As String
    i = 1
    Do Until sana Like (" *")
    sana = Right(Teksti, i)
    i = i 1
    Loop
    Sukunimi = Left(Teksti, Len(Teksti) - Len(sana))
    End Function

    sitten liitä funktio nappulalla haet sukunimi funktion tai kirjoitat suoraan soluun
    =Sukunimi(A1) ja kopioit alas
    :)Kunde

    Täytyy kokeilla kaikki mahdolliset ja mahdottomat tapaukset. Niin huomasin ettei toimi kunnolla.
    Jos on nimi Virtanen Maija Liisa ilman väliviivaa niin tulos on Virtanen Maija.

    Äänestä

  • Jakke kirjoitti:

    Täytyy kokeilla kaikki mahdolliset ja mahdottomat tapaukset. Niin huomasin ettei toimi kunnolla.
    Jos on nimi Virtanen Maija Liisa ilman väliviivaa niin tulos on Virtanen Maija.

    Tämä nyt tässä vaihessa enää paljon auta, mutta kuitenkin...

    Taitaa olla varmin kosnti se, että tietojen tallennus vaiheessa käyttää noissa sukunimissä vaikka alaviivaa tyyliin von_Hertzen, ja poistaa "ala-apuviivat" sitten kun tietoja esitetään.


    - Mika

    Äänestä

  • Mika kirjoitti:

    Eikös kaksiosaiset sukunimet kirjoiteta väliviivalla. Silloinhan tuon pitäisi toimia. (Poikkeuksena tosin jotkut "von Hertzen"-tyyppiset nimet)

    Lisäisin tuon funktion loppupuolelle vielä "-1", niin se välilyönti ei tule mukaan:

    =POIMI.TEKSTI(A1;1;KÄY.LÄPI(" ";A1)-1)


    - Mika

    Entäpä jos haluan sen loppu osan välilyönnin jälkeen C soluun?

    Äänestä

Tämä hirviö B2 soluun tutkittava nimi A2 solussa.

=POIMI.TEKSTI(A2;1;JOS(ONVIRH(KÄY.LÄPI(" ";A2;KÄY.LÄPI(" ";A2;1) 1));KÄY.LÄPI(" ";A2;1);KÄY.LÄPI(" ";A2;KÄY.LÄPI(" ";A2;1) 1)))

Tämä tutkii mahdollisen toisen välilyönnin, joten poimii kaksiosaisen sukunimen, mutta ei toimi tälläisenään, jos etunimistäkin löytyy välilyöntejä eli on kaksiosaisia etunimiä (siinä tapauksessa poimii myös ensimmäisen etunimen, jos sukunimessä ei välilyöntiä). pienellä jatkojalostuksella saisi tuonkin tutkittua.

Äänestä
  • MSK kirjoittaa
    "Tämä tutkii mahdollisen toisen välilyönnin, joten poimii kaksiosaisen sukunimen, mutta ei toimi tälläisenään, jos etunimistäkin löytyy välilyöntejä eli on kaksiosaisia etunimiä (siinä tapauksessa poimii myös ensimmäisen etunimen, jos sukunimessä ei välilyöntiä). pienellä jatkojalostuksella saisi tuonkin tutkittua."

    Tuon pienen jatkojalostuksen haluan minäkin nähdä...
    tehtävässähän ei ole mitään muuta vaikeutta kuin kaksi välilyöntiä, eli tapaukset
    1. kaksiosainen sukunimi ja välilyönnillä erotettu nimi ja
    2. välilyönillä erotettu sukunimi ja kaksiosainen etunimi

    Miten ihmeessä MSK aiot selvittää kumpiko tapaus on kyseessä?

    :)Kunde

    Äänestä

  • Kunde kirjoitti:

    MSK kirjoittaa
    "Tämä tutkii mahdollisen toisen välilyönnin, joten poimii kaksiosaisen sukunimen, mutta ei toimi tälläisenään, jos etunimistäkin löytyy välilyöntejä eli on kaksiosaisia etunimiä (siinä tapauksessa poimii myös ensimmäisen etunimen, jos sukunimessä ei välilyöntiä). pienellä jatkojalostuksella saisi tuonkin tutkittua."

    Tuon pienen jatkojalostuksen haluan minäkin nähdä...
    tehtävässähän ei ole mitään muuta vaikeutta kuin kaksi välilyöntiä, eli tapaukset
    1. kaksiosainen sukunimi ja välilyönnillä erotettu nimi ja
    2. välilyönillä erotettu sukunimi ja kaksiosainen etunimi

    Miten ihmeessä MSK aiot selvittää kumpiko tapaus on kyseessä?

    :)Kunde

    Joo... tajusin tuon välittömästi kirjoitettuani edellisen viestini. Kai toivoin, että kukaan ei tuota mokaa huomaisi... Aika mahdotonta on ilman sanakirjalla varustettua massiivista ohjelmaa selvittää kolmesta peräkkäisestä sanasta, mikä on sukunimeä ja mikä etunimeä.
    Ajattelin tuossa kai sitä, että mahdollisen kolmannenkin välilyönnin voisi ottaa kaavassa huomioon...

    Äänestä

Asia selvisikin...Eli tein tällaisella kaavalla sen loppuosan haun. Löysin vastauksen toisaalta ja nättäisi toimivan

=POIMI.TEKSTI(A5;(ETSI(" ";A5)) 1;50)

Äänestä

Kommentoi aloitusta


Jakke kirjoitti:

Onko mahdollista saada seuraavanlaista toimintoa:
A-sarake      B-sarake
Virtanen Heikki      Virtanen
Virtanen Asko      Virtanen
Korhonen Ville      Korhonen
Tuominen Eetu      Tuominen
Korhonen Reino      Korhonen

Eli minulla olisi A sarkeessa ihmisten nimiä ja pitäisi saada B-sarkkeeseen kopioitua A-sarkkeen ihmisten sukunimet. Eri sukunimiä on noin 20kpl ja A-sarakkeessa nimiä noin 500kpl. Miten teen?

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