Ainutkertaisten arvojen laskenta suodatetuista riveistä

Anonyymi-ap

Sarakkeessa A on Asioita ja sarakkeessa B on niille Arvoja, alkaen riviltä 2.

Rivi 1 on otsikkorivi (Asiat, Arvot).

Haluan soluun C1 uniikkien Asioiden määrän.

Saan sen kaavalla =LASKE.A(AINUTKERTAISET.ARVOT(A2:Axxxx)), missä xxxx on riittävä.

Laitan sarakkeille A ja B suodatuksen päälle.

Miten saan tuon kaavan toimimaan, kun suodatan sarakkeesta B näkyviin tietyt arvot? Eli uniikkien Asioiden määrä suodatetuilla Arvoilla.

Yritin tyyliin =VÄLISUMMA(3;AINUTKERTAISET.ARVOT(A2:Axxxx)), mutta ilmoittaa kaavan virheelliseksi.

36

722

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Tämä funktio ottaa huomioon myös pois suodatetutut

      Function uniikit(rng As Range)
      nc = rng.Count
      ReDim asiat(nc)
      uniikit = 0
      For Each c In rng
      sama = False
      For i = 1 To uniikit
      If c = asiat(i) Then
      sama = True
      Exit For
      End If
      Next i
      If Not sama Then
      uniikit = uniikit + 1
      asiat(uniikit) = c
      End If
      Next c
      End Function

      • Anonyymi

        Tuohan on loista ohjelma, pistänkin heti testiin.


      • Kiitos!

        Näin vähän arvelinkin, että pitää itse koodata.

        Rivi uniikit = uniikit 1 pitänee olla uniikit = uniikit + 1

        Mutta ei toimi, palauttaa aina saman arvon eli suodattamattomien uniikkien määrän ikään kuin sarakkeessa Arvot ei olisi mitään suodatusta.


      • JartsaPartsa kirjoitti:

        Kiitos!

        Näin vähän arvelinkin, että pitää itse koodata.

        Rivi uniikit = uniikit 1 pitänee olla uniikit = uniikit 1

        Mutta ei toimi, palauttaa aina saman arvon eli suodattamattomien uniikkien määrän ikään kuin sarakkeessa Arvot ei olisi mitään suodatusta.

        kas, se plus-merkki jää pois, heh
        eli pitää olla uniikit = uniikit "plus" 1


      • Anonyymi
        JartsaPartsa kirjoitti:

        kas, se plus-merkki jää pois, heh
        eli pitää olla uniikit = uniikit "plus" 1

        Harmillinen kiusa tuo plus-merkki joka ei viesteissä näy.


      • Anonyymi kirjoitti:

        Harmillinen kiusa tuo plus-merkki joka ei viesteissä näy.

        Jep.

        Mutta mitenkähän tuon funktion saisi korjattua siten, että ei juokse läpi alkuperäistä rangea vaan ne, jotka ovat suodatetuilla riveillä...?


      • JartsaPartsa kirjoitti:

        Jep.

        Mutta mitenkähän tuon funktion saisi korjattua siten, että ei juokse läpi alkuperäistä rangea vaan ne, jotka ovat suodatetuilla riveillä...?

        Pistin messageboxin rivin nc = rng.Count jälkeen ja filtteröinnistä riippumatta nc saa aina arvoksi rivien kokonaismäärän...


      • Anonyymi
        JartsaPartsa kirjoitti:

        Pistin messageboxin rivin nc = rng.Count jälkeen ja filtteröinnistä riippumatta nc saa aina arvoksi rivien kokonaismäärän...

        Jokaista arvoa on verrattava jokaiseen muuhun arvoon.


      • Anonyymi
        Anonyymi kirjoitti:

        Jokaista arvoa on verrattava jokaiseen muuhun arvoon.

        Ei, vaan tässä tapauksessa jokaista suodatuksen jälkeen näkyvää arvoa on verrattava jokaiseen suodatuksen jälkeen näkyvään arvoon, jotta suodatuksen jälkeen näkyvistä arvoista saisi uniikkien määrän. Eli sarakkeessa Asiat näkyvistä arvoista uniikkien määrä, kun saraketta Arvot on suodatettu milloin milläkin arvoilla.


      • Anonyymi
        Anonyymi kirjoitti:

        Ei, vaan tässä tapauksessa jokaista suodatuksen jälkeen näkyvää arvoa on verrattava jokaiseen suodatuksen jälkeen näkyvään arvoon, jotta suodatuksen jälkeen näkyvistä arvoista saisi uniikkien määrän. Eli sarakkeessa Asiat näkyvistä arvoista uniikkien määrä, kun saraketta Arvot on suodatettu milloin milläkin arvoilla.

        Joo, juuri noin.


      • Anonyymi
        Anonyymi kirjoitti:

        Harmillinen kiusa tuo plus-merkki joka ei viesteissä näy.

        Muistakaa aina laittaa erikoismerkeistä vaikkapa ∔ siihen plussalle kuuluvaan kohtaan. Erikoismerkki löytyy valikosta joka avautuu näppäinkombolla Win ∔ piste.


      • Anonyymi
        JartsaPartsa kirjoitti:

        Jep.

        Mutta mitenkähän tuon funktion saisi korjattua siten, että ei juokse läpi alkuperäistä rangea vaan ne, jotka ovat suodatetuilla riveillä...?

        Tämä funktio toimii entiseen tapaan ja laskee uniikit soluista. Jos annetaan toinen parametri ja se on False, vain näkyvät solut huomioidaan.
        Suomi24 poistanee plus-merkin, joten rivillä uniikit = uniikit + 1 ennen 1 on plus

        Function uniikit(rng As Range, Optional f)
        nc = rng.Count
        ReDim asiat(nc)
        If IsMissing(f) Then f = True
        uniikit = 0
        For Each c In rng
        sama = False
        For i = 1 To uniikit
        If c = asiat(i) Then
        sama = True
        Exit For
        End If
        Next i
        If Not sama And (f Or Not (c.EntireRow.Hidden Or c.EntireColumn.Hidden)) Then
        uniikit = uniikit + 1
        asiat(uniikit) = c
        End If
        Next c
        End Function


      • Anonyymi
        Anonyymi kirjoitti:

        Muistakaa aina laittaa erikoismerkeistä vaikkapa ∔ siihen plussalle kuuluvaan kohtaan. Erikoismerkki löytyy valikosta joka avautuu näppäinkombolla Win ∔ piste.

        Suomi24:n plussa-merkki suodattuu pois vain ruudulla näytettäessä.

        Se tallentuu kyllä tietokantaan ja tulee esiin jos keskustelu luetaan kolmannen osapuolen ohjelmalla

        https://i.ibb.co/WywqDXv/suomi24-plussa.jpg

        kuten kuvasta näkyy.


      • Anonyymi kirjoitti:

        Tämä funktio toimii entiseen tapaan ja laskee uniikit soluista. Jos annetaan toinen parametri ja se on False, vain näkyvät solut huomioidaan.
        Suomi24 poistanee plus-merkin, joten rivillä uniikit = uniikit 1 ennen 1 on plus

        Function uniikit(rng As Range, Optional f)
        nc = rng.Count
        ReDim asiat(nc)
        If IsMissing(f) Then f = True
        uniikit = 0
        For Each c In rng
        sama = False
        For i = 1 To uniikit
        If c = asiat(i) Then
        sama = True
        Exit For
        End If
        Next i
        If Not sama And (f Or Not (c.EntireRow.Hidden Or c.EntireColumn.Hidden)) Then
        uniikit = uniikit 1
        asiat(uniikit) = c
        End If
        Next c
        End Function

        Turhaa luuppaamista.
        Oletetaan , että dataa olisi vaikka 1000 riviä ja suodatuksen tuloksena tulisi 10 riviä, jolloin ylläoleva koodi tekee 990 turhaa ja ylimmääräistä luuppia, toisin kuin alleoleva koodi tekee vain tarvittavat10 luuppia...

        Sub LaskeUniikit()
        Dim Solu As Range
        Dim vika As Long
        vika = Range("A65536").End(xlUp).Row
        Dim uniikit As New Collection
        Application.Volatile
        On Error Resume Next

        For Each Solu In Range(Range("A2:A" & vika).SpecialCells(xlVisible).Address)
        uniikit.Add Solu, CStr(Solu)
        Next
        Range("C1") = uniikit.Count
        End Sub

        Keep EXCELing
        @Kunde


      • Anonyymi
        Anonyymi kirjoitti:

        Tämä funktio toimii entiseen tapaan ja laskee uniikit soluista. Jos annetaan toinen parametri ja se on False, vain näkyvät solut huomioidaan.
        Suomi24 poistanee plus-merkin, joten rivillä uniikit = uniikit 1 ennen 1 on plus

        Function uniikit(rng As Range, Optional f)
        nc = rng.Count
        ReDim asiat(nc)
        If IsMissing(f) Then f = True
        uniikit = 0
        For Each c In rng
        sama = False
        For i = 1 To uniikit
        If c = asiat(i) Then
        sama = True
        Exit For
        End If
        Next i
        If Not sama And (f Or Not (c.EntireRow.Hidden Or c.EntireColumn.Hidden)) Then
        uniikit = uniikit 1
        asiat(uniikit) = c
        End If
        Next c
        End Function

        Kiitos todella paljon!!!!!

        Tämä toimii.

        Uniikkien arvojen laskentaanhan voi käyttää valmiita LASKE.A ja AINUTKERTAISET.ARVOT -funktioita, mutta LASKE.A ei toimi VÄLISUMMA-funktion kanssa, jos LASKE.A:n parametrina on AINUTKERTAISET.ARVOT-funktio, vaikka ko. pari toimii sellaisenaan. Tämä on mielestäni virhe tai ainakin selvä puute excelissä!

        Mutta todella mahtavaa, että autoit!

        I owe you one!


      • Anonyymi
        Anonyymi kirjoitti:

        Kiitos todella paljon!!!!!

        Tämä toimii.

        Uniikkien arvojen laskentaanhan voi käyttää valmiita LASKE.A ja AINUTKERTAISET.ARVOT -funktioita, mutta LASKE.A ei toimi VÄLISUMMA-funktion kanssa, jos LASKE.A:n parametrina on AINUTKERTAISET.ARVOT-funktio, vaikka ko. pari toimii sellaisenaan. Tämä on mielestäni virhe tai ainakin selvä puute excelissä!

        Mutta todella mahtavaa, että autoit!

        I owe you one!

        Eihän tuo toimi, mitä ihmettä sinä mesot sen kanssa!


      • Anonyymi
        Anonyymi kirjoitti:

        Suomi24:n plussa-merkki suodattuu pois vain ruudulla näytettäessä.

        Se tallentuu kyllä tietokantaan ja tulee esiin jos keskustelu luetaan kolmannen osapuolen ohjelmalla

        https://i.ibb.co/WywqDXv/suomi24-plussa.jpg

        kuten kuvasta näkyy.

        Mikä kolmannen osapuolen ohjelma?


      • Anonyymi
        kunde kirjoitti:

        Turhaa luuppaamista.
        Oletetaan , että dataa olisi vaikka 1000 riviä ja suodatuksen tuloksena tulisi 10 riviä, jolloin ylläoleva koodi tekee 990 turhaa ja ylimmääräistä luuppia, toisin kuin alleoleva koodi tekee vain tarvittavat10 luuppia...

        Sub LaskeUniikit()
        Dim Solu As Range
        Dim vika As Long
        vika = Range("A65536").End(xlUp).Row
        Dim uniikit As New Collection
        Application.Volatile
        On Error Resume Next

        For Each Solu In Range(Range("A2:A" & vika).SpecialCells(xlVisible).Address)
        uniikit.Add Solu, CStr(Solu)
        Next
        Range("C1") = uniikit.Count
        End Sub

        Keep EXCELing
        @Kunde

        Kiitos Kunde!

        Tuntuu tämäkin toimivan, testaan massan kanssa (n. 700.000 riviä) huomenna, niin näen, kuinka kauan tuon toisen suoritus kestää.

        Se toinen ratkaisu on siinä mielessä yleiskäyttöisempi, että se on funktio eikä tee oletuksia, esim. että Asiat ovat juuri sarakkeessa A ja että rivejä on maksimissaan joku määrä ja että vastaus pitää olla juuri tietyssä solussa (ne olivat vain tuossa kysymyksen asettelussani noin).

        Tarve on soveltaa ratkaisua tuohon massaan siten, että suodatus tehdään milloin milläkin sarakkeilla (sarakkeita yhteensä n. 100 ja kerrallaan suodatetaan n. 10-20 sarakkeen arvoilla) ja uniikkien määrä lasketaan n. 10 sarakkeesta, jotka eivät ole noita suodatukseen käytettäviä.

        EXCELIing is fun!


      • Anonyymi
        kunde kirjoitti:

        Turhaa luuppaamista.
        Oletetaan , että dataa olisi vaikka 1000 riviä ja suodatuksen tuloksena tulisi 10 riviä, jolloin ylläoleva koodi tekee 990 turhaa ja ylimmääräistä luuppia, toisin kuin alleoleva koodi tekee vain tarvittavat10 luuppia...

        Sub LaskeUniikit()
        Dim Solu As Range
        Dim vika As Long
        vika = Range("A65536").End(xlUp).Row
        Dim uniikit As New Collection
        Application.Volatile
        On Error Resume Next

        For Each Solu In Range(Range("A2:A" & vika).SpecialCells(xlVisible).Address)
        uniikit.Add Solu, CStr(Solu)
        Next
        Range("C1") = uniikit.Count
        End Sub

        Keep EXCELing
        @Kunde

        Function uniikit(rng As Range, Optional f)
        Dim keruu As New Collection
        If IsMissing(f) Then f = True
        On Error Resume Next
        For Each c In rng
        If (f Or Not (c.EntireRow.Hidden Or c.EntireColumn.Hidden)) Then
        keruu.Add c, CStr(c)
        End If
        Next
        uniikit = keruu.Count
        End Function


      • Anonyymi kirjoitti:

        Kiitos Kunde!

        Tuntuu tämäkin toimivan, testaan massan kanssa (n. 700.000 riviä) huomenna, niin näen, kuinka kauan tuon toisen suoritus kestää.

        Se toinen ratkaisu on siinä mielessä yleiskäyttöisempi, että se on funktio eikä tee oletuksia, esim. että Asiat ovat juuri sarakkeessa A ja että rivejä on maksimissaan joku määrä ja että vastaus pitää olla juuri tietyssä solussa (ne olivat vain tuossa kysymyksen asettelussani noin).

        Tarve on soveltaa ratkaisua tuohon massaan siten, että suodatus tehdään milloin milläkin sarakkeilla (sarakkeita yhteensä n. 100 ja kerrallaan suodatetaan n. 10-20 sarakkeen arvoilla) ja uniikkien määrä lasketaan n. 10 sarakkeesta, jotka eivät ole noita suodatukseen käytettäviä.

        EXCELIing is fun!

        Specialcellsillä on joku solumäärärajoitus, mutta en nyt muista kuinka iso se on. Kerran se on tullut vastaan ohjelmassani.
        Tee tuosta funktio-kaikkitarvittavat pelimerkithän siinä on.


      • Anonyymi
        Anonyymi kirjoitti:

        Function uniikit(rng As Range, Optional f)
        Dim keruu As New Collection
        If IsMissing(f) Then f = True
        On Error Resume Next
        For Each c In rng
        If (f Or Not (c.EntireRow.Hidden Or c.EntireColumn.Hidden)) Then
        keruu.Add c, CStr(c)
        End If
        Next
        uniikit = keruu.Count
        End Function

        Virheenkäsittely määritellään näin:

        On Error Resume Next
        . . .
        . . .
        Resume Next

        EI NOIN KUN OLET SEN TEHNYT


      • Anonyymi
        Anonyymi kirjoitti:

        Mikä kolmannen osapuolen ohjelma?

        Mikäli sinulla on PHP-tulkki laitteessasi, niin voit ladata ja ajaa selaimessa "kolmannen osapuolen" viestilukijan osoitteesta

        https://pastebin.com/06u4LMzc

        Ohjelmaan kopioidaan halutun ketjun url-osoite ja viestit näkyy siellä ilman mainoksia. Ja myös ne plus-merkit kuten edellä jo mainittiin. Sitä kautta on myös helppo tallentaa koko keskusteluketju jos sellaiseen on tarvetta.


      • Anonyymi
        Anonyymi kirjoitti:

        Virheenkäsittely määritellään näin:

        On Error Resume Next
        . . .
        . . .
        Resume Next

        EI NOIN KUN OLET SEN TEHNYT

        Ihan oikein se on. Tässä ei ole varsinaista virheen käsittelyä, joten ehdottamasi lisärivi on turha. On Error Resume Next jättää vain virheen huomiotta, ei anna virheilmoitusta, vaan jatkaa seuraavalle riville. Kunden ratkaisussa Collection kasvaa, kun sinne lisätään uusi asia. Jos yritetään lisätä jotain, mitä siellä jo on, tulisi normaalisti virhe, mutta nyt sen yli vain hypätään. Uniikkien tapausten määrä nähdään Collection'in koosta.

        Jos virhe vaatii toimenpiteitä, se pitää käsitellä erikseen On Error Goto virhe. Täältä palattaisiin virheen aiheuttanutta seuraavalle rivile käskyllä Resume Next


      • Anonyymi
        kunde kirjoitti:

        Turhaa luuppaamista.
        Oletetaan , että dataa olisi vaikka 1000 riviä ja suodatuksen tuloksena tulisi 10 riviä, jolloin ylläoleva koodi tekee 990 turhaa ja ylimmääräistä luuppia, toisin kuin alleoleva koodi tekee vain tarvittavat10 luuppia...

        Sub LaskeUniikit()
        Dim Solu As Range
        Dim vika As Long
        vika = Range("A65536").End(xlUp).Row
        Dim uniikit As New Collection
        Application.Volatile
        On Error Resume Next

        For Each Solu In Range(Range("A2:A" & vika).SpecialCells(xlVisible).Address)
        uniikit.Add Solu, CStr(Solu)
        Next
        Range("C1") = uniikit.Count
        End Sub

        Keep EXCELing
        @Kunde

        Toimimaton räpellys, ilkeätkin esitellä sitä toimivana.


      • Anonyymi
        Anonyymi kirjoitti:

        Mikäli sinulla on PHP-tulkki laitteessasi, niin voit ladata ja ajaa selaimessa "kolmannen osapuolen" viestilukijan osoitteesta

        https://pastebin.com/06u4LMzc

        Ohjelmaan kopioidaan halutun ketjun url-osoite ja viestit näkyy siellä ilman mainoksia. Ja myös ne plus-merkit kuten edellä jo mainittiin. Sitä kautta on myös helppo tallentaa koko keskusteluketju jos sellaiseen on tarvetta.

        Esimerkki tämän ketjun

        https://www.docdroid.net/tt0mjAf/keskustelu-17792375-pdf

        tallennetusta PDF -tiedostosta.


      • Anonyymi
        Anonyymi kirjoitti:

        Harmillinen kiusa tuo plus-merkki joka ei viesteissä näy.

        Käyttäkää tätä leveää plussaa: ++++++++
        Ottaa siitä talteen.
        Se ei tosin toimi kaavoissa plussana, eli pitää vaihtaa normaaliin plussaan jos kopioi viestistä koodia suoraan exceliin.


      • Anonyymi kirjoitti:

        Eihän tuo toimi, mitä ihmettä sinä mesot sen kanssa!

        Kyllä se minulla toimii; ainakin muutaman kymmenen rivin testiaineistolla.


      • Anonyymi kirjoitti:

        Toimimaton räpellys, ilkeätkin esitellä sitä toimivana.

        Tämä makrokin toimii testiaineistollani ihan ok!


      • Anonyymi kirjoitti:

        Function uniikit(rng As Range, Optional f)
        Dim keruu As New Collection
        If IsMissing(f) Then f = True
        On Error Resume Next
        For Each c In rng
        If (f Or Not (c.EntireRow.Hidden Or c.EntireColumn.Hidden)) Then
        keruu.Add c, CStr(c)
        End If
        Next
        uniikit = keruu.Count
        End Function

        Toimii tämäkin!


      • Anonyymi
        Anonyymi kirjoitti:

        Ihan oikein se on. Tässä ei ole varsinaista virheen käsittelyä, joten ehdottamasi lisärivi on turha. On Error Resume Next jättää vain virheen huomiotta, ei anna virheilmoitusta, vaan jatkaa seuraavalle riville. Kunden ratkaisussa Collection kasvaa, kun sinne lisätään uusi asia. Jos yritetään lisätä jotain, mitä siellä jo on, tulisi normaalisti virhe, mutta nyt sen yli vain hypätään. Uniikkien tapausten määrä nähdään Collection'in koosta.

        Jos virhe vaatii toimenpiteitä, se pitää käsitellä erikseen On Error Goto virhe. Täältä palattaisiin virheen aiheuttanutta seuraavalle rivile käskyllä Resume Next

        Haista paska, minä en ole ehdottanut mitään lisä rivejä, eikä tuota virheenkäsittelyä ohjelmaan sijoiteta siksi että se jättää virheen muomioimatta, vaan juuri päin vastoin.

        Voi vittu miten typeriä aivopieruja.

        VIRHEEN KÄSITTELYSSÄ tavoitellaan nimen omaan hallittua virheen käsittelyä ja virheen aikaansaaman haitan minimoimista.

        Kato nyt miten sinä tuon komennon tuonne sekaan sijoitit, päin persettä.

        On Error Resume Next
        ......
        next

        KUN SE OIKEIN TEHTYNÄ MENEE NÄIN

        On Error Resume Next
        . . .
        Resume Next

        Vittu että pitää olla älykääpiö kun ei tuollaistakaan ymmärrä. Samoja vitun virheitä joka ohjelmassa.


      • Anonyymi
        Anonyymi kirjoitti:

        Ihan oikein se on. Tässä ei ole varsinaista virheen käsittelyä, joten ehdottamasi lisärivi on turha. On Error Resume Next jättää vain virheen huomiotta, ei anna virheilmoitusta, vaan jatkaa seuraavalle riville. Kunden ratkaisussa Collection kasvaa, kun sinne lisätään uusi asia. Jos yritetään lisätä jotain, mitä siellä jo on, tulisi normaalisti virhe, mutta nyt sen yli vain hypätään. Uniikkien tapausten määrä nähdään Collection'in koosta.

        Jos virhe vaatii toimenpiteitä, se pitää käsitellä erikseen On Error Goto virhe. Täältä palattaisiin virheen aiheuttanutta seuraavalle rivile käskyllä Resume Next

        Ja samalla tässä on syytä oikaista nuo harhakäsitykset virheen käsittelyssä, koska näyttää ettei ole läksyjä luettu ollenkaan. Älkää kirjoitelko mitään "Minusta Tuntuu Siltä Että" vaan kun on ohjelmoinnista kysymys kaikki testataan toimivaksi. Ei ole mitään järkeä sijoittaa virheellistä virheen käsittelyä ohjelmaan, jättää sen pois sitten kokonaan, ellei osaa.

        MAHDOLLISET OHJAUKSET VIRHETILANTEEN HALLINTAAN
        1.) On Error GoTo LINE
        2.) On Error Resume Next
        3.) On Error GoTo 0

        1.) On Error GoTo LINE
        Sub eka
        On Error GoTo line
        Exit Sub
        LINE:
        ....
        End Sub

        LINE on joko, numeroitu rivi tai nimetty rivi, ja tuolla aloitetaan se hallittu haittojen minimoiminen. Huomaa että rivin numero tai nimi päättyy kaksoispisteeseen (:).

        2.) On Error Resume Next
        Tämä varmaankin selvisi jo edellisestä viestistäni.

        3.) On Error GoTo 0
        Poistaa käytöstä kaikki virheenkäsittelijät nykyisessä rutiinissa.


      • Anonyymi
        Anonyymi kirjoitti:

        Haista paska, minä en ole ehdottanut mitään lisä rivejä, eikä tuota virheenkäsittelyä ohjelmaan sijoiteta siksi että se jättää virheen muomioimatta, vaan juuri päin vastoin.

        Voi vittu miten typeriä aivopieruja.

        VIRHEEN KÄSITTELYSSÄ tavoitellaan nimen omaan hallittua virheen käsittelyä ja virheen aikaansaaman haitan minimoimista.

        Kato nyt miten sinä tuon komennon tuonne sekaan sijoitit, päin persettä.

        On Error Resume Next
        ......
        next

        KUN SE OIKEIN TEHTYNÄ MENEE NÄIN

        On Error Resume Next
        . . .
        Resume Next

        Vittu että pitää olla älykääpiö kun ei tuollaistakaan ymmärrä. Samoja vitun virheitä joka ohjelmassa.

        Toivotaan, että huomenna olisi parempi päivä.


    • Anonyymi

      onko hyvä tietokone tämä lenovo-kiinalaisten tekem'ä==)

    • Kiitos kaikille avustanne!
      Palaan huomenna, kun laitan ratkaisunne tosi toimiin.

      Ja älkää nyt hyvät ystävät tukkanuottasille ruvetko! :-)

      • Anonyymi

        Parempi kun et palaa.


    • Tämä:

      Function uniikit(rng As Range, Optional f)
      Dim keruu As New Collection
      If IsMissing(f) Then f = True
      On Error Resume Next
      For Each c In rng
      If (f Or Not (c.EntireRow.Hidden Or c.EntireColumn.Hidden)) Then
      keruu.Add c, CStr(c)
      End If
      Next
      uniikit = keruu.Count
      End Function

      Pelittää massan kanssa riittävän hyvin.

      Kun n. 700.000 rivin suodatuksen tulos sisältää noin 50.000 riviä, laskee tuo uniikit n. 10 sekunnissa.

      Suuret kiitokset tekijälle!

      Ja mukavaa viikkoa kaikille, myös äksypöksyille!

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

    Luetuimmat keskustelut

    1. Istuva kansanedustaja epäiltynä pahoinpitelystä ja ampuma-aserikoksesta

      Seiskan tietojen mukaan Timo Vornanen on epäiltynä pahoinpitelystä ja ampuma-aserikoksesta eikä kenellekään taatusti tul
      Maailman menoa
      455
      3313
    2. Tollokin tajuaa että Timo Vornanen

      oli joutunut äärimmäiseen tilanteeseen ampuessaa yhden laukauksen katuun. Ei poliisi tee tuollaista hetken mielijohteest
      Maailman menoa
      426
      3056
    3. Timo Vornanen kilahti

      Mikähän sille kansanedustajalle polisiisi miehelle on noin pahasti mennyt hermot , että tulevaisuudensa pilasi totaalise
      Kotka
      127
      2839
    4. Pullonpalautusjärjestelmä muuttuu - paluu menneisyyteen

      EU suuressa viisaudessaan on päättänyt, että pulloja pitää kierrättää. Jos oikein ymmärsin, nykyisen järjestelmänmme ti
      Maailman menoa
      164
      2192
    5. Sininen farmari - Ford Focus- YFB-842 on poliisilta kadoksissa Kauhajärvellä

      https://alibi.fi/uutiset/poliisilta-poikkeuksellinen-vihjepyynto-autossa-oleva-henkilo-on-avuntarpeessa/?shared=29255-2d
      Lapua
      8
      2030
    6. 177
      1399
    7. Onko oikeudenmukaista? Yhdellä taholla yllättävä valta-asema Tähdet, tähdet -voittajan valinnassa!

      Näinpä, onko sinusta tämä oikein? Viime jaksossakin voittaja selvisi vain yhden äänen erolla ja tänä sunnuntaina ensimm
      Tv-sarjat
      23
      1347
    8. No kerros nyt nainen

      Kumpi mielestäsi oli se joka väärinkäsitti kaiken? Nyt voi olla jo rehellinen kun koko tilanne on jo lähes haihtunut.
      Ikävä
      97
      1226
    9. Persukansanedustaja Timo Vornanen ammuskellut Helsingissä

      Poliisi siviiliammatiltaan, luvallinen ase mukana baarissa tällä hemmetin valopääpersulla. Meni eduskunnasta suoraan baa
      Haapavesi
      80
      1199
    10. Nainen, mietit miten minä jaksan

      En voi hyvin. Nykyään elämäni on lähinnä selviytymistä tunnista ja päivästä toiseen. Usein tulee epävarma olo, että mite
      Ikävä
      89
      1040
    Aihe