Apua, liittyen pikasuodatukseen ja kaavoihin!!!

Minulla on taulukko, jossa on sarakkeessa H useita kirjainnumero yhdistelmiä sekä myös tyhjiä kenttiä. Suodatan tuon sarakkeen perusteella tietoja. Haluaisin näyttää h-sarakkeeseen jääneiden arvojen tiedon toisessa solussa. Dget-funktio on varmaankin tähän oivallinen tapa, mutta se ei osaa ottaa huomioon suodatusta vaan näyttää, että sarakkeessa on samoja arvoja. Yritin yhdistää tuota subtotalin kanssa, mutta en osannut tehdä sitä oikein. Olisin kovin kiitollinen avusta! Haluan päästä tässä hommassa eteenpäin.
10483
Äänestä

Muut lukivat myös

Vastaukset 10

Vanhimmat

tai tarkoitin siis, että dget-funktio ilmoittaa, että sarakkeessa on eri arvoja...jeesatkaa onnetonta Excelin käyttäjää

Äänestä

No, kai sinä sen osaat tehdä. Ja pikasuodatuksen tuloksen voi "tallentaa" omaksi mukautetuksi näkymäksi - eli kun on suodatuksen tulos siinä esillä, niin sitten Näytä Mukautetut näkymät ja siellä Lisää ja nimeä tämä suodatuksen tulos ja ok. Silloin se tulos löytyy sieltä mukautetuista myöhemmin.

