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

499

    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. Olet toisen kanssa

      ...ja minä yhä vain sinua kaipaan. Tiedän ettet ole onnellinen siellä. Älä hukkaa aitoa onnea ja rakkautta hukkaan vain
      Ikävä
      194
      1479
    2. Näytit taas lihoneen.

      Tynnyri se vaan kasvaa.
      Ikävä
      29
      1363
    3. Kuka teistä on paras nainen

      A-nainen? J-nainen? K-nainen? M-nainen? S-nainen? Vai kenties joku muu...? 😊
      Ikävä
      61
      1249
    4. Onko jotain mistä

      Olet huolissasi kaivattusi suhteen?
      Ikävä
      78
      1194
    5. Immu otti pataan

      Olen pettynyt, hänen piti viedä Stagalaa kuin litran mittaa - mutta kuinka kävikään? Voi hemmetti sentään.... Ääääääh!
      Kotimaiset julkkisjuorut
      69
      1177
    6. Jos me joskus nähtäisiin

      niin ei kai sen vielä tarvitsisi merkitä sen enempää? Ja voihan olla ettei kumpikaan enää siinä vaiheessa edes haluaisi
      Ikävä
      103
      1163
    7. Osaako joku selittää tätä

      Että miksi mulle on joka toinen ventovieras ihminen tyly ainakin ilmeillään ja eleillään?
      Ikävä
      75
      1162
    8. Koska vietät

      Yhteisen yön kaivattusi kanssa?
      Ikävä
      54
      988
    9. Lesken uusi

      Onko totta että puolangan kunnalla töissä ollut mies joka kuoli niin sen vaimolla jo uusi lohduttaja. Pitäneekö paikkans
      Puolanka
      18
      902
    10. Persun suusta:"Köyhät on luusereita ja ansaitsevat köyhyyden"

      Ministeri Juuston apulainen näin uhoaa. Mitäs siinä. Kyllä on jo tiedetty muutaman vuoden hallitustyön pohjalta että per
      Lieksa
      174
      844
    Aihe