Kehäviittaus vaivaa

Taulukossa on ristiinlaskentaa kaavoissa josta seuraa kehäviittaus-virheilmoitus. Siitä pääsee eroon kun sallii iteratiivisen laskennan.
Tyhjällä taulukolla toimiikin homma hyvin, mutta jos paljon muuttelee laskentaa, jää joidenkin solujen kaavoihin jumiin aikaisempia lukemia.
Pitää nollata tilanne aina välillä avaamalla tyhjä talukko uudelleen. Jos kaavat nollaa poistamalla "=" merkin alusta, ja sitten palauttaa "=" merkin, se myös nollaa tilanteen.
Parempi olisi joku nollauspainike jota painamalla taulukon kaavat tyhjäytyisivät.
Voisi tietenkin nauhoittaa pitkän makron joka tekee tuon kaikkien kaavojen nollauksen ja aktivoinnin, vai onko parempikin tapa?
111810
Äänestä

Muut lukivat myös

Vastaukset 11

Vanhimmat

Kyllä makro joutaa tekemään pitemmänkin kaavan kautta.

Äänestä
  • Makrot on turvallisuusriski!

    Äänestä

  • Anonyymi00003 kirjoitti:

    Makrot on turvallisuusriski!

    En oikein ymmärrä tätä makrojen pelkoa. Kun tietää taulukon alkuperän turvalliseksi, ei makrojen käyttämisessä mitään vaaraa ole. Varman päälle pelaa silloin kun asettaa makrot sallituiksi vain varmojen taulukoiden käytön ajaksi, muutoin pitää makrot kiellettyinä.

    Äänestä

  • Anonyymi00006 kirjoitti:

    En oikein ymmärrä tätä makrojen pelkoa. Kun tietää taulukon alkuperän turvalliseksi, ei makrojen käyttämisessä mitään vaaraa ole. Varman päälle pelaa silloin kun asettaa makrot sallituiksi vain varmojen taulukoiden käytön ajaksi, muutoin pitää makrot kiellettyinä.

    Makrot saastuttaa koneen.

    Äänestä

Messukeskuksessa Helsingissä 16. marraskuuta järjestetty Apotti-tukihenkilöiden koulutuspäivä on herättänyt runsaasti keskustelua ja huomiota. Aikaisemmin julkaistussa Helsingin Sanomien uutisessa tapahtumaan osallistunut lääkäri kritisoi tapahtuman muistuttaneen mainostilaisuutta.

Hänen mukaansa osa paikalla olleista oli kuvaillut koulutusta ”herätyskokoukseksi”.

Tilaa tästä Tivin maksuton uutiskirje – Kokoamme it-alan kiinnostavimmat puheenaiheet sähköpostiisi joka päivä.
Myöhemmin julkisuuteen on ilmestynyt myös tapahtumassa esitetty Apotti-reggae, jota soitettiin tapahtumassa. Kappale levisi nopeasti sosiaalisessa mediassa. Myöhemmin se on saanut lukuisia mukaelmia sekä cover-versioita.

Äänestä

Tämä muuttaa kaavan heittomerkillä tekstiksi ja takaisin. Tekstiksi merkityt luvut pysyvät ennallaan.

Sub painike()
    For Each s In ActiveSheet.UsedRange
        k = s.Formula
        If (s.PrefixCharacter <> "'" And Left(k, 1) = "=") Or Left(k, 1) <> "=" Then
            k = "'" & k
        End If
        s.Formula = k
    Next s
End Sub

