Excel keskustelu

Tajusin tuon edellisen neuvon, mutta firmassa ei ole office 365:ttä ja sen excelissä vasta on toi funktio joka tulisi käyttää.

Pivot taulukoista ei ole mitään kokemusta. Yritin, mutta en tajua näistä mitään.

Pikainen Pivot-perehdytys :hammer:

Oletetaan, että data on kuten alla. Valitse joku solu tuosta nimien alueelta. Klikkaa yläpalkista Lisää -> Pivot-taulukko ja OK.

pivot1.png

Pivot aukeaa uuteen taulukkoon. Vedä oikeasta reunasta "Pivot-taulukon kentät"-otsikon alta "Nimet" noihin laatikoihin kuvan mukaisesti:

pivot2.png

Pitäisi näyttää sitten tältä:

pivot3.png
 
Mulla ois range, jossa on nimiä. Pitäs saada tietää, montako kertaa kukin nimi mainitaan. Ja tulos jonnekki toiselle sheetille tai ei välttämättä. Miten tämä pitäisi tehdä?

Saatoin käsittää väärin, mutta siis ihan tuolla countiffillä voi kyllä laskea esim. seuraavasti.
=COUNTIF(G5:G19;G5:G19)
KOE1
3​
KOE2
2​
KOE3
4​
KOE4
1​
KOE5
2​
KOE5
2​
KOE7
1​
KOE8
1​
KOE9
1​
KOE1
3​
KOE2
2​
KOE3
4​
KOE3
4​
KOE3
4​
KOE1
3​
 
Pivot on paras ja helpoin jos listan ei tarvitse päivittyä automaattisesti aina kun dataan tulee muutoksia. Se nimittäin pitää käsin päivittää. Tai asettaa päivittymään työkirjaa avatessa. Tietysti voi tehdä makron joka sen päivittäisi automaattisesti mutta menee kikkailuksi.

COUNTIF joka riville toki toimii mutta on melko hankala lukea jos haluaa yhteenvetona kaikki uniikit nimet.

Jos noita uusia funktioita ei löydy voi homman tehdä myös pidemmän kaavan mukaan INDEX-MATCHilla. En jaksa nyt alkaa tässä selostamaan miten se tuolla onnistuu mutta google auttanee esim haulla "list unique values index match".
 
Pikainen Pivot-perehdytys :hammer:

Oletetaan, että data on kuten alla. Valitse joku solu tuosta nimien alueelta. Klikkaa yläpalkista Lisää -> Pivot-taulukko ja OK.

pivot1.png

Pivot aukeaa uuteen taulukkoon. Vedä oikeasta reunasta "Pivot-taulukon kentät"-otsikon alta "Nimet" noihin laatikoihin kuvan mukaisesti:

pivot2.png

Pitäisi näyttää sitten tältä:

pivot3.png

Hei,

tämän sain toimimaan, mutta data on useassa sarakkeessa ja varsinaista nimiriveä joka sarakkeelle ei ole. Nyt se laski vain A sarakkeen, mutta oikein.

Tuota COUNTIF:iä en saanut kirveelläkään toimimaan, olettaen että sen suomalainen vastine on LASKE.JOS funktio.
 
Ei tuossa mene mikään väärin. "Normaali" tapa käyttää COUNTIFiä on antaa sille arvo jota etsitään ja alue jolta sitä etsitään ja se laskee kuinka monta kertaa tuo arvo alueella esiintyy. Sille voi myös antaa alueen (array) jota etsitään alueelta (kuten esimerkissäsi) ja se palauttaa silloin alueen. Jos painaisit tuon kaavan antamisen jälkeen ctrl+shift+enter näkisit minkälaisen alueen se palauttaa. Koska tuossa tapauksessa yritetään palauttaa aluetta yhteen soluun on vastaus aina 0.

Jos siis sinulle riittää että jokaisella rivillä on vaikka viimeisenä sarakkeena kyseisen rivin nimen esiintymiskerrat, laita rivin perään COUNTIF jonka alueena sarake josta etsitään ja kriteerinä sen rivin arvo jota etsitään. Jos sarake josta etsitään ei ole nimetty alue*, muista lukita dollareilla alue ja kopioi kaavaa vetämällä.

* Taulukko-objektin sarake on aina nimetty alue, josta syystä data kannattaa aina muotoilla taulukoksi, jotta nimetty alue pysyy dynaamisena.

Keksin muuten miten noilla uusilla Office 365 array-funktioilla tuon saa dynaamiseksi:

