Gå til innhold

Excel: Filtrere basert på data i flere kolonner


Aldrack

Anbefalte innlegg

Jeg har en database der hver oppføring har flere stikkord. Jeg trenger å kunne filtrere basert på innholdet i alle stikkordene. 

image.png.34008beae449c1d45dc36284896dddbe.png

Det jeg er ute etter er å få opp én filter-liste som inneholder alle oppføringene i kolonne D-G. Er det mulig, eller kan databasen bygges opp annerledes slik at jeg får ett filter som henter informasjon fra alle stikkord-oppføringene? 

Endret av Aldrack
Skrivefeil
Lenke til kommentar
Videoannonse
Annonse

Takk for forslag! Det blir ikke helt slik. Det jeg ønsker er egentlig en kolonne med filter som henter alle oppføringene fra kolonne D til G. 

Alternativt at jeg kan legge inn stikkordene på en annen måte som gjør dem mer egnet for filtrering. 

Edit: 

Formålet er at jeg skal kunne se alle stikkordene datasettet inneholder uten å åpne filteret for både stikkord 1, 2, 3 og 4. Først når jeg ser alle stikkordene samlet vet jeg hva det er aktuelt å filtrere på. 

Edit 2: 

Her har jeg åpnet filter for kolonne F, og da kommer (naturlig nok) kun oppføringene i denne kolonnen opp som alternativ. Det er i denne listen jeg gjerne skulle sett oppføringene fra de andre "stikkord-kolonnene" også. 

image.png.e456cff3a23da9a6a0a5f5db8b73c36b.png

Endret av Aldrack
Lenke til kommentar

Ser også vanskeligheten ved å forstå eksakt hva trådstarter ønsker å oppnå, men gjør et forsøk.

La meg anta at trådstarter er ute etter en eller-funksjon som - for hver enkelt kolonne er sånn at hvis ett eller flere stikkord matcher et søkekriterie, så vil filteret gi visning av kolonna. Eksempel: hvis rad 5 inneholder "banan" som stikkord 1, og rad 6 inneholder "banan" som stikkord 3, og hvis trådstarter er ute etter å få filteret til å vise alle oppføringer der minst ett stikkord inneholder "banan" - så finnes det iallefall én mulig løsning.

Det er ikke enn rask løsning, men bør fungere ganske bra på små datasett.

Ok gjør slik: Sett av kolonne H (eller hva som nå blir neste ledige) og bruk funksjonen concenate() (tror det er slå.sammen() elns. på norsk - dette må du nesten slå opp da jeg ikke har norsk excel på maskinen min her og nå). Slå sammen innholdet fra alle stikkordene - gjerne med mellomrom som separator.

Etterpå kan du bruke denne kolonna til å filtrere innhold - f.ex i filterdialogen så søker du f.ex. etter "banan".

 

[edit]

lagde et enkelt eksempel for små datasett.

frukt-plukk.xlsx

Endret av geir__hk
se eksempelfil
Lenke til kommentar
3 hours ago, vidor said:

Det enkleste er å bruke Pivot-tabell. Dette er integrert i Excel og ligger som et valg i menyen.

Det var det første jeg tenkte på da jeg leste posten, men vi får se om trådstarter kommer med nærmere beskrivelse av problemet. Da blir det forhåpentligvis mulig å komme opp med en slags løsning.

Lenke til kommentar

Setter stor pris på alle innspillene og forslag til løsning! Jeg har forsøkt å bruke forslagene, men det gir ikke det resultatet jeg er ute etter. 

Så forstår jeg utfra kommentarene deres at jeg ikke klarer å forklare problemet godt nok. Jeg skal prøve en annen tilnærming, kanskje jeg lykkes bedre med det :)

Teksten i kursiv under er nå overflødig, etter som jeg fant en løsning. For trådens del beholder jeg likevel teksten. Løsningen kommer i fet skrift etter det som er i kursiv.

Eksemplet med frukt var et forsøkt på å forenkle, men kanskje det bare forvirrer. Det jeg egentlig ønsker er å lage en oversikt over en rekke oppføringer (100-200 stk.).

1. Jeg har sett for meg at det blir én oppføring pr. rad i excel.

2. Hver oppføring har en del metadata som jeg enkelt får oversikt over ved å lage en kolonne pr metadata (dato, navn, nummer, beskrivelse, henvisninger, m.fl). 

3. Utfordringen jeg ikke får løst er at jeg også ønsker å knytte en del stikkord til hver oppføring, som jeg senere skal kunne bruke for å finne de relevante oppføringene i datasettet. Det blir typisk 3-6 stikkord pr. oppføring. Disse stikkordene er i praksis ulike kjennetegn ved oppføringen. Det blir derfor praktisk viktig å kunne se alle stikkordene ett sted, slik at jeg kan filtrere ut relevante oppføringer basert på de valgte stikkordene. 

4. Jeg har forsøkt å legge inn stikkordene radvis, men da mister jeg koblingen mellom stikkord og de øvrige metadatene.