Äänestä
  • On tämä ainakin lyhyempi kuin se nauhoitettu makro, mutta hitaampi kun näköjään käy kokotaulukon lävitse. Ja jättää niitä hipsuja kaikkiin sellaisiin soluihin joissa ei ole "=" merkkiä alussa. Kuten myös lukujen desimaalipilkku muuttuu pisteeksi.
    Saako tämän makron toimimaan vain annetulla alueella, ja tekisi palautuksen heti perään ettei tarvitse painiketta painaa kahteen kertaan?

    Äänestä

  • Anonyymi00009 kirjoitti:

    On tämä ainakin lyhyempi kuin se nauhoitettu makro, mutta hitaampi kun näköjään käy kokotaulukon lävitse. Ja jättää niitä hipsuja kaikkiin sellaisiin soluihin joissa ei ole "=" merkkiä alussa. Kuten myös lukujen desimaalipilkku muuttuu pisteeksi.
    Saako tämän makron toimimaan vain annetulla alueella, ja tekisi palautuksen heti perään ettei tarvitse painiketta painaa kahteen kertaan?

    Tämä vaikuttaa vain maalattuna olevaan alueeseen, eikä muuta desimaalipilkkuja:

    Sub painike()
        For Each s In Selection
            k = s.Formula
            If (s.PrefixCharacter <> "'" And Left(k, 1) = "=") Then
                k = "'" & k
            Else
                If WorksheetFunction.IsNumber(k) Then k = s.Value
            End If
            s.Formula = k
        Next s
    End Sub

    Äänestä

  • Anonyymi00011 kirjoitti:

    Tämä vaikuttaa vain maalattuna olevaan alueeseen, eikä muuta desimaalipilkkuja:

    Sub painike()
        For Each s In Selection
            k = s.Formula
            If (s.PrefixCharacter <> "'" And Left(k, 1) = "=") Then
                k = "'" & k
            Else
                If WorksheetFunction.IsNumber(k) Then k = s.Value
            End If
            s.Formula = k
        Next s
    End Sub

    Kun nyt edes toimisi jotenkin.

    Äänestä

  • Anonyymi00011 kirjoitti:

    Tämä vaikuttaa vain maalattuna olevaan alueeseen, eikä muuta desimaalipilkkuja:

    Sub painike()
        For Each s In Selection
            k = s.Formula
            If (s.PrefixCharacter <> "'" And Left(k, 1) = "=") Then
                k = "'" & k
            Else
                If WorksheetFunction.IsNumber(k) Then k = s.Value
            End If
            s.Formula = k
        Next s
    End Sub

    Nauhoitin sitten nollausnappiin makron joka maalaa kaava-alueen ja ajaa kaksi kertaa peräkkäin tuon "painike" makron.

    Äänestä

"Voisi tietenkin nauhoittaa pitkän makron joka tekee tuon kaikkien kaavojen nollauksen ja aktivoinnin, vai onko parempikin tapa?"

On reilusti parempi, ja sen tarjoaa taulukkolaskenta ohjelma itse. Valitun alueen osittainen tyhjennys hiirivalikosta valiten sopiva.

Poista kaikki
Poista teksti
Poista päivämäärä ja kellonaika
Poista huomautukset
Poista objektit
Poista numerot
Poista kaava
Poista muotoilu

Äänestä

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

Kommentoi aloitusta


Anonyymi-ap kirjoitti:

Taulukossa on ristiinlaskentaa kaavoissa josta seuraa kehäviittaus-virheilmoitus. Siitä pääsee eroon kun sallii iteratiivisen laskennan.
Tyhjällä taulukolla toimiikin homma hyvin, mutta jos paljon muuttelee laskentaa, jää joidenkin solujen kaavoihin jumiin aikaisempia lukemia.
Pitää nollata tilanne aina välillä avaamalla tyhjä talukko uudelleen. Jos kaavat nollaa poistamalla "=" merkin alusta, ja sitten palauttaa "=" merkin, se myös nollaa tilanteen.
Parempi olisi joku nollauspainike jota painamalla taulukon kaavat tyhjäytyisivät.
Voisi tietenkin nauhoittaa pitkän makron joka tekee tuon kaikkien kaavojen nollauksen ja aktivoinnin, vai onko parempikin tapa?

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