Kirjoita yhteen soluun =UNIQUE(range) joka palauttaa spillinä koko arrayn. Nimeä tuo sama solu vaikka "tulos"-nimiseksi. Viereiseen soluun laita kaava =COUNTIF(range;tulos#). Näin yksinkertaisesti saat dynaamisesti päivittyvän listan uniikeista nimistä ja niiden esiintymiskerroista. Tuo solun nimeäminenkään ei ole pakollista, vaan voit viitata suoraan soluun ja lisätä #-merkin perään. Eli esimerkiksi jos UNIQUE-funktio on solussa A1, voit kirjoittaa B1 soluun =COUNTIF(range;A1#).
 
Viimeksi muokattu:
Hei,

tämän sain toimimaan, mutta data on useassa sarakkeessa ja varsinaista nimiriveä joka sarakkeelle ei ole. Nyt se laski vain A sarakkeen, mutta oikein.

Tuota COUNTIF:iä en saanut kirveelläkään toimimaan, olettaen että sen suomalainen vastine on LASKE.JOS funktio.

Meni näköjään ohi minulta melko oleellinen juttu tästä. Uniikkien arvojen etsiminen kaksiulotteisesta alueesta (useammasta sarakkesta samaan aikaan) on huomattavasti mutkikkaampaa kuin yksiulotteisesta (yhdestä sarakkeesta). Varmasti mahdollista, mutta huomattavasti vaikeampaa. Pitää funtsia tätä.
 
Hei,

tämän sain toimimaan, mutta data on useassa sarakkeessa ja varsinaista nimiriveä joka sarakkeelle ei ole. Nyt se laski vain A sarakkeen, mutta oikein.

Tuota COUNTIF:iä en saanut kirveelläkään toimimaan, olettaen että sen suomalainen vastine on LASKE.JOS funktio.

Sulla on toi LASKE.JOS väärässä solussa. Jos se olisi solussa A5, niin se toimisi ja palauttaisi KOE1 määrän. Sillä pitäisi kyllä saada koko range laskettua. Kirjoita kaava riville josta haluat tuloksen. Voit käyttää isompaakin rangea esim F5:G19, jos F-sarakkeessakin on arvoja. Kaava olisi silloin =LASKE.JOS(F5:G19, G5:G19). OIkeastaan olisi ehkä selkeäpää viitata yhteen soluun esim. =LASKE.JOS(F5:G19, G5), silloin se voi olla siinä A1-solussakin.
 
Avaa Excel
paina-> Alt+F11
Valikosta Insert -> Module
Liitä viivojen välissä oleva koodi luotuun Moduleen
Tallenna työkirja makroja tukevassa muodossa .xlsm
Sulje excel
Avaa excel ja kyseinen työkirja.
hyväksy makrot
valitse työkirjasta alue joka sisältää nimet
paina Alt+Home

Mikäli ei toimi niin todennäköisin syy on ‘Microsoft Scripting Runtime’ kirjaston puuttuminen.
Alt+F11 -> Tools -> references -> Microsoft Scripting Runtime
----------------------------------------------------------------------------
Koodi:
Sub Auto_Open()
Application.OnKey "%{HOME}", "TS_Laske_Uniikit_Nimet"
End Sub

Sub TS_Laske_Uniikit_Nimet()
Application.OnKey "%{HOME}", "TS_Laske_Uniikit_Nimet"
Dim TS_dictNimet As Object
Set TS_dictNimet = CreateObject("Scripting.Dictionary")
Dim r2 As Long
Dim rng As Range, Rng2 As Range, rngSelect As Range, cell As Range
    Set rng = Selection
    Set rngSelect = Nothing
        For Each Rng2 In rng
            If Rng2.Value <> "" Then
                If rngSelect Is Nothing Then
                    Set rngSelect = Rng2
                Else
                    Set rngSelect = Union(rngSelect, Rng2)
                End If
            End If
        Next Rng2
    
Dim luku1 As Long: luku1 = rngSelect.CountLarge
Dim data() As String
ReDim data(1 To luku1)

Dim name As Long: name = 1
For Each cell In rngSelect
            data(name) = cell.Value
            name = name + 1
Next cell
TS_dictNimet.CompareMode = vbTextCompare
    
Dim Nimet As String
    For r2 = 1 To UBound(data)
                    Nimet = data(r2)
            TS_dictNimet(Nimet) = TS_dictNimet(Nimet) + 1
    Next
    
    Sheets.Add.name = "Uniikkien_Nimien_Esiintymät"
    Sheets("Uniikkien_Nimien_Esiintymät").Range("A1").Resize(TS_dictNimet.Count, 1).Value = WorksheetFunction.Transpose(TS_dictNimet.Keys)
    Sheets("Uniikkien_Nimien_Esiintymät").Range("B1").Resize(TS_dictNimet.Count, 1).Value = WorksheetFunction.Transpose(TS_dictNimet.Items)

End Sub

------------------------------------------------------
 
Viimeksi muokattu:
Hei!



Olen yrittänyt etsiä tähän vastausta ulkomaisilta foorumeilta, mutta toistaiseksi en ole löytänyt simppeliä ratkaisua. Pystyisikö täältä joku asian paremmin hallitseva auttamaan?



Minulla on noin 10 excel-tiedostoa ja minun pitäisi poimia erilliseen koontiexceliin jokaisen excelin tietyltä välilehdeltä rivit, joissa sarakkeessa F on numeroarvoja (ohessa kuvakaappaus).


Vaadittavat stepit:



1) Tehdään haku lähtötietoexcelien tiettyyn välilehteen (nimetty esim. abc)