Jøss! Når jeg sitter og skriver her nå, så får jeg faktisk dette til å fungere. I går fungerte det ikke. Da fikk jeg feilmelding om at sammenslåtte celler ikke kunne filtreres. 

Jeg trodde jeg forsøkte det samme som vises på bilde 1 i går, uten å lykkes. Nå går det imidlertid!

Kolonne F og G er identisk, men det er bare for å illustrere hva jeg var ute etter. Nå kan jeg se alle stikkordene knyttet til språk i én filter-liste (bilde 2). I bilde 3 har jeg filtrert på tysk, og får da opp oppføring nr. 1 og 2, som er de oppføringene med tysk som stikkord. På bilde 4 har jeg filtrert på russisk og får da kun oppføring nr. 2. 

Poenget var altså å kunne filtrere på flere stikkord knyttet til én oppføring, samtidig som jeg kunne se alle potensielle stikkord, for på den måten å vite hvilke valgmuligheter jeg har. 

Etter hvert som databasen blir større og større får jeg da en god oversikt over ulike oppføringer som berører de valgte stikkordene. 

For ikke å miste de øvrige stikkordene når jeg filtrerer så legger jeg til en kolonne som kombinerer stikkordene, slik dere har foreslått. 

Tusen takk for god hjelp!

Bilde 1

image.png.45185d005567172ce7eb6832f13b92f5.png

Bilde 2

image.png.c0b478acecb90e5d045dcf13fb7c8bdc.png

Bilde 3

image.png.b04dde38734fc0efe4dd5adb141c11c5.png

Bilde 4

image.png.f14e8b323bcacaf3fd5f8368ad98632a.png

 

Lenke til kommentar

Du har helt rett. Filen ble ikke lastet ned (er notorisk skeptisk til filnedlasting generelt). Jeg gjorde imidlertid det du skrev (funksjonen heter kjede.sammen på norsk), men da fikk jeg veldig lange oppføringer i filter-listen. 

Jeg kan ikke basere meg på å søke, fordi jeg vet ikke hva alle stikkordene er. Derfor må jeg kunne bla nedover i filter-listen og lese dem hver for seg. 

Lenke til kommentar

Aha, da tror jeg at jeg skjønner hva du er ute etter.

Jeg tror løsningen må bli som følgende (usikker på om mulig uten script):

  • Sett av et eget område (gjerne en separat og kanskje skjult regneark) der du bruker formel for å liste opp alle unike stikkord. Det er jo dette som blir den vanskelige delen.
  • Dernest bruker du det som i Libre Office Calk heter "validity" - dvs at for en gitt celle eller område, så tiller du bare at verdier som tilfredstiller visse vilkår tillates skrevet inn i cellen(e). Dette kan f.ex. være et definert celle-område der du kun får lov å skrive inn verdier som allerede eksisterer i celle-området. Forutsetter at Excel fungerer slik som Calc, ved at valg av stikkord kan gjøres ved tastekombinasjon Alt+pil-ned el.l.
  • Deretter må du klare å lure Excel til å filtrere på denne verdien.

 

[edit]

Har puslet i hop en tenkt løsning vha hjelpeark, men oppdaget et mulig problem. Hvis forutsetning for et filter endrer seg etter at dataene er filtrert, så oppdateres ikke lista over filtrerte rader.

Det var iallefall et problem i Libre Office, du kan prøve i Excel å se om du får det til å fungere bedre der:

Legger også med original regnearkfil (ods) da jeg brukte Libre Office.

frukt-plukk2.ods frukt-plukk2.xlsx

Endret av geir__hk
eksempelfiler
Lenke til kommentar
geir__hk skrev (8 timer siden):

Sett av et eget område (gjerne en separat og kanskje skjult regneark) der du bruker formel for å liste opp alle unike stikkord. Det er jo dette som blir den vanskelige delen.

Er det ikke der formelen Unik kommer inn i bildet? Den henter iallefall alle unike verdier i en liste eller område. 

  • Liker 1
Lenke til kommentar

Et annen tilnærming - som jeg er usikker på om har noe for seg her -  er å flytte kolonneoverskrifter inn som innholdet i én kolonne (C), og deretter angi verdiene i kolonnen ved siden av (D). Dette er svært fleksibelt fordi man da kan opprette de "kolonnene" (som nå er rader) man trenger for hvert tidsskrift.  

image.png.cd6d775cc21a388cee7dcd46e09fbf8c.png

Tror det er nødvendig å ha en entydig identifisering av hvert tidsskrifteksemplar som registreres i kolonne B dersom dette skal gi mening, derfor har jeg satt navnet sammen med årstall og nr i samme kolonne. Når du filtrerer i kolonne D (og du kan filtrere først i kolonne C for bare å filtrere på utvalgte Egenskapstyper), kan du deretter velge de tidsskrift du vil se nærmere på i filteret på kolonne B, for så å slå av filtrene i kolonne C og D - da får du listet alle registreringer på de valgte tidsskrifter. 

