Kuvan hakeminen Exceliin

Osaisiko kukaan antaa neuvoja seuraavaan ongelmaan. Excel-taulukossa pitäisi saada soluun kopioitua kuva joka vastaa toisen solun tekstiä. Eli kun ensimmäiseen soluun kirjoitaan teksti, niin viereeseen soluun tulee tätä tekstiä vastaava kuva. Nuo kuvat on liitetty Exceliin toiselle välilehdelle, nyt ne vaan pitäisi saada näkymään tekstin vieressä.
111614
Äänestä

Muut lukivat myös

Vastaukset 11

Vanhimmat

nyt Sheet1 solua C10 käytetään ja kuvat taulukossa Sheet2.

taulukon moduuliin...

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Kuva As Picture
Dim Kuva2 As Picture
If Not Intersect(Target, Range("C10")) Is Nothing Then
For Each Kuva In Sheets("Sheet1").Pictures
If Kuva.Top = Target.Offset(0, 1).Top And Kuva.Left = Target.Offset(0, 1).Left Then
Kuva.Delete
End If
Next
With Target
For Each Kuva2 In Sheets("Sheet2").Pictures
If Kuva2.Name = .Text Then
Sheets("Sheet2").Shapes(Kuva2.Name).Copy
ActiveSheet.Paste
Selection.Top = .Offset(0, 1).Top
Selection.Left = .Offset(0, 1).Left
' Selection.Height = 200
' Selection.Width = 200
Exit For
End If
Next Kuva2
End With
End If
End Sub

Keep Excelling
@Kunde

Äänestä
  • Kiitoksia paljon tästä Kunde. Voisitko vähän vielä neuvoa tarkemmin kuinka tämä tehdään, olen sen verran aloittelija excelin kanssa. VBA:n kanssa perusasiatkin ovat opettelussa.

    Eli sheet1 solussa C10 syötetään tuo hakuteksti, jota vastaava kuva sitten pitäisi hakea sheet2 välilehdeltä vaikka sheet1 soluun c11. Kuinka saan nimettyä nuo kuvat sheet2 välilehdellä? Pitääkö sheet1 lisätä hakunappi, johon makro jossa tuo koodi minkä lähetit? Vai onnistuuko se niin, että kun sheet1 c10- solun tekstiä muutetaan, niin myös viereinen kuva muuttuu?

    Äänestä

  • Excel-Turo kirjoitti:

    Kiitoksia paljon tästä Kunde. Voisitko vähän vielä neuvoa tarkemmin kuinka tämä tehdään, olen sen verran aloittelija excelin kanssa. VBA:n kanssa perusasiatkin ovat opettelussa.

    Eli sheet1 solussa C10 syötetään tuo hakuteksti, jota vastaava kuva sitten pitäisi hakea sheet2 välilehdeltä vaikka sheet1 soluun c11. Kuinka saan nimettyä nuo kuvat sheet2 välilehdellä? Pitääkö sheet1 lisätä hakunappi, johon makro jossa tuo koodi minkä lähetit? Vai onnistuuko se niin, että kun sheet1 c10- solun tekstiä muutetaan, niin myös viereinen kuva muuttuu?

    Kuvan nimeäminen:
    Klikkaa kuvaa ja nimiruudussa kirjoitat haluamasi nimen ja ENTER

    ei tartte nappia, kun nimi muuttuu niin hakee automaattisesti (jos soluun kirjoitetaan nimetty kuva löytyy kuvista)...

    toki voit tehdä kuvista listan ja laittaa sen kelpoissusehdoksi niin ainakin menee oikein( nimi on Case Sensitive) eli pitää olla just oikein kirjoitettu tai sitten koodissa muutat esim.
    If Ucase(Kuva2.Name) =Ucase( .Text) Then jolloin isoilla ja pienillä kirjaimilla ei ole eroa

    Keep Excelling
    @Kunde

    Äänestä

  • kunde kirjoitti:

    Kuvan nimeäminen:
    Klikkaa kuvaa ja nimiruudussa kirjoitat haluamasi nimen ja ENTER

    ei tartte nappia, kun nimi muuttuu niin hakee automaattisesti (jos soluun kirjoitetaan nimetty kuva löytyy kuvista)...

    toki voit tehdä kuvista listan ja laittaa sen kelpoissusehdoksi niin ainakin menee oikein( nimi on Case Sensitive) eli pitää olla just oikein kirjoitettu tai sitten koodissa muutat esim.
    If Ucase(Kuva2.Name) =Ucase( .Text) Then jolloin isoilla ja pienillä kirjaimilla ei ole eroa

    Keep Excelling
    @Kunde

    näin:
    Kuvien nimet ja kuvat Taul2 A ja B sarakkeella (otsikkoineen)
    Tehdään kerralla dynaaminen taulukko (hakukaavat päivittyy automaattisesti sitä mukaa kun lisäät uusia nimiä ja kuvia)
    1. Taul2 A1 otsikko "Nimi" ja B1 "Kuva" (Otsikot saat tietysti itse valita)
    - A2 kuvan nimi, B2 kuva (isonnat solun kokoa että kuva varmasti sopii solun sisälle)
    - jne...
    2. Klikkaa Lisää > Nimi > Määritä
    - "Nimet työkirjassa" anna nimi vaikka: Nimilista
    - "Viittaa" kohtaan =SIIRTYMÄ(Taul2!$A$1;1;0;LASKE.A(Taul2!$A:$A)-1;1)
    - Uusi "Nimet työkirjassa" anna nimi: Kuvat
    - "Viittaa" kohtaan =SIIRTYMÄ(Taul2!$B$2;VASTINE(Taul1!$A$2;Nimilista;0)-1;0;1;1)
    3.Klikkaa Taul1 A2 (tämän voit määrätä itse, mutta muista laittaa sama kaavaan kohtaan ...VASTINE(Taul1!$A$2....)
    - avaa Tiedot > Kelpoisuustarkistus
    - Asetukset-välilehti: "Hyväksy" --> Luettelo
    - Lähde: =Nimilista
    4. Mene Taul2 ja klikkaa 1 kuvaa ja Kopioi
    - mene Taul1 ja Liitä (kuvan voi liittää minne vain, ei tarvitse mitään määrättyä solua, eikä ole solun koosta riippuvainen, on ns. "kelluva" kuva ja kokoa voi "kahvoista" isontaa/pinentää)
    - klikkaa ylhäältä Kaavariviä kuvan ollessa vielä "valittuna" ja kirjoita sinne =Kuvat
    Klikkaa nyt A2, nuolta painamalla avautuu "Nimilista", valitse joku ja kuva vaihtuu
    Voit lisätä Taul2 A ja B sarakkeelle uusia nimiä ja kuvia, "Nimilista" ja "Kuvat" päivittyy mukana automaattisesti, ei tarvitse muuttaa kaavoihin alueita
    Voit tietenkin jättää tuon "Kelpoisuustarkistuksen" pois ja kirjoittaa suoraan A2:selle nimen, mutta muista että nimi täytyy olla aivan samaten kirjoitettu kuin se on Taul2:ssa kirjoitettu, muuten ei löydy
    Näyttää hankalalta mutta kun perehtyy niin on ihan "simppeli" juttu.

    Äänestä

  • kuvanvaihtaja kirjoitti:

    näin:
    Kuvien nimet ja kuvat Taul2 A ja B sarakkeella (otsikkoineen)
    Tehdään kerralla dynaaminen taulukko (hakukaavat päivittyy automaattisesti sitä mukaa kun lisäät uusia nimiä ja kuvia)
    1. Taul2 A1 otsikko "Nimi" ja B1 "Kuva" (Otsikot saat tietysti itse valita)
    - A2 kuvan nimi, B2 kuva (isonnat solun kokoa että kuva varmasti sopii solun sisälle)
    - jne...
    2. Klikkaa Lisää > Nimi > Määritä
    - "Nimet työkirjassa" anna nimi vaikka: Nimilista
    - "Viittaa" kohtaan =SIIRTYMÄ(Taul2!$A$1;1;0;LASKE.A(Taul2!$A:$A)-1;1)
    - Uusi "Nimet työkirjassa" anna nimi: Kuvat
    - "Viittaa" kohtaan =SIIRTYMÄ(Taul2!$B$2;VASTINE(Taul1!$A$2;Nimilista;0)-1;0;1;1)
    3.Klikkaa Taul1 A2 (tämän voit määrätä itse, mutta muista laittaa sama kaavaan kohtaan ...VASTINE(Taul1!$A$2....)
    - avaa Tiedot > Kelpoisuustarkistus
    - Asetukset-välilehti: "Hyväksy" --> Luettelo
    - Lähde: =Nimilista
    4. Mene Taul2 ja klikkaa 1 kuvaa ja Kopioi
    - mene Taul1 ja Liitä (kuvan voi liittää minne vain, ei tarvitse mitään määrättyä solua, eikä ole solun koosta riippuvainen, on ns. "kelluva" kuva ja kokoa voi "kahvoista" isontaa/pinentää)
    - klikkaa ylhäältä Kaavariviä kuvan ollessa vielä "valittuna" ja kirjoita sinne =Kuvat
    Klikkaa nyt A2, nuolta painamalla avautuu "Nimilista", valitse joku ja kuva vaihtuu
    Voit lisätä Taul2 A ja B sarakkeelle uusia nimiä ja kuvia, "Nimilista" ja "Kuvat" päivittyy mukana automaattisesti, ei tarvitse muuttaa kaavoihin alueita
    Voit tietenkin jättää tuon "Kelpoisuustarkistuksen" pois ja kirjoittaa suoraan A2:selle nimen, mutta muista että nimi täytyy olla aivan samaten kirjoitettu kuin se on Taul2:ssa kirjoitettu, muuten ei löydy
    Näyttää hankalalta mutta kun perehtyy niin on ihan "simppeli" juttu.

    Kiitoksia molemmille vastanneille. Kokeilin tuota jälkimmäistä vaihtoehtoa ja homma onnistui tuohon kohtaan 4 asti. Kun kuva 1 on kopioitu TAUL1een ja on vielä valittuna, niin kaavariville kirjoittaminen ei onnistu. Mikähän tuossa menee pieleen?

    Äänestä

  • kuvanvaihtaja kirjoitti:

    näin:
    Kuvien nimet ja kuvat Taul2 A ja B sarakkeella (otsikkoineen)
    Tehdään kerralla dynaaminen taulukko (hakukaavat päivittyy automaattisesti sitä mukaa kun lisäät uusia nimiä ja kuvia)
    1. Taul2 A1 otsikko "Nimi" ja B1 "Kuva" (Otsikot saat tietysti itse valita)
    - A2 kuvan nimi, B2 kuva (isonnat solun kokoa että kuva varmasti sopii solun sisälle)
    - jne...
    2. Klikkaa Lisää > Nimi > Määritä
    - "Nimet työkirjassa" anna nimi vaikka: Nimilista
    - "Viittaa" kohtaan =SIIRTYMÄ(Taul2!$A$1;1;0;LASKE.A(Taul2!$A:$A)-1;1)
    - Uusi "Nimet työkirjassa" anna nimi: Kuvat
    - "Viittaa" kohtaan =SIIRTYMÄ(Taul2!$B$2;VASTINE(Taul1!$A$2;Nimilista;0)-1;0;1;1)
    3.Klikkaa Taul1 A2 (tämän voit määrätä itse, mutta muista laittaa sama kaavaan kohtaan ...VASTINE(Taul1!$A$2....)
    - avaa Tiedot > Kelpoisuustarkistus
    - Asetukset-välilehti: "Hyväksy" --> Luettelo
    - Lähde: =Nimilista
    4. Mene Taul2 ja klikkaa 1 kuvaa ja Kopioi
    - mene Taul1 ja Liitä (kuvan voi liittää minne vain, ei tarvitse mitään määrättyä solua, eikä ole solun koosta riippuvainen, on ns. "kelluva" kuva ja kokoa voi "kahvoista" isontaa/pinentää)
    - klikkaa ylhäältä Kaavariviä kuvan ollessa vielä "valittuna" ja kirjoita sinne =Kuvat
    Klikkaa nyt A2, nuolta painamalla avautuu "Nimilista", valitse joku ja kuva vaihtuu
    Voit lisätä Taul2 A ja B sarakkeelle uusia nimiä ja kuvia, "Nimilista" ja "Kuvat" päivittyy mukana automaattisesti, ei tarvitse muuttaa kaavoihin alueita
    Voit tietenkin jättää tuon "Kelpoisuustarkistuksen" pois ja kirjoittaa suoraan A2:selle nimen, mutta muista että nimi täytyy olla aivan samaten kirjoitettu kuin se on Taul2:ssa kirjoitettu, muuten ei löydy
    Näyttää hankalalta mutta kun perehtyy niin on ihan "simppeli" juttu.

    puoli tuntia väsäsin 20 vuoden Excel kokemuksella...
    kumpi sitten käyttäjän kannalta helpompaa?
    lisätä kuvat mihin vaan taulukossa2, nimetä ne sopivalla nimellä ohjeiden mukaan ja kopioida Kunden koodi ja se on siinä...
    vaiko tuhertaa?
    päättäkää itse ;- )

    Äänestä

  • Ei nörtti kirjoitti:

    puoli tuntia väsäsin 20 vuoden Excel kokemuksella...
    kumpi sitten käyttäjän kannalta helpompaa?
    lisätä kuvat mihin vaan taulukossa2, nimetä ne sopivalla nimellä ohjeiden mukaan ja kopioida Kunden koodi ja se on siinä...
    vaiko tuhertaa?
    päättäkää itse ;- )

    No nyt sain toimimaan sen Kunden ohjeen / koodin avulla. Vielä kun tuon saisi niin, että tuon kuvan pystyisi kopiomaan useammalle välilehdelle tiettyihin soluihin. Eli ensimmäisellä sivulla on tuo valintatekstisolu ja kuva kopioituisi valituille välilehdille valittuun soluun.

    Äänestä

  • Excel-Turo kirjoitti:

    No nyt sain toimimaan sen Kunden ohjeen / koodin avulla. Vielä kun tuon saisi niin, että tuon kuvan pystyisi kopiomaan useammalle välilehdelle tiettyihin soluihin. Eli ensimmäisellä sivulla on tuo valintatekstisolu ja kuva kopioituisi valituille välilehdille valittuun soluun.

    helpostikin fiksattua kuten ei nörtti toteaa kopioimalla....

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Kuva As Picture
    Dim Kuva1 As Picture
    Dim Kuva2 As Picture
    Dim Kuva3 As Picture
    'jne
    On Error Resume Next
    If Not Intersect(Target, Range("C10")) Is Nothing Then
    For Each Kuva1 In Sheets("Taul1").Pictures
    If Kuva1.Top = Target.Offset(0, 1).Top And Kuva1.Left = Target.Offset(0, 1).Left Then
    Kuva.Delete
    End If
    Next Kuva1

    For Each Kuva2 In Sheets("Taul3").Pictures
    If Kuva2.Top = Target.Offset(0, 1).Top And Kuva2.Left = Target.Offset(0, 1).Left Then
    Kuva2.Delete
    End If
    Next Kuva2

    For Each Kuva3 In Sheets("Taul4").Pictures
    If Kuva3.Top = Target.Offset(0, 1).Top And Kuva3.Left = Target.Offset(0, 1).Left Then
    Kuva3.Delete
    End If
    Next Kuva3
    'jne

    With Target
    For Each Kuva In Sheets("Taul2").Pictures
    If Kuva.Name = .Text Then
    Sheets("Taul2").Shapes(Kuva.Name).Copy

    Sheets("Taul1").Activate
    ActiveSheet.Paste
    Selection.Top = .Offset(0, 1).Top
    Selection.Left = .Offset(0, 1).Left

    Sheets("Taul3").Activate
    ActiveSheet.Paste
    Selection.Top = Range("F10").Top
    Selection.Left = Range("F10").Left

    Sheets("Taul4").Activate
    ActiveSheet.Paste
    Selection.Top = Range("C4").Top
    Selection.Left = Range("C4").Left
    Exit For
    End If
    Next Kuva
    End With
    End If
    End Sub

    Äänestä

  • kunde kirjoitti:

    helpostikin fiksattua kuten ei nörtti toteaa kopioimalla....

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Kuva As Picture
    Dim Kuva1 As Picture
    Dim Kuva2 As Picture
    Dim Kuva3 As Picture
    'jne
    On Error Resume Next
    If Not Intersect(Target, Range("C10")) Is Nothing Then
    For Each Kuva1 In Sheets("Taul1").Pictures
    If Kuva1.Top = Target.Offset(0, 1).Top And Kuva1.Left = Target.Offset(0, 1).Left Then
    Kuva.Delete
    End If
    Next Kuva1

    For Each Kuva2 In Sheets("Taul3").Pictures
    If Kuva2.Top = Target.Offset(0, 1).Top And Kuva2.Left = Target.Offset(0, 1).Left Then
    Kuva2.Delete
    End If
    Next Kuva2

    For Each Kuva3 In Sheets("Taul4").Pictures
    If Kuva3.Top = Target.Offset(0, 1).Top And Kuva3.Left = Target.Offset(0, 1).Left Then
    Kuva3.Delete
    End If
    Next Kuva3
    'jne

    With Target
    For Each Kuva In Sheets("Taul2").Pictures
    If Kuva.Name = .Text Then
    Sheets("Taul2").Shapes(Kuva.Name).Copy

    Sheets("Taul1").Activate
    ActiveSheet.Paste
    Selection.Top = .Offset(0, 1).Top
    Selection.Left = .Offset(0, 1).Left

    Sheets("Taul3").Activate
    ActiveSheet.Paste
    Selection.Top = Range("F10").Top
    Selection.Left = Range("F10").Left

    Sheets("Taul4").Activate
    ActiveSheet.Paste
    Selection.Top = Range("C4").Top
    Selection.Left = Range("C4").Left
    Exit For
    End If
    Next Kuva
    End With
    End If
    End Sub

    kirjoittajalta. Epäilin ensin että kaavoihin oli tullut joku "painovirhepaholainen"
    ja testasin ne suoraan tuosta kopioimalla, kyllä ne pelasi.
    Ensin ei meinannut vaihtaa kuvaa ollenkaan, mutta sitten "otin" hiirellä kiinni tuosta A2 ja siirsin sen eri paikkaan, niin heti alkoi pelaamaan. En tiedä mikä siinä oli.
    Käytössä Excel 2003

    Äänestä

  • kuvanvaihtaja kirjoitti:

    kirjoittajalta. Epäilin ensin että kaavoihin oli tullut joku "painovirhepaholainen"
    ja testasin ne suoraan tuosta kopioimalla, kyllä ne pelasi.
    Ensin ei meinannut vaihtaa kuvaa ollenkaan, mutta sitten "otin" hiirellä kiinni tuosta A2 ja siirsin sen eri paikkaan, niin heti alkoi pelaamaan. En tiedä mikä siinä oli.
    Käytössä Excel 2003

    mainitsematta tuo sivu josta itse aikanaan sain ohjeet tuon "tempun" tekemiseen.
    http://www.jkp-ads.com/articles/ShowPicture00.asp

    Äänestä

  • kuvanvaihtaja kirjoitti:

    mainitsematta tuo sivu josta itse aikanaan sain ohjeet tuon "tempun" tekemiseen.
    http://www.jkp-ads.com/articles/ShowPicture00.asp

    Sain toimimaan kuvien hakemisen molemmilla tavoilla. Kiitoksia neuvoista.

    Äänestä

Kommentoi aloitusta


Excel-Turo kirjoitti:

Osaisiko kukaan antaa neuvoja seuraavaan ongelmaan. Excel-taulukossa pitäisi saada soluun kopioitua kuva joka vastaa toisen solun tekstiä. Eli kun ensimmäiseen soluun kirjoitaan teksti, niin viereeseen soluun tulee tätä tekstiä vastaava kuva. Nuo kuvat on liitetty Exceliin toiselle välilehdelle, nyt ne vaan pitäisi saada näkymään tekstin vieressä.

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