2) Esitetään koontitaulukossa tiedot aakkosjärjestyksessä lähtötietoexcelin kohdan ”Nimi” mukaisesti. Ei kuitenkaan näytetä nimeä koontitaulukossa.

3) Koontitaulukossa voidaan valita näytettäväksi rivit, joissa sarakkeessa F (poimittava sarake) on tietoja tai vaihtoehtoisesti voidaan poimia sarakkeen E tiedot tai sitten näyttää kaikki tiedot.

Miten asia kannattaisi toteuttaa? Koontiexcelissä kootut tiedot olisi paras esittää Pivot-taulukolla, joka voidaan päivittää aina erikseen. Excel-tiedostot ovat Teamsissa, miten tämä onnistuisi siellä? Teamsin ja Excelin kieli on suomi.
 

Liitteet

  • FA7FA957-102B-48E1-A780-537AD0E1D807.jpeg
    FA7FA957-102B-48E1-A780-537AD0E1D807.jpeg
    81,7 KB · Luettu: 50
Power Query toimi tähän tarpeeseen loistavasti. Vielä hakusessa, että miten saan toimimaan Share Pointissa, mutta eiköhän se selviä. Tässä video, josta löysin vastaukset.

 
Power Query toimi tähän tarpeeseen loistavasti. Vielä hakusessa, että miten saan toimimaan Share Pointissa, mutta eiköhän se selviä. Tässä video, josta löysin vastaukset.



Power query on tuohon tosiaan loistava. SharePointista saat kansion filet kun menet Data -> Get data -> From file -> From Sharepoint folder. Siihen Sharepointin kansion polku ja autentikointi mikkisoftan accountilla. Polun saat selville Teamsistä kun menet siihen kansioon ja avaat sen selaimessa (Avaa sovelluksessa Sharepoint-nappula siellä ylärivissä).
 
Power query on tuohon tosiaan loistava. SharePointista saat kansion filet kun menet Data -> Get data -> From file -> From Sharepoint folder. Siihen Sharepointin kansion polku ja autentikointi mikkisoftan accountilla. Polun saat selville Teamsistä kun menet siihen kansioon ja avaat sen selaimessa (Avaa sovelluksessa Sharepoint-nappula siellä ylärivissä).

Kiitos. Ongelma oli itsellä siinä, että yritin ensin kirjautua windows-tunnuksilla ja tämä ei toiminut. Excel muistaa kirjautumistiedot ja täytyi ottaa clear permissions, jotta pääsi kirjautumaan Microsoft-tunnuksin.
 
Moimoi, yritän helpottaa omaa työtaakkaani excelillä, tarkoitus olisi tehdä seuranta keräyksen edistymisestä. Saan keräyksestä kopioitua tiedot exceliin muodossa, jossa ensimmäisessä solussa on 0 tai 1 kertomassa onko kohteen keräys tehty, toisessa solussa kohteen nimi ja kolmannessa keräysvaihe. Näitä rivejä on satoja ja vaiheita muutamasta pariin kymmeneen. Haluaisin saada jotenkin laskettua montako keräystä on valmiina per vaihe, kohteen nimi on merkityksetön. Eli excel näyttäisi suurinpiirtein tältä

0 kohde1 vaihe1
1 kohde2 vaihe1
1 kohde3 vaihe3
0 kohde4 vaihe2

Ja haluaisin saada listaukset malliin vaihe1: 1/2 vaihe2: 0/1 vaihe3: 1/1

Miten tätä pitäisi lähteä lähestymään?
 
Moimoi, yritän helpottaa omaa työtaakkaani excelillä, tarkoitus olisi tehdä seuranta keräyksen edistymisestä. Saan keräyksestä kopioitua tiedot exceliin muodossa, jossa ensimmäisessä solussa on 0 tai 1 kertomassa onko kohteen keräys tehty, toisessa solussa kohteen nimi ja kolmannessa keräysvaihe. Näitä rivejä on satoja ja vaiheita muutamasta pariin kymmeneen. Haluaisin saada jotenkin laskettua montako keräystä on valmiina per vaihe, kohteen nimi on merkityksetön. Eli excel näyttäisi suurinpiirtein tältä

0 kohde1 vaihe1
1 kohde2 vaihe1
1 kohde3 vaihe3
0 kohde4 vaihe2

Ja haluaisin saada listaukset malliin vaihe1: 1/2 vaihe2: 0/1 vaihe3: 1/1

Miten tätä pitäisi lähteä lähestymään?