Er litt tvilende til at det er til hjelp - men kanskje kan det trigge noen ideer?

Lenke til kommentar
  • 7 måneder senere...
# Programvare: R version 4.3.2 (2023-10-31 ucrt)

install.packages("tidyverse")

library(tidyverse)

setwd("D:/temp/database-frukt")
getwd()    # kontrollerer


# Datafil: "db_frukt_wide.csv:"
# Nr,Tittel,Dato,Stikkord1,Stikkord2,Stikkord3,Stikkord4
# 1,Epler,2002-01-01,Frukt,Rødt,Rundt,Hardt
# 2,Bananer,2003-01-01,Frukt,Gul,Avlang,Myk
# 3,Kiwi,2004-01-01,Frukt,Grønn,egg,Myk


data_wide <- readr::read_csv(file="db_frukt_wide.csv")

data_wide

# # A tibble: 3 × 7
#     Nr Tittel  Dato       Stikkord1 Stikkord2 Stikkord3 Stikkord4
#  <dbl> <chr>   <date>     <chr>     <chr>     <chr>     <chr>
# 1    1 Epler   2002-01-01 Frukt     Rødt      Rundt     Hardt
# 2    2 Bananer 2003-01-01 Frukt     Gul       Avlang    Myk
# 3    3 Kiwi    2004-01-01 Frukt     Grønn     egg       Myk

data_long <- data_wide %>%
    tidyr::pivot_longer(
        cols = c("Stikkord1", "Stikkord2", "Stikkord3", "Stikkord4"),
        names_to = "Stikkord",
        values_to = "Verdi"
    )

data_long

# A tibble: 12 × 5
#       Nr Tittel  Dato       Stikkord  Verdi
#    <dbl> <chr>   <date>     <chr>     <chr>
#  1     1 Epler   2002-01-01 Stikkord1 Frukt
#  2     1 Epler   2002-01-01 Stikkord2 Rødt
#  3     1 Epler   2002-01-01 Stikkord3 Rundt
#  4     1 Epler   2002-01-01 Stikkord4 Hardt
#  5     2 Bananer 2003-01-01 Stikkord1 Frukt
#  6     2 Bananer 2003-01-01 Stikkord2 Gul
#  7     2 Bananer 2003-01-01 Stikkord3 Avlang
#  8     2 Bananer 2003-01-01 Stikkord4 Myk
#  9     3 Kiwi    2004-01-01 Stikkord1 Frukt
# 10     3 Kiwi    2004-01-01 Stikkord2 Grønn
# 11     3 Kiwi    2004-01-01 Stikkord3 egg
# 12     3 Kiwi    2004-01-01 Stikkord4 Myk

readr::write_excel_csv(data_long, "db_frukt_long.csv")


# For å gå tilbake fra lang- til bredformat bruker du funksjonen `pivot_longer()`:

data_long %>%
    tidyr::pivot_wider(
        names_from = "Stikkord",
        values_from = "Verdi"
)

# # A tibble: 3 × 7
#      Nr Tittel  Dato       Stikkord1 Stikkord2 Stikkord3 Stikkord4
#   <dbl> <chr>   <date>     <chr>     <chr>     <chr>     <chr>
# 1     1 Epler   2002-01-01 Frukt     Rødt      Rundt     Hardt
# 2     2 Bananer 2003-01-01 Frukt     Gul       Avlang    Myk
# 3     3 Kiwi    2004-01-01 Frukt     Grønn     egg       Myk

Her er et eksempel på hvordan man kan gå fra mange kolonner og få rader (wide) til få kolonner og mange rader (long) i R.

Kan dette brukes i ditt tilfelle?

Endret av jazzlyn
Skrivefeil.
Lenke til kommentar
  • 2 måneder senere...

Nytt løsningsforslag, som også denne gang ikke er i Excel, men det nærmer seg ... :-)

- Programvare: Calc, LibreOffice_24.2.1_Win_x86-64.msi

- LibreOffice Extension: Decroise v.1.8.5 (fra 2009/2010 !!!)
Lastet den ned fra LibreOffice Calc: Tools > Extensions... > lenken "Get more extensions online..." > Søk: decroise

 

Resultattabellen mangler kolonneoverskrifter, så de må legges inn manuelt (gulorange bakgrunnfarge)

libreoffice-extension--decroise-v2.thumb.png.ae727d36c63e3039d141ad7656dac0cf.png

Kolonne "Verdi" i resultattabellen kan nå filtreres, eller du kan laste resultattabellen inn  i en database, og jobbe videre med den der.

 

Den følgende skjermdumpen viser at "decroise" også håndterer doble rad- og kolonnenavn.


libreoffice-extension--decroise-doble-rad-kolonnenavn-v2.png.56268336498b1d593894931afdace09e.png

Endret av toiota
Setningsomskriving; skjermdumper: Lagt til ei pil; Endret rad- og kolonnenavn: [ C ][ C ] --> [ C ], osv.
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...