Äänestä
  • huonosti oon selittäny tuon... eli ei nuo tyhjät kentät mitään haittaa. (en tiedä, miksi sen olen tuohon edes kirjoittanut, varmaan ainainen kiire prkl). Enkä halua tallentaa kutakin suodatuksen jälkeistä näkymää.

    Koitan kertoa tilanteen vähän selvemmin. Tilanne on kuitenkin yksinkertainen. Minulla on sarakkeessa arvoja esim. yy12,yy12,yy12,tt13, er99 jne. Suodatuksen jälkeen näkyviin jää esimerkiksi arvot yy12. Kuinka saan tuon arvon näkyviin uuteen soluun esim d18 samalla välilehdellä. Entäs jos suodatan uudelleen? Tarviiko tähän peräti jotain skriptiä kirjottaa vai onko tähän joku välisumman tapainen ratkaisu olemassa, mikä osaa ottaa huomioon tuon suodatuksen. Vai ajattelenko asioita vähän liian vaikeasti.

    Äänestä

  • Apua tarvitseva kirjoitti:

    huonosti oon selittäny tuon... eli ei nuo tyhjät kentät mitään haittaa. (en tiedä, miksi sen olen tuohon edes kirjoittanut, varmaan ainainen kiire prkl). Enkä halua tallentaa kutakin suodatuksen jälkeistä näkymää.

    Koitan kertoa tilanteen vähän selvemmin. Tilanne on kuitenkin yksinkertainen. Minulla on sarakkeessa arvoja esim. yy12,yy12,yy12,tt13, er99 jne. Suodatuksen jälkeen näkyviin jää esimerkiksi arvot yy12. Kuinka saan tuon arvon näkyviin uuteen soluun esim d18 samalla välilehdellä. Entäs jos suodatan uudelleen? Tarviiko tähän peräti jotain skriptiä kirjottaa vai onko tähän joku välisumman tapainen ratkaisu olemassa, mikä osaa ottaa huomioon tuon suodatuksen. Vai ajattelenko asioita vähän liian vaikeasti.

    ei tuo onnaa ilman koodia...
    D18 soluun kaava esim. jos haluamasi sarakkeen suodatusehtovalikko on solussa C2 =Pikasuodatus(C2)
    näyttää myös ja/tai ehdotkin ja jos ei ole mitään suodatusta niin KAIKKI teksti soluun D18...

    moduuliin...

    Function Pikasuodatus(Alue As Range) As String
    Dim Suodatin As String
    Suodatin = ""
    On Error GoTo Poistu
    Application.Volatile True
    With Alue.Parent.AutoFilter
    If Not Intersect(Alue, .Range) Is Nothing Then
    With .Filters(Alue.Column - .Range.Column 1)
    If .On Then
    Suodatin = .Criteria1
    Select Case .Operator
    Case xlAnd
    Suodatin = Suodatin & " JA " & .Criteria2
    Case xlOr
    Suodatin = Suodatin & " TAI " & .Criteria2
    End Select

    Else
    Suodatin = "KAIKKI"
    End If
    End With
    End If
    End With
    Poistu:
    Pikasuodatus = Suodatin
    End Function

    Keep EXCELing
    @Kunde

    Äänestä

  • kunde kirjoitti:

    ei tuo onnaa ilman koodia...
    D18 soluun kaava esim. jos haluamasi sarakkeen suodatusehtovalikko on solussa C2 =Pikasuodatus(C2)
    näyttää myös ja/tai ehdotkin ja jos ei ole mitään suodatusta niin KAIKKI teksti soluun D18...

    moduuliin...

    Function Pikasuodatus(Alue As Range) As String
    Dim Suodatin As String
    Suodatin = ""
    On Error GoTo Poistu
    Application.Volatile True
    With Alue.Parent.AutoFilter
    If Not Intersect(Alue, .Range) Is Nothing Then
    With .Filters(Alue.Column - .Range.Column 1)
    If .On Then
    Suodatin = .Criteria1
    Select Case .Operator
    Case xlAnd
    Suodatin = Suodatin & " JA " & .Criteria2
    Case xlOr
    Suodatin = Suodatin & " TAI " & .Criteria2
    End Select

    Else
    Suodatin = "KAIKKI"
    End If
    End With
    End If
    End With
    Poistu:
    Pikasuodatus = Suodatin
    End Function

    Keep EXCELing
    @Kunde

    toki tolla kaavalla saa muittenkin sarakkeiden suodatusehdot esille esim. viitaten edelliseen postaukseeni =Pikasuodatus(B2) näyttää sarakkeem B suodatusehdot....

    Keep EXCELing
    @Kunde

    Äänestä

  • kunde kirjoitti:

    toki tolla kaavalla saa muittenkin sarakkeiden suodatusehdot esille esim. viitaten edelliseen postaukseeni =Pikasuodatus(B2) näyttää sarakkeem B suodatusehdot....

    Keep EXCELing
    @Kunde

    Kiitoksia kovasti, olet ollut suuri apu niin minulle kuin monelle muullekin täällä keskusteluissa pyöriville.Kaavasi toimii ja sain sen jopa räplättyä käymään yhteen oman avuttoman skriptini kanssa, mitä kuitenkin tarvitsen osana laskentataulukokkoa.

    Osaatko vielä sanoa, mitä minun täytyy tehdä, että saan tuon =merkin pois näkyvistä solusta, johon tieto on tuotu. Myös välilyönnin kohdalle tulevat aaltoviivat ~ eivät ole toivottuja. Saako niitä poistettua? (esim d18 solun näkymä. =yy12 tai =yy12~)

    Äänestä

  • Apua tarvitseva kirjoitti:

    Kiitoksia kovasti, olet ollut suuri apu niin minulle kuin monelle muullekin täällä keskusteluissa pyöriville.Kaavasi toimii ja sain sen jopa räplättyä käymään yhteen oman avuttoman skriptini kanssa, mitä kuitenkin tarvitsen osana laskentataulukokkoa.

    Osaatko vielä sanoa, mitä minun täytyy tehdä, että saan tuon =merkin pois näkyvistä solusta, johon tieto on tuotu. Myös välilyönnin kohdalle tulevat aaltoviivat ~ eivät ole toivottuja. Saako niitä poistettua? (esim d18 solun näkymä. =yy12 tai =yy12~)

    Function Pikasuodatus(Alue As Range) As String
    Dim Suodatin As String
    Suodatin = ""
    On Error GoTo Poistu
    Application.Volatile True
    With Alue.Parent.AutoFilter
    If Not Intersect(Alue, .Range) Is Nothing Then
    With .Filters(Alue.Column - .Range.Column 1)
    If .On Then
    Suodatin = Mid(.Criteria1, 2)
    Select Case .Operator
    Case xlAnd
    Suodatin = Mid(Suodatin & " JA " & .Criteria2, 2)
    Case xlOr
    Suodatin = Mid(Suodatin & " TAI " & .Criteria2, 2)
    End Select

    Else
    Suodatin = "KAIKKI"
    End If
    End With
    End If
    End With
    Poistu:
    Pikasuodatus = Suodatin
    End Function

    "Myös välilyönnin kohdalle tulevat aaltoviivat ~ eivät ole toivottuja. Saako niitä poistettua? (esim d18 solun näkymä. =yy12 tai =yy12~)"

    nuo ~- merkit on soluissa (ei kylläkään välilyöti...) voit ne poistaa lisäämällä koodiin replace funktion millä korvaat ~- merkit välilyönneiksi
    esim. Replace(Suodatin, "~", " ")

    Keep EXCELing
    @Kunde

    Äänestä

  • kunde kirjoitti:

    Function Pikasuodatus(Alue As Range) As String
    Dim Suodatin As String
    Suodatin = ""
    On Error GoTo Poistu
    Application.Volatile True
    With Alue.Parent.AutoFilter
    If Not Intersect(Alue, .Range) Is Nothing Then
    With .Filters(Alue.Column - .Range.Column 1)
    If .On Then
    Suodatin = Mid(.Criteria1, 2)
    Select Case .Operator
    Case xlAnd
    Suodatin = Mid(Suodatin & " JA " & .Criteria2, 2)
    Case xlOr
    Suodatin = Mid(Suodatin & " TAI " & .Criteria2, 2)
    End Select

    Else
    Suodatin = "KAIKKI"
    End If
    End With
    End If
    End With
    Poistu:
    Pikasuodatus = Suodatin
    End Function

    "Myös välilyönnin kohdalle tulevat aaltoviivat ~ eivät ole toivottuja. Saako niitä poistettua? (esim d18 solun näkymä. =yy12 tai =yy12~)"

    nuo ~- merkit on soluissa (ei kylläkään välilyöti...) voit ne poistaa lisäämällä koodiin replace funktion millä korvaat ~- merkit välilyönneiksi
    esim. Replace(Suodatin, "~", " ")

    Keep EXCELing
    @Kunde

    Saako tuon replacen sohlattua tuohon sinun koodiisi jotenkin vai miten se oli tarkoitus tehdä? Voiko siinä käyttää näitä If then juttuja. Oon aika tunari näissä koodi hommissa, olet varmaan huomannut =).

    Äänestä

  • Apua tarvitseva kirjoitti:

    Saako tuon replacen sohlattua tuohon sinun koodiisi jotenkin vai miten se oli tarkoitus tehdä? Voiko siinä käyttää näitä If then juttuja. Oon aika tunari näissä koodi hommissa, olet varmaan huomannut =).

    "nuo ~- merkit on soluissa (ei kylläkään välilyöti...) voit ne poistaa lisäämällä koodiin replace funktion millä korvaat ~- merkit välilyönneiksi
    esim. Replace(Suodatin, "~", " ")"

    Function Pikasuodatus(Alue As Range) As String
    Dim Suodatin As String
    Suodatin = ""
    On Error GoTo Poistu
    Application.Volatile True
    With Alue.Parent.AutoFilter
    If Not Intersect(Alue, .Range) Is Nothing Then
    With .Filters(Alue.Column - .Range.Column 1)
    If .On Then
    Suodatin = Mid(.Criteria1, 2)
    Select Case .Operator
    Case xlAnd
    Suodatin = Mid(Suodatin & " JA " & .Criteria2, 2)
    Case xlOr
    Suodatin = Mid(Suodatin & " TAI " & .Criteria2, 2)
    End Select

    Else
    Suodatin = "KAIKKI"
    End If
    End With
    End If
    End With
    Poistu:
    Pikasuodatus = Replace(Suodatin, "~", " ")
    End Function

    Keep EXCELing
    @Kunde

    Äänestä

  • kunde kirjoitti:

    "nuo ~- merkit on soluissa (ei kylläkään välilyöti...) voit ne poistaa lisäämällä koodiin replace funktion millä korvaat ~- merkit välilyönneiksi
    esim. Replace(Suodatin, "~", " ")"

    Function Pikasuodatus(Alue As Range) As String
    Dim Suodatin As String
    Suodatin = ""
    On Error GoTo Poistu
    Application.Volatile True
    With Alue.Parent.AutoFilter
    If Not Intersect(Alue, .Range) Is Nothing Then
    With .Filters(Alue.Column - .Range.Column 1)
    If .On Then
    Suodatin = Mid(.Criteria1, 2)
    Select Case .Operator
    Case xlAnd
    Suodatin = Mid(Suodatin & " JA " & .Criteria2, 2)
    Case xlOr
    Suodatin = Mid(Suodatin & " TAI " & .Criteria2, 2)
    End Select

    Else
    Suodatin = "KAIKKI"
    End If
    End With
    End If
    End With
    Poistu:
    Pikasuodatus = Replace(Suodatin, "~", " ")
    End Function

    Keep EXCELing
    @Kunde

    Olet mainio tyyppi koodia vääntämään. Palataan myöhemmin asiaan, jos tulee ongelmia... siis aivan kohta =D

    Äänestä

Kommentoi aloitusta


Apua tarvitseva kirjoitti:

Minulla on taulukko, jossa on sarakkeessa H useita kirjainnumero yhdistelmiä sekä myös tyhjiä kenttiä. Suodatan tuon sarakkeen perusteella tietoja. Haluaisin näyttää h-sarakkeeseen jääneiden arvojen tiedon toisessa solussa. Dget-funktio on varmaankin tähän oivallinen tapa, mutta se ei osaa ottaa huomioon suodatusta vaan näyttää, että sarakkeessa on samoja arvoja. Yritin yhdistää tuota subtotalin kanssa, mutta en osannut tehdä sitä oikein. Olisin kovin kiitollinen avusta! Haluan päästä tässä hommassa eteenpäin.

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