Erilaisuuksien määrä

sarakkeessa

Hei, Minun pitäisi tietää kuinka monta erilaista solua on A sarakkeessa, joten onko siihen simppeliä kaavaa? A sarakkeen tiedot koostuvat tilausnumeroista. Yritän esimerkin avulla avata tapausta. Tilausnumeroita on a sarakkeessa 100, mutta niitä on 10 erilaista. Joten minun pitäisi saada kaava joka osaisi laskea automaattisesti kuinka monta erilaista tilausnumeroa on, tässä tapauksessa vastaus olisi 10. Kiitos ja kumarrus.

16

1449

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • kirjoita matriisikaavana CTRL SHIFT ENTER =SUM(IF(FREQUENCY(A:A;A:A)>0;1))

      • mutta ei kirjaimilla

        Hei, Kiitoksia vastauksesta. Tilausnumeroiden välissä on kirjaimia, joten kaava ei toimi niille. Onko tähän ratkaisua? Tilausnumeroa on muotoa 020509123AB1


      • vaikka tätä
        mutta ei kirjaimilla kirjoitti:

        Hei, Kiitoksia vastauksesta. Tilausnumeroiden välissä on kirjaimia, joten kaava ei toimi niille. Onko tähän ratkaisua? Tilausnumeroa on muotoa 020509123AB1

        =SUM(1/COUNTIF(A1:A14;A1:A14)) ctrl shift enter


      • vaikka tätä kirjoitti:

        =SUM(1/COUNTIF(A1:A14;A1:A14)) ctrl shift enter

        mutta pitää tietää kuinka monessa solussa on tietoa... sama vika tässäkin matriisikaavassa... eli ei saa olla tyhjiä soluja aluemäärityksessä =SUM(IF(FREQUENCY(MATCH(A1:A1000;A1:A1000;0);MATCH(A1:A1000;A1:A1000;0))>0;1)) mutta tällä toimii... syötä matriisikaavana CTRL SHOFT ENTER =SUM(IF(FREQUENCY(IF(LEN(A1:A1000)>0;MATCH(A1:A1000;A1:A1000;0);""); IF(LEN(A1:A1000)>0;MATCH(A1:A1000;A1:A1000;0);""))>0;1))


      • toimia
        kunde kirjoitti:

        mutta pitää tietää kuinka monessa solussa on tietoa... sama vika tässäkin matriisikaavassa... eli ei saa olla tyhjiä soluja aluemäärityksessä =SUM(IF(FREQUENCY(MATCH(A1:A1000;A1:A1000;0);MATCH(A1:A1000;A1:A1000;0))>0;1)) mutta tällä toimii... syötä matriisikaavana CTRL SHOFT ENTER =SUM(IF(FREQUENCY(IF(LEN(A1:A1000)>0;MATCH(A1:A1000;A1:A1000;0);""); IF(LEN(A1:A1000)>0;MATCH(A1:A1000;A1:A1000;0);""))>0;1))

        näinkin =SUM(IF(LEN(A1:A1000);1/COUNTIF(A1:A1000;A1:A1000))) ctrl shift enter


      • nauhottamalla
        toimia kirjoitti:

        näinkin =SUM(IF(LEN(A1:A1000);1/COUNTIF(A1:A1000;A1:A1000))) ctrl shift enter

        Hei! Olen tehnyt itse tehnyt makron nauhoitusmenetelmällä, jossa makro tuo kaavan soluun (=SUM(IF(LEN(A1:A1000);1/COUNTIF(A1:A1000;A1:A1000))) ). Homma ei toimi kun lopuksi en voi painaa ctrl shift enter. Olisiko mitään vinkkiä kuinka saisin homman toimimaan? Kiitos ja kumarrus


      • nauhottamalla kirjoitti:

        Hei! Olen tehnyt itse tehnyt makron nauhoitusmenetelmällä, jossa makro tuo kaavan soluun (=SUM(IF(LEN(A1:A1000);1/COUNTIF(A1:A1000;A1:A1000))) ). Homma ei toimi kun lopuksi en voi painaa ctrl shift enter. Olisiko mitään vinkkiä kuinka saisin homman toimimaan? Kiitos ja kumarrus

        kopioi alla oleva leikepöydälle. =SUM(IF(LEN(A1:A1000);1/COUNTIF(A1:A1000;A1:A1000))) valitse esim. solu C1 ja liitä KAAVARIVILLE ja lopuksi CTRL SHIFT ENTER ja klikkaa esim solu C4 ja koodia pukkaa suraavasti Sub Macro1() Range("C1").Select Selection.FormulaArray = _ "=SUM(IF(LEN(RC[-2]:R[999]C[-2]),1/COUNTIF(RC[-2]:R[999]C[-2],RC[-2]:R[999]C[-2])))" Range("C4").Select End Sub HUOMAA: KAAVA ON KIRJOITETTAVA VBA PUOLELLA SUHTEELLISENA VIITTAUKSENA ELI RC MUODOSSA VINKKI: tosta makron koodista voit melkein aina siivota noi .Select/Selection. jutut pois eli vastaava siistyttänä Range("C1").FormulaArray = _ "=SUM(IF(LEN(RC[-2]:R[999]C[-2]),1/COUNTIF(RC[-2]:R[999]C[-2],RC[-2]:R[999]C[-2])))"


      • Kiitos...............
        kunde kirjoitti:

        kopioi alla oleva leikepöydälle. =SUM(IF(LEN(A1:A1000);1/COUNTIF(A1:A1000;A1:A1000))) valitse esim. solu C1 ja liitä KAAVARIVILLE ja lopuksi CTRL SHIFT ENTER ja klikkaa esim solu C4 ja koodia pukkaa suraavasti Sub Macro1() Range("C1").Select Selection.FormulaArray = _ "=SUM(IF(LEN(RC[-2]:R[999]C[-2]),1/COUNTIF(RC[-2]:R[999]C[-2],RC[-2]:R[999]C[-2])))" Range("C4").Select End Sub HUOMAA: KAAVA ON KIRJOITETTAVA VBA PUOLELLA SUHTEELLISENA VIITTAUKSENA ELI RC MUODOSSA VINKKI: tosta makron koodista voit melkein aina siivota noi .Select/Selection. jutut pois eli vastaava siistyttänä Range("C1").FormulaArray = _ "=SUM(IF(LEN(RC[-2]:R[999]C[-2]),1/COUNTIF(RC[-2]:R[999]C[-2],RC[-2]:R[999]C[-2])))"

        Hei, Kiitoksia avusta. Sain homman toimimaan. Jos viel saa kysyä. Nyt olen saanut kaavan kopioitumaan muutamalle välilehdelle. Kuinka saisin viimeiselle välilehdelle taulukon, joka kerää kaikista välilehdistä (solusta C1) tuloksen ja listaa ne viimeiselle välilehdelle päällekkäin (sarakkeelle, niin että ensimmäinen tieto tulee D5, toinen tulee E5, kolmas F5 jne), niin että haetun tiedon eteen tulee välilehden nimi? Itseasiassa kopioitavia solujan on kaksi (esim. C1 ja D2). Vika välilehti voisi olla esim tulosvälilehti. Kiitoksia etukäteen!


      • Kiitos............... kirjoitti:

        Hei, Kiitoksia avusta. Sain homman toimimaan. Jos viel saa kysyä. Nyt olen saanut kaavan kopioitumaan muutamalle välilehdelle. Kuinka saisin viimeiselle välilehdelle taulukon, joka kerää kaikista välilehdistä (solusta C1) tuloksen ja listaa ne viimeiselle välilehdelle päällekkäin (sarakkeelle, niin että ensimmäinen tieto tulee D5, toinen tulee E5, kolmas F5 jne), niin että haetun tiedon eteen tulee välilehden nimi? Itseasiassa kopioitavia solujan on kaksi (esim. C1 ja D2). Vika välilehti voisi olla esim tulosvälilehti. Kiitoksia etukäteen!

        "Kuinka saisin viimeiselle välilehdelle taulukon, joka kerää kaikista välilehdistä (solusta C1) tuloksen ja listaa ne viimeiselle välilehdelle päällekkäin (sarakkeelle, niin että ensimmäinen tieto tulee D5, toinen tulee E5, kolmas F5 jne)" jos tieto sarakkeelle niin silloinhan se pitäs olla D5,D6 jne no nyt tein makron D sarakkeelle ja hakee sitten sen C2 tiedon E sarakkeeseen... helppohan tota on muokata moduuliin... Sub lisää() Dim ws As Worksheet On Error Resume Next Worksheets("Tulos").Activate Range("D5:E1000") = "" For Each ws In ActiveWorkbook.Worksheets If Not ws.Name = "Tulos" Then Range("D5").Select Do Until ActiveCell = "" ActiveCell.Offset(1, 0).Select Loop ActiveCell = ws.Name & ": " & ws.Range("C1") ActiveCell.Offset(0, 1) = ws.Name & ": " & ws.Range("D2") End If Next End Sub


      • Oma moka
        kunde kirjoitti:

        "Kuinka saisin viimeiselle välilehdelle taulukon, joka kerää kaikista välilehdistä (solusta C1) tuloksen ja listaa ne viimeiselle välilehdelle päällekkäin (sarakkeelle, niin että ensimmäinen tieto tulee D5, toinen tulee E5, kolmas F5 jne)" jos tieto sarakkeelle niin silloinhan se pitäs olla D5,D6 jne no nyt tein makron D sarakkeelle ja hakee sitten sen C2 tiedon E sarakkeeseen... helppohan tota on muokata moduuliin... Sub lisää() Dim ws As Worksheet On Error Resume Next Worksheets("Tulos").Activate Range("D5:E1000") = "" For Each ws In ActiveWorkbook.Worksheets If Not ws.Name = "Tulos" Then Range("D5").Select Do Until ActiveCell = "" ActiveCell.Offset(1, 0).Select Loop ActiveCell = ws.Name & ": " & ws.Range("C1") ActiveCell.Offset(0, 1) = ws.Name & ": " & ws.Range("D2") End If Next End Sub

        Hei, Joo. sarakkeella päällekkäin. Eli tieto pitäisi tulla D5, D6, D7 jne. Tarkoitus oli, että makro tekisi välilehden jonka nimi olisi tulos. Sitten makro hakisi jokaisen välilehden nimen ja laittaisi sen sarakkeelle D ja riville 5. Sen jälkeen makro hakisi jokaisesta välilehdestä solun C1 tiedon ja toisi sen välilehdelle tulos ja laittaisi sen soluun E5. Sen jälkeen se tekisi saman hakukierroksen, mutta tällä kertaa hakisi jokaisesta välilehdestä solusta C3 ja toisi sen vastaavasti tulos-välilehdelle ja laittaisi sen sarakkeeseen F 5. Jolloin Tulos välilehdelle muodostuisi seuraavanlaisesti tiedot D...............E.........F Sheet1.......C1.......C3 Sheet2.......C1.......C3 Sheet3.......C1.......C3 Eli jokaisen välilehden nimen jälkeen tulisi kyseisen välilehdellä olevat C1 ja C3 solun tiedot. Toivottavasti nyt on parempaa ja selkeämpää suomea. Kiitos 1000:nesti


      • Oma moka kirjoitti:

        Hei, Joo. sarakkeella päällekkäin. Eli tieto pitäisi tulla D5, D6, D7 jne. Tarkoitus oli, että makro tekisi välilehden jonka nimi olisi tulos. Sitten makro hakisi jokaisen välilehden nimen ja laittaisi sen sarakkeelle D ja riville 5. Sen jälkeen makro hakisi jokaisesta välilehdestä solun C1 tiedon ja toisi sen välilehdelle tulos ja laittaisi sen soluun E5. Sen jälkeen se tekisi saman hakukierroksen, mutta tällä kertaa hakisi jokaisesta välilehdestä solusta C3 ja toisi sen vastaavasti tulos-välilehdelle ja laittaisi sen sarakkeeseen F 5. Jolloin Tulos välilehdelle muodostuisi seuraavanlaisesti tiedot D...............E.........F Sheet1.......C1.......C3 Sheet2.......C1.......C3 Sheet3.......C1.......C3 Eli jokaisen välilehden nimen jälkeen tulisi kyseisen välilehdellä olevat C1 ja C3 solun tiedot. Toivottavasti nyt on parempaa ja selkeämpää suomea. Kiitos 1000:nesti

        kuten sanoin helppo muokata sopivaksi... ja tiedot voi hakea kerralla... Sub lisää() Dim ws As Worksheet On Error Resume Next Worksheets("Tulos").Activate Range("D5:E1000") = "" For Each ws In ActiveWorkbook.Worksheets If Not ws.Name = "Tulos" Then Range("D5").Select Do Until ActiveCell = "" ActiveCell.Offset(1, 0).Select Loop ActiveCell = ws.Name ActiveCell.Offset(0, 1) = ws.Range("C1") ActiveCell.Offset(0, 2) = ws.Range("C3") End If Next End Sub


      • Tulos välilehteä
        kunde kirjoitti:

        kuten sanoin helppo muokata sopivaksi... ja tiedot voi hakea kerralla... Sub lisää() Dim ws As Worksheet On Error Resume Next Worksheets("Tulos").Activate Range("D5:E1000") = "" For Each ws In ActiveWorkbook.Worksheets If Not ws.Name = "Tulos" Then Range("D5").Select Do Until ActiveCell = "" ActiveCell.Offset(1, 0).Select Loop ActiveCell = ws.Name ActiveCell.Offset(0, 1) = ws.Range("C1") ActiveCell.Offset(0, 2) = ws.Range("C3") End If Next End Sub

        Hei, Kiitos Kunde. Aivan mahtavaa. Pikkuriikkinen ongelma kuitenkin, se Tulos välilehti ei muodostu. Saisinko tähän vielä vähän apua? se tulos välilehti pitäisi olla viimeisenä.


      • Tulos välilehteä kirjoitti:

        Hei, Kiitos Kunde. Aivan mahtavaa. Pikkuriikkinen ongelma kuitenkin, se Tulos välilehti ei muodostu. Saisinko tähän vielä vähän apua? se tulos välilehti pitäisi olla viimeisenä.

        no nyt sekin sitten lisätty koodiin... Sub lisää() Dim ws As Worksheet Dim OnJo As Boolean On Error Resume Next For Each ws In ActiveWorkbook.Worksheets If ws.Name = "Tulos" Then OnJo = True End If Next If Not OnJo Then Sheets.Add , After:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = "Tulos" End If Worksheets("Tulos").Activate Range("D5:E1000") = "" For Each ws In ActiveWorkbook.Worksheets If Not ws.Name = "Tulos" Then Range("D5").Select Do Until ActiveCell = "" ActiveCell.Offset(1, 0).Select Loop ActiveCell = ws.Name ActiveCell.Offset(0, 1) = ws.Range("C1") ActiveCell.Offset(0, 2) = ws.Range("C3") End If Next End Sub


    • juhakorkeapudas

      Miten olisi kyseisen sarakkeen automaattinen suodatus?

      • muuan mies

        Tiedot - Suodata - Erikoissuodatus - Vain ainutkertaiset tidot ja sitten niistä laske.a(..)


    • Jos et halua käyttää helpoa tapaa, niin tässä on vaikeamapi: B-sarakkeen soluun lasket kunkin samalla rivillä olevan tilausnumeron esiintymien määrän. Tässä siis tulee esim. luku 3 kolmeen eri soluun, jos yksi tilausnumero esiintyy kolmesti. Toisille tilausnumeroille tulee sitten lukumääriä 1 ... 100. Kaava tyyliä =COUNTIF(A$3:A$100;A3). Aputaulukkoon laitat sitten yhteen sarakkeeseen luvut 1 ... 100 ja sen viereiseen sarakkeeseen kaavan tyyliin =COUNTIF(B$3:B$12;E16)/E16. Jos kolmea eri tilausnumeroa on ensiintynyt esim. 2 kertaa, tähän sarakkeeseen tulee nyt osataulukon 2. riville arvo 3. Sitten kun summaa tuon laskentasarkkeen, niin siinä on erilaisten esiintymien kokonaismäärä. Tämä ei siis ole simpeli vaihtoehto, ainoastaan toimiva.

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

    Luetuimmat keskustelut

    1. Mikä on kaivattusi etunimi?

      Otsikossa siis on kysymys eriteltynä. Vain oikeat vastaukset hyväksytään.
      Ikävä
      153
      3010
    2. En kestä katsoa

      Sitä miten sinusta on muut kiinnostuneita. Olen kateellinen. Siksi pitäisi lähteä pois
      Ikävä
      95
      1614
    3. Anna minulle anteeksi

      Anna minulle anteeksi. Minä pyydän.
      Ikävä
      143
      1537
    4. Kun viimeksi kohtasitte/näitte

      Mitä olitte tekemässä? Millainen ympäristö oli? Löydetään toisemme...
      Ikävä
      124
      1435
    5. Peräti 95 % persujen kannattajista rasisteja

      Kertoo EVA:n teettämä kysely. Pakollista yhdenvertaisuuskoulutusta tarvitsee siis paljon laajempi joukko kuin pelkästää
      Maailman menoa
      374
      1423
    6. Olet kyllä vaarallisen himokas

      Luova, kaunis, määrätietoinen, pervo, mielenkiintoinen, kovanaama, naisellinen ja erikoinen.
      Ikävä
      99
      1225
    7. Anna vielä vähän vihreää valoa

      Teen sitten siirtoni, nainen. Tiedän, että olet jo varovaisesti yrittänyt lähestyä, mutta siitä on jo aikaa. Jos tunnet
      Ikävä
      15
      941
    8. On minulla suunitelma

      Siitä ei vain tiedä kukaan muu kuin tällä hetkellä minä. Suunnitelma ja varasuunnitelma. Sinun takiasi nainen. Vain s
      Ikävä
      48
      862
    9. Palstan ylivoimaisesti suosituin keskustelunaihe

      Palstan suosituin keskustelunaihe näyttää olevan homoseksuaalisuus. Otsikoiden perusteella voisi kuvitella olevansa Seks
      Luterilaisuus
      259
      815
    10. 60
      805
    Aihe