Esimerkiksi Pivotilla onnistuu. Riveihin tuo vaiheiden sarake. Sarakkeisiin keräyksien summa ja keräyksien määrä.

pivot.png
 
Moimoi, yritän helpottaa omaa työtaakkaani excelillä, tarkoitus olisi tehdä seuranta keräyksen edistymisestä. Saan keräyksestä kopioitua tiedot exceliin muodossa, jossa ensimmäisessä solussa on 0 tai 1 kertomassa onko kohteen keräys tehty, toisessa solussa kohteen nimi ja kolmannessa keräysvaihe. Näitä rivejä on satoja ja vaiheita muutamasta pariin kymmeneen. Haluaisin saada jotenkin laskettua montako keräystä on valmiina per vaihe, kohteen nimi on merkityksetön. Eli excel näyttäisi suurinpiirtein tältä

0 kohde1 vaihe1
1 kohde2 vaihe1
1 kohde3 vaihe3
0 kohde4 vaihe2

Ja haluaisin saada listaukset malliin vaihe1: 1/2 vaihe2: 0/1 vaihe3: 1/1

Miten tätä pitäisi lähteä lähestymään?

Pivot tai uusilla array-funktioilla näin:

Capture.PNG


P5 kaava: =SORT(UNIQUE(Table1[Vaihe]))
Q5 kaava: =COUNTIFS(Table1[Status];1;Table1[Vaihe];P5#)
R5 kaava: =COUNTIF(Table1[Vaihe];P5#)

Tuo taulukon nimi tietysti Table1.

Edit: hidas... ;)

Edit 2: Jos haluat alkuperäisen pyynnön mukaisen esitystavan yhteen soluun noilla array-funktioilla, saat ne näinkin yksinkertaisesti:

Solun S5 kaava:
Koodi:
=INDEX($P5#;SEQUENCE(ROWS($P5#))) & ": " & INDEX($Q5#;SEQUENCE(ROWS($Q5#))) & "/"& INDEX($R5#;SEQUENCE(ROWS($R5#)))

Näyttää tältä:
Capture2.PNG
 
Viimeksi muokattu:
Aloittaisin tekemällä uuden tyhjän työkirjan jonka nimi voi olla vaikkapa "Uusin raportti". Paina Data-välilehdeltä Get Data -> From File -> From Folder ja anna polku johon CSV:t kirjoitetaan. Tämän jälkeen paina Transform Data. Power Queryn editointi-ikkuna aukeaa.

.......

Tätä voisi vielä jalostaa siten että sinulla on poistettavien nimien lista vaikkapa toisella välilehdellä ja tuot senkin sisältämän datan listana Power Queryyn ja käytät sitä listaa suodatuskriteerinä. Tämä tosin vaatii jo vähän M-koodin muokkaamista käsin mutta google varmasti auttaa.

Power Queryn saat myös hakemaan sen datan suoraan sieltä tietokannasta eli välttämättä et tarvitse edes sitä skriptiä.

En tiedä mahdatko tätä ohjeistustasi enää muistaa, mutta auttelit aikaisemmin power queryn kanssa. En tiedä mitä tuossa välillä onnistun tekemään kun ilmoittelee, että yhtäkkiä kysely rapautunut ja jokin sarake yhtäkkiä puuttuu vaikken mitään erityistä ole tehnyt. Ongelma on helppo korjata kun harvoin käy. Teen uuden power queryn kun ohjeistasi sen opin. Työlästä on kuitenki ylläpitää filtterilistaa missä on se 60 filsua listattuna yksitellen. Tuo boldattu osuus alkoi nyt kiinnostamaan. Onko sinulla tästä suoraan jotain kokemusta vai olisiko syytä tosiaan lähteä googlettelemaan ja harjoittelemaan?
 
Pivot tai uusilla array-funktioilla näin:

Capture.PNG


P5 kaava: =SORT(UNIQUE(Table1[Vaihe]))
Q5 kaava: =COUNTIFS(Table1[Status];1;Table1[Vaihe];P5#)
R5 kaava: =COUNTIF(Table1[Vaihe];P5#)

Tuo taulukon nimi tietysti Table1.

Edit: hidas... ;)

Edit 2: Jos haluat alkuperäisen pyynnön mukaisen esitystavan yhteen soluun noilla array-funktioilla, saat ne näinkin yksinkertaisesti:

Solun S5 kaava:
Koodi:
=INDEX($P5#;SEQUENCE(ROWS($P5#))) & ": " & INDEX($Q5#;SEQUENCE(ROWS($Q5#))) & "/"& INDEX($R5#;SEQUENCE(ROWS($R5#)))

Näyttää tältä:
Capture2.PNG
Kiitokset nopeista vastauksista. En suoraan saanut noilla tehtyä mitä halusin mutta löysin Pivotin ja hetken yrityksen ja erehdyksen kautta onnistuin siinä mitä halusin ja sain pari lisätoimintoakin :kippis:
 
En tiedä mahdatko tätä ohjeistustasi enää muistaa, mutta auttelit aikaisemmin power queryn kanssa. En tiedä mitä tuossa välillä onnistun tekemään kun ilmoittelee, että yhtäkkiä kysely rapautunut ja jokin sarake yhtäkkiä puuttuu vaikken mitään erityistä ole tehnyt. Ongelma on helppo korjata kun harvoin käy. Teen uuden power queryn kun ohjeistasi sen opin. Työlästä on kuitenki ylläpitää filtterilistaa missä on se 60 filsua listattuna yksitellen. Tuo boldattu osuus alkoi nyt kiinnostamaan. Onko sinulla tästä suoraan jotain kokemusta vai olisiko syytä tosiaan lähteä googlettelemaan ja harjoittelemaan?

Oikeastaan sinun tarvitsee vain saada lista suodatettavista nimistä power queryyn ja käyttää sitä listaa filtterinä manuaalisen filtterin sijaan.

Eli ensin lista:

Tee vaikka toiselle välilehdelle taulukko jonka otsikko on Nimet, sen alla poistettavat nimet ja nimeä se taulukko vaikka PoistettavatNimet.

nimet.PNG


Tee tälle taulukolle uusi kysely eli Data -> From Table/Range -> Transform data. Tämä avaa taas power query -editorin. Mene transform-välilehdelle ja paina Convert to list. Tämä tekee taulukon datasta listan jota voidaan käyttää M-koodissa. Tämä lista pitäisi olla näkyvissä vasemmalla queries-paneelissa:

paneeli.PNG


Nyt kun meillä on lista nimistä, käytetään sitä M-koodissa klikkailtujen filtterien sijaan. Mene alkuperäiseen kyselyyn ja muokkaa sitä steppiä jossa suodatus tapahtuu. Jos sinulla ei ole kaavariviä näkyvissä, paina View -> Formula bar päälle. Siellä todennäköisesti lukee jotain allaolevan kaltaista:

Koodi:
= Table.SelectRows(#"Removed Columns", each ([Nimi] <> "Nimi 1" and [Nimi] <> "Nimi 11" and [Nimi] <> "Nimi 15" and [Nimi] <> "Nimi 17" and [Nimi] <> "Nimi 23"))

Tuo siis tutkii edellisen stepin tulosta (#"Removed Columns") rivi riviltä onko jollain rivillä jokin noista nimistä ja poistaa ne rivit. Käytetään tämän kaavan sijaan itse kirjoitettua kaavaa jossa käytetään aiemmin luotua listaa sen sijaan että lueteltaisiin kaikki erikseen:

Koodi:
= Table.SelectRows(#"Removed Columns", each List.Contains(PoistettavatNimet,[Nimi])=false)

Tuo siis tutkii joka rivillä löytyykö nimi listasta ja jos löytyy, poistaa sen. Jos tuo =false olisi =true listalta löytyvä nimi säilytettäisiin ja muut poistettaisiin.

Nyt aina kun lisäät nimiä tuolle toisella välilehdellä olevalle listallle, päivittyy myös tuo filtteri automaattisesti ja samalla tietenkin lopullinen kyselyn tulos.
 
Oikeastaan sinun tarvitsee vain saada lista suodatettavista nimistä power queryyn ja käyttää sitä listaa filtterinä manuaalisen filtterin sijaan.

Eli ensin lista:

Tee vaikka toiselle välilehdelle taulukko jonka otsikko on Nimet, sen alla poistettavat nimet ja nimeä se taulukko vaikka PoistettavatNimet.

nimet.PNG


Tee tälle taulukolle uusi kysely eli Data -> From Table/Range -> Transform data. Tämä avaa taas power query -editorin. Mene transform-välilehdelle ja paina Convert to list. Tämä tekee taulukon datasta listan jota voidaan käyttää M-koodissa. Tämä lista pitäisi olla näkyvissä vasemmalla queries-paneelissa:

paneeli.PNG


Nyt kun meillä on lista nimistä, käytetään sitä M-koodissa klikkailtujen filtterien sijaan. Mene alkuperäiseen kyselyyn ja muokkaa sitä steppiä jossa suodatus tapahtuu. Jos sinulla ei ole kaavariviä näkyvissä, paina View -> Formula bar päälle. Siellä todennäköisesti lukee jotain allaolevan kaltaista:

Koodi:
= Table.SelectRows(#"Removed Columns", each ([Nimi] <> "Nimi 1" and [Nimi] <> "Nimi 11" and [Nimi] <> "Nimi 15" and [Nimi] <> "Nimi 17" and [Nimi] <> "Nimi 23"))

Tuo siis tutkii edellisen stepin tulosta (#"Removed Columns") rivi riviltä onko jollain rivillä jokin noista nimistä ja poistaa ne rivit. Käytetään tämän kaavan sijaan itse kirjoitettua kaavaa jossa käytetään aiemmin luotua listaa sen sijaan että lueteltaisiin kaikki erikseen:

Koodi:
= Table.SelectRows(#"Removed Columns", each List.Contains(PoistettavatNimet,[Nimi])=false)

Tuo siis tutkii joka rivillä löytyykö nimi listasta ja jos löytyy, poistaa sen. Jos tuo =false olisi =true listalta löytyvä nimi säilytettäisiin ja muut poistettaisiin.

Nyt aina kun lisäät nimiä tuolle toisella välilehdellä olevalle listallle, päivittyy myös tuo filtteri automaattisesti ja samalla tietenkin lopullinen kyselyn tulos.

Moi, seurasin ohjetta lähes loppuun ennen kuin törmäsin ongelmaan.

Jos teen nykyisellä rapsalla yhden filtterin, niin se näyttää esim. tältä.
Koodi:
= Table.SelectRows(#"Muutettu tyyppi", each not Text.Contains([Name], "Arto"))

Eli alkuperäisessä taulukossa oleva Name-sarake, ja sieltä jos solu pitää sisällään Arton, niin se poistetaan.

Nyt kun yritän tuota esimerkkiäsi upottaa tuon lauseeseen, siis jos sitä ensinnäkään oikean lauseen paikalle olen tiputtamassa, niin ei onnistu. Eli tämä:
Koodi:
= Table.SelectRows(#"Removed Columns", each List.Contains(PoistettavatNimet,[Nimi])=false)

Ilmeisesti jokin suomi-englanti probleema, mutta lisäksi meikäläisen osaamattomuutta.
 
Koita:

Koodi:
= Table.SelectRows(#"Muutettu tyyppi", each not List.Contains(PoistettavatNimet,[Name]))
 
Koita:

Koodi:
= Table.SelectRows(#"Muutettu tyyppi", each not List.Contains(PoistettavatNimet,[Name]))

Siis tämä kysely toimii nyt ilman erroria, mutta itse kysely ei kyllä filtteröi sieltä päämatskusta asiasanoilla rivejä. Pitääkö filtterilistassa käyttää asteriskeja esim. jos solussa lukee "tyhmäeiymmärrä lainkaan", niin pitääkö filsulistassa olla: *eiymmär* jotta se suodattuisi?
 
Paljon mahdollista, en ole koskaan testannut

Ei toimi wildcardit näissä.
Jos filtteriin kirjoittaa "auto" ja listan sarakkeesta löytyy solu jossa lukee vain "auto", se poistetaan. Filtteri siis toimii, mutta ei toimi niin laajasti kuin tarve olisi.

Kun luon filtterin joka sisältyy soluun, on se muotoa:

= Table.SelectRows(#"Filtered Rows", each not Text.Contains([Name], "auto"))

Kun taas tuo sanatarkkaa poistoa tekevä on:

= Table.SelectRows(#"Muutettu tyyppi", each not List.Contains(PoistettavatNimet,[Name]))

Eli ymmärtääkseni kulminoituu siihen, että lauseessa pitäisi olla viittaus erilliseen listaan, jonka perusteella niitä vertaillaan Text.Containsina. Täytyy hieman pähkinöidä, että miten yhdessä lauseessa kerrotaan Text.Contains ja viitataan kuitenkin List.Containsiin.
 
Joo, tutkin tuota tarkemmin. Ei ole itsellä tullut tilannetta että tarttis etsiä osia stringistä listalla. Tuossa tarvitsee yhdistää Text.Contains ja List.Contains sekä hajottaa lista osiin.

Kokeile tätä:

Koodi:
= Table.SelectRows(#"Muutettu tyyppi" , each not List.AnyTrue(List.Transform(PoistettavatNimet, (nimet) => Text.Contains([Name],nimet))))
 
Joo, tutkin tuota tarkemmin. Ei ole itsellä tullut tilannetta että tarttis etsiä osia stringistä listalla. Tuossa tarvitsee yhdistää Text.Contains ja List.Contains sekä hajottaa lista osiin.

Kokeile tätä:

Koodi:
= Table.SelectRows(#"Muutettu tyyppi" , each not List.AnyTrue(List.Transform(PoistettavatNimet, (nimet) => Text.Contains([Name],nimet))))

Kiitos. Toimii täydellisesti!!Olet edelleenkin ihan loistoheppu!!
 
Terve,

Tämmöisen ongelman kanssa painin ja toivon että täällä joku fiksumpi voisi auttaa:

Minulla on taulukko jossa A sarakkeessa on tunnisteita ja B sarakkeessa erilaisia aikaleimoja. Yhdellä tunnisteella on useampi aikaleima. Onko olemassa kaavaa jolla saan selville kunkin tunnisteen pienimmän ja suurimman aika arvon?

AB
Tunniste110:34:00 (päivämäärä sisältyy)
Tunniste110:50:00
Tunniste112:44:00
Tunniste209:32:00
Tunniste212:49:00
Tunniste216:00:00
Tunniste308:34:00

Kiitokset etukäteen!
 
Terve,

Tämmöisen ongelman kanssa painin ja toivon että täällä joku fiksumpi voisi auttaa:

Minulla on taulukko jossa A sarakkeessa on tunnisteita ja B sarakkeessa erilaisia aikaleimoja. Yhdellä tunnisteella on useampi aikaleima. Onko olemassa kaavaa jolla saan selville kunkin tunnisteen pienimmän ja suurimman aika arvon?

AB
Tunniste110:34:00 (päivämäärä sisältyy)
Tunniste110:50:00
Tunniste112:44:00
Tunniste209:32:00
Tunniste212:49:00
Tunniste216:00:00
Tunniste308:34:00

Kiitokset etukäteen!
Pivot helpoin. Sarake A riveille ja Min ja Max arvoiksi sarake B.

pivotminmax.PNG


Dynaamiseksikin saa jos tarve(?)
 
Kiitos jeesistä,

Pääsen näillä neuvoilla hyvin liikenteeseen, kumpikin näyttää ajavan asiansa. Mukava oppia uutta!
 
Auttakaas osaamatonta. Laskupohja exel ei anna laittaa kuluvaa vuotta päivämäärään.

Näyttökuva 2021-01-06 161554.png
 
Tuossa solussa on data validation päällä joka estää tuon jollain säännöllä. Valitse solu ja mene välilehteen Tiedot -> Tietojen kelpoisuus ja katso mikä tuon solun sääntö on.
 
Miten saada excel luomaan käyttäjän haluama määrä rivejä taulukkoon? Jos esim on rivi, jossa käyttäjää pyydetään syöttämään näytemäärä, jonka jälkeen ilmestyisi tulostaulukko, jossa on haluttu määrä rivejä. Olen makrolla tehnyt yhden missä oli vaihtoehtoja vain kolme eli nauhoitin 3 makroa erikseen, jotka sitten toivat näkyviin taulukot toivotuilla näytemäärillä. Nyt kuitenkin näytteitä voi olla jopa 100, joten ei niitä ainakaan yksitellen viitsisi nauhoittaa.
 
Tässä yksinkertainen VBA-makro:

C#:
Sub InsertRows()

'PURPOSE: Insert row(s) into the active worksheet
'SOURCE: www.TheSpreadsheetGuru.com

'Insert Row Above Row 3
    Rows(3).Insert Shift:=xlDown, _
      CopyOrigin:=xlFormatFromLeftOrAbove 'or xlFormatFromRightOrBelow
    
'Insert 5 Rows Above Row 3
    Rows("3:7").Insert Shift:=xlDown, _
      CopyOrigin:=xlFormatFromLeftOrAbove 'or xlFormatFromRightOrBelow

End Sub

Esimerkin löysin täältä:
 
Jos mun pitää luoda koko vuodelle päivät 1,5,10,15,20,25 joka kuulle, niin mikä olisi helpoin tapa?
 
Excel ei nyt ole välttämättömyys, mutta lienee sillä tehtävissä?

csv/excel tiedosto, jossa 2 saraketta.
ensimmäisessä sarakkeessa numerosarja ja toisessa luvut 1-4. Miten selvitän, että mitkä numeroista 1-4 puuttuu tuolta numerosarjalta?

tässä esimerkkinä taulukko.
Eli
111 numerosarjalta puuttuu 3,4
222 puuttuu 1 ja 2
333 puuttuu 1 ja 2

Nuo puuttuvat pitäisi sitten tunkea vaikka sarakkeisiin C-E, ei väliä vaikka ne tulostuu jokaiselle riville missä on tuo sama numerosarja, koska A sarakkeen duplikaatit poistamalla jää vain se yksi rivi puuttuvin numeroin.

1111
1112
2223
2224
3334
3333

Lopputulema jotakuinkin tämän näköinen, josta saa helposti sortattua nuo puuttuvat numerot.

Toivottavasti tästä selostuksesta saa edes selvää :)
11134
22212
33312
 
Väsäilinpä itselle pörssi kirjanpito/osake voitto tappio jne eri toimintoja laskurin exceliin (osa if funktioista todella pitkiä). Niin jostain ihmeestä repii pienen pöyristys virheen tietyissä suht yksinkertaisissa funktio laskuissa, muistaakseni jo centin sadasosassa oli heittoa sen verran että voi pyöristää väärin kymmenys osan (merkitsee laskiessa onko varaa ostaa osakkeita) funktiot käyty läpi. Ei luulisi liukuluku virheiden jo tässä vaiheessa tulevan esiin. Osake laskut siis 0,000(0) tarkkuudella.
 
Vaikeata on tällä selityksellä keksiä mitä haetaan, mutta koetamma.

Ilmeisesti haluat etsiä rivit joissa B-sarakkeen merkkiä ei löydy A-sarakkeen vastaavan rivin solusta?

JOSVIRHE(ETSI(B1;A1);"EI OLEE")


Excel ei nyt ole välttämättömyys, mutta lienee sillä tehtävissä?

csv/excel tiedosto, jossa 2 saraketta.
ensimmäisessä sarakkeessa numerosarja ja toisessa luvut 1-4. Miten selvitän, että mitkä numeroista 1-4 puuttuu tuolta numerosarjalta?

tässä esimerkkinä taulukko.
Eli
111 numerosarjalta puuttuu 3,4
222 puuttuu 1 ja 2
333 puuttuu 1 ja 2

Nuo puuttuvat pitäisi sitten tunkea vaikka sarakkeisiin C-E, ei väliä vaikka ne tulostuu jokaiselle riville missä on tuo sama numerosarja, koska A sarakkeen duplikaatit poistamalla jää vain se yksi rivi puuttuvin numeroin.

1111
1112
2223
2224
3334
3333

Lopputulema jotakuinkin tämän näköinen, josta saa helposti sortattua nuo puuttuvat numerot.

Toivottavasti tästä selostuksesta saa edes selvää :)
11134
22212
33312
 
Onnistuisikohan Excelillä asetella rinnakkain sarakkeita siten että samat arvot olisivat samalla rivillä ja puuttuvat jäisivät tyhjäksi painaen muita alemmas? Selitys ei ole kovin hyvä joten ehkä kuva auttaa. Toki olisi suotavaa että myös ensimmäinen sarake käyttäytyisi samoin vaikka se tapaus jäikin kuvasta pois.
Excel esim.png
 
Moikka. Ongelma:
Käytössä Excel 2019
Lataan verkkopankin tiliotteen csv- muodossa ja avaan sen excelissä.
Päivämäärät ovat desimaalimuodossa.
Pitäisi olla 1.7.2021 alkaen.
Mikä on vialla?
Ongelma alkoi, kun asensin Windowsin uudelleen ja tietenkin Officen.

KirjauspäiväArvopäivä
0,069919​
0,069919​
0,069919​
0,069919​
0,069919​
0,069919​
0,069919​
0,069919​
0,069919​
0,069919​
0,069919​
0,069919​
0,069919​
0,069919​
0,111586​
0,111586​
0,111586​
0,111586​
0,111586​
0,111586​
 
Kun Excel avaa .csv-tiedoston, se tulkitsee nykyisten tietojen oletusmuoto-asetusten avulla, miten kukin tietosarake tuodaan. Jos haluat joustavammin muuntaa sarakkeet eri tietomuodoissa, voit käyttää ohjattua Tuo teksti -toimintoa.

Tarkempi kuvaus ohjatusta CSV-tuonnista täällä:
 
Eip tuokaan auta.
IMG_20210720_172652.jpg

Kun haen tiedot, kuten kuva näyttää, tulos on desimaaleja.
Myös Open Office ja Googlen Sheet avaa ne csv- filut samanlaisena.
 
Excelin ikuis-ongelma. Täällä toimii se, että ennen csv:n avaamista excelillä, muutellaan esim notepad++:lla päivämäärät muotoon pp/kk/vv ja desimaalipisteet pilkuiksi ...

Tähän saattaa vaikuttaa myös windowsin kyseiset asetukset ja kuun asento taivaalla.
 
Jeps, nyt toimii!
En tiedä mitä tein, mutta nyt se muuttaa ne desimaalit päivämääriksi automaattisesti.
Kiitos vastaajille!
 
Viimeksi muokattu:
Kun Excel avaa .csv-tiedoston, se tulkitsee nykyisten tietojen oletusmuoto-asetusten avulla, miten kukin tietosarake tuodaan. Jos haluat joustavammin muuntaa sarakkeet eri tietomuodoissa, voit käyttää ohjattua Tuo teksti -toimintoa.

Tarkempi kuvaus ohjatusta CSV-tuonnista täällä:
Tuo on muuten ehkä aivan mainio ohje, mutta ainakaan suomenkielisen version kirjoittajalle ei ole kerrottu, että "ohjattu Tuo teksti" eli text import wizard on jo muutaman vuoden ollut "legacy"-toiminto, joka nyky-excelissä pitää erikseen enabloida:

Text Import Wizard - Excel (microsoft.com)

Ilman tuota wizardia on teksti- ja csv-tiedostojen käsittely aika hankalaa.

EDIT Eikun löytyyhän se myös suomenkielisistä ohjeista. Mutta se toiminto siis tosiaan pitää erikseen enabloida.
 
Viimeksi muokattu:

Statistiikka

Viestiketjuista
261 774
Viestejä
4 546 739
Jäsenet
74 845
Uusin jäsen
Datapappa

Hinta.fi

Back
Ylös Bottom