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

1531

    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. Virkamiehille tarvitaan tuntuvat palkankorotukset

      Naistenpäivänä on syytä muistuttaa, että virkamiehen euro on vain 80 senttiä. Palkat tulee saattaa samalle tasolle yksi
      Maailman menoa
      56
      4426
    2. Riikka Purran kaudella nousi bensan hinta yli 2 euron

      Muistatteko kuinka edellisen vasemmistohallituksen aikana, ns. Marinin aikakaudella, bensiiniä sai 1,3 euron litrahinnal
      Maailman menoa
      83
      4115
    3. Jäikö meidän välit

      Mielestäsi Kesken?
      Ikävä
      70
      3578
    4. Olisipa saanut sinuun

      Tutustua paremmin. Harmi että aloin lopulta jännittämään kun näytit tunteesi niin voimakkaasti ja lähestyit niin voimaak
      Ikävä
      96
      3500
    5. Mitäs nyt sijoittajat?

      Pörssit laskevat maailmalla Iranin sodan takia ja muutenkin ovat olleet Trumpin vallan alla epävarmat. Ainoa, mikä on no
      Maailman menoa
      110
      2527
    6. Miks tän meidän

      Rakkauden on pitänyt olla näin vaikeaa?
      Ikävä
      35
      2368
    7. Elän vastoin

      Kaikkia arvoja kun en pysy sinusta erossa.
      Ikävä
      37
      2252
    8. muista olla

      VAROVAINEN! m
      Ikävä
      24
      2249
    9. Onneksi on edes yksi kuva

      Susta mitä voin välillä ihastella ja kaipailla sua😔
      Ikävä
      38
      2229
    10. Olisitpa se hellä

      Ja herkkä minkä kuvan sain sinusta irl. Haluaisin että elämässäni olisi sellainen joka arvostaa minua juuri sellaisena k
      Ikävä
      23
      2114
    Aihe