Vuoden pahin

Saukki

Miten ihmeessä saan 4 riviä ylemmässä solussa olevan viittauksen (keskellä kaavaa ja viittaa toiselle sheetille) haettua keskelle uutta kaavaa.

Eli E21 solussa on on kaava:

=SIIRTYMÄ(Ruokapäiväkirja!$D$27;325;0;1;1)

ja haluaisin saada siitä solun E26 kaavaan viittauksen $D$352 (D27:stä 325 alas) alla esitetyllä tavalla

=SIIRTYMÄ(Ruokapäiväkirja!$D$352;25;0;1;1)

Mitä ihmettä pitäisi tehdä, jotta homma luonnistuisi automaattisesti. En tiedä pystyykö Excelillä hakemaan toisessa solussa olevia kaavoja tai niiden osia (suorat arvot ja kaavojen tuloksethan siirtyvät helposti), mutta jos joku tietää niin NYT SAA PÄTEÄ!!!

1

547

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • kuten arvelitkin ei Excelillä voi hakea toisesta solusta pelkkiä kaavoja- ainostaan kaavojen tuloksia.
      VBA:lla asia on kuitenkin todella helppo tehdä. Pari tekstifunktiota ja tulosten yhdistäminen...

      Tein nyt oman käyttäjän makron - liitä se moduuliin. Siihen soluun mihin haluat kaavan kopioituvan kirjoitat

      =TeeKaava(E21;25)
      missä Solu=E21 ja Siirtymä=25 (esimerkkisi mukaan), eli Solu on se solu, josta kaava kopioidaan(E21) ja Siirtymä(25) on siirtymä uudesta kaavasolusta. Kaava toimii vaikka vaihdat solunosoitetta esim.
      Ruokapäiväkirja!D27--->Päiväkirja!D27

      :-)

      moduuliin...

      Function TeeKaava(Solu As Range, Siirtymä As Integer) As String
      Dim teksti As String
      Dim eka As Integer
      Dim toka As Integer
      Dim osoite As String
      Dim osoite1 As String
      Dim osoite2 As String
      Dim siirto As Integer
      On Error Resume Next
      Application.Volatile
      teksti = Solu.FormulaLocal

      eka = InStr(1, teksti, "!")
      toka = InStr(1, teksti, ";")
      'alkuperäinen offsetsolu
      osoite1 = Mid(teksti, eka 1, toka - eka - 1)

      eka = toka 1
      toka = InStr(eka, teksti, ";")
      siirto = Mid(teksti, eka, toka - eka)
      'uusi offsetsolu
      osoite = Range(osoite1).Offset(siirto, 0).Address

      eka = InStr(1, teksti, "(")
      toka = InStr(1, teksti, "!")
      'alkuperäinen offsetsolu
      osoite2 = Mid(teksti, eka 1, toka - eka)

      TeeKaava = "=SIIRTYMÄ(" & osoite2 & osoite & ";" & Siirtymä & ";0;1;1)"
      End Function

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Näin Enter-napilla tehdään miljardi euroa - Helsingissä

      "Ei se nyt niin kovin ihmeelliseltä näytä. Tavallinen nappi, musta muovinpala, joka kököttää parikymppiä maksavan mustan
      Maailman menoa
      9
      4857
    2. Eipä tunnu se "pedofilia" huuto kiinnostavan

      Lähinnä se sekohäirikkö ressukka joutuu itse vastaileen itselleen, mitään näkyvyyttä ei saa, palstalla ylipäätään on hyv
      Maailman menoa
      63
      4457
    3. Minulla ei ole ketään muita

      Enkä halua ketään muita kuin sinut.
      Ikävä
      44
      3759
    4. 4,5 promillee

      Aika rajut lukemat joku eilen puhaltanut.
      Suomussalmi
      19
      3422
    5. Jätä minut rauhaan

      En pidä sinusta. Lopeta seuraaminen. Älä tulkitse keskustelutaitoa tai ystävällisyyttä miksikään sellaiseksi mitä ne eiv
      Ikävä
      34
      3318
    6. Ben Z: "SDP ei ole ollut 50 vuoteen näin huolissaan velasta"

      "– Olen ollut eduskunnassa noin 50 vuotta, eikä SDP ole koskaan ollut niin huolissaan velasta kuin nyt. Se on tietysti h
      Maailman menoa
      44
      3173
    7. No kyllä te luuserit voitte tehdä mitä vaan keskenänne, sitä en ymmärrä miksi pelaat,nainen

      Pisteesi silmissäni, edes ystävätasolla tippui jo tuhannella, kun sain selville pelailusi, olet toisen kanssa, vaikka ol
      Ikävä
      45
      3100
    8. Harmittaako sinua yhtään?

      Tuntuuko pahalta ollenkaan?
      Ikävä
      51
      2780
    9. Voiku saisi sen sun

      Rakkauden kokea. Tykkään susta niin paljon edelleen.
      Ikävä
      42
      2515
    10. Olitpa ikävän

      Kylmä eilen. Miksi ihmeessä?
      Ikävä
      45
      2269
    Aihe