Indholdsfortegnelse
Hvis du har fulgt denne blog i et stykke tid, kan du måske huske QUERY-funktionen til Google Sheets. Jeg har nævnt den som en mulig løsning i et par tilfælde. Men det er langt fra nok til at afdække dens fulde potentiale. I dag er det på høje tid, at vi lærer denne regnearkssuperhelt ordentligt at kende. Og gæt engang - et lige så bemærkelsesværdigt værktøj vil også være der :)
Vidste du, at Google Sheets QUERY-funktionen anses for at være den mest kraftfulde funktion i regneark? Dens særlige syntaks giver mulighed for snesevis af forskellige operationer. Lad os prøve at bryde dens dele ned for at lære dem én gang for alle, ikke sandt?
Syntaks for Google Sheets QUERY-funktionen
Ved første øjekast er Google Sheets QUERY blot endnu en funktion med 1 valgfrit og 2 obligatoriske argumenter:
=QUERY(data, forespørgsel, [headers])- data er det område, der skal behandles. Det er nødvendigt. Alt er krystalklart her.
Bemærk. Kun en lille påmindelse her, som er fastsat af Google: Hver kolonne skal indeholde én datatype: tekst, numerisk eller boolsk. Hvis der er forskellige typer, vil QUERY arbejde med den type, der forekommer mest. Andre typer vil blive betragtet som tomme celler. Det er mærkeligt, men husk på det.
- forespørgsel er den måde at behandle data . Nødvendig. Det er her, det sjove begynder. Google Sheets QUERY-funktionen bruger et særligt sprog til dette argument: Google Visualization API forespørgselssprog Det er skrevet på en måde, der ligner SQL. Det er grundlæggende et sæt af specielle klausuler (kommandoer), der bruges til at fortælle funktionen, hvad den skal gøre: select, group by, limit osv.
Bemærk. Hele argumentet skal være omsluttet af dobbelte anførselstegn. Værdierne skal på deres side omsluttes af anførselstegn.
- overskrifter er valgfri, hvis du har brug for at angive antallet af overskriftsrækker i dine data. Hvis du udelader argumentet (som jeg gør nedenfor), vil Google Sheets QUERY antage det baseret på indholdet af din tabel.
Lad os nu grave dybere ned i klausulerne og deres funktion.
Klausuler, der anvendes i Google Sheets QUERY-formler
Query language består af 10 klausuler. De kan skræmme ved første øjekast, især hvis du ikke er bekendt med SQL. Men jeg lover dig, at når du først lærer dem at kende, får du et effektivt regnearksvåben til din rådighed.
Jeg vil gennemgå hver enkelt sætning og give eksempler på formler ved hjælp af denne liste over imaginære studerende og deres papirfag:
Jep, jeg er en af de tosser, der mener, at Pluto burde være en planet :)
Tip. Der kan bruges flere klausuler i en Google Sheets QUERY-funktion. Hvis du integrerer dem alle, skal du sørge for at følge rækkefølgen i denne artikel.
Vælg (alle eller bestemte kolonner)
Den allerførste bestemmelse - Vælg - bruges til at angive, hvilke kolonner du skal returnere med Google Sheets QUERY fra et andet ark eller en anden tabel.
Eksempel 1. Vælg alle kolonner
For at hente hver enkelt kolonne skal du bruge Vælg med en asterisk - Vælg *
=QUERY(Papirer!A1:G11, "select *")
Tip. Hvis du udelader Vælg parameter, returnerer Google Sheets QUERY som standard alle kolonnerne:
=QUERY(Papirer!A1:G11)
Eksempel 2. Vælg bestemte kolonner
Hvis du kun vil trække bestemte kolonner ud, skal du angive dem efter Vælg klausul:
=QUERY(Papers!A1:G11, "select A,B,C")
Tip. De interessante kolonner kopieres i samme rækkefølge som du nævner dem i formlen:
=QUERY(Papers!A1:G11, "select C,B,A")
Google Sheets QUERY - Hvor-klausul
Google Sheets QUERY hvor bruges til at fastsætte betingelserne for de data, du ønsker at få fat i. Med andre ord fungerer den som et filter.
Hvis du bruger denne klausul, vil QUERY-funktionen til Google Sheets søge i kolonnerne efter værdier, der opfylder dine betingelser, og hente alle de tilsvarende værdier tilbage til dig.
Tip. Hvor kan fungere uden den Vælg klausul.
Som sædvanlig er der for at specificere betingelserne et sæt af særlige operatører til dig:
- enkle sammenligningsoperatører ( for numeriske værdier ): =, , ,>,>=, <, <=, <=
- komplekse sammenligningsoperatører ( for strenge ): indeholder, starter med, slutter med, passer til, != (passer ikke til / er ikke lig med), som .
- logiske operatorer til kombinere flere betingelser : og, eller, eller, ikke .
- operatører for tom / ikke tom : er nul, er ikke nul .
Tip. Hvis du er ked af eller bekymret over at skulle håndtere et så stort antal operatorer igen, forstår vi dig godt. Vores Multiple Vlookup Matches finder alle match og opbygger om nødvendigt QUERY-formler i Google Sheets for dig.
Lad os se, hvordan disse operatorer opfører sig i formler.
Eksempel 1. Hvor med tal
Jeg vil tilføje hvor til min Google Sheets QUERY fra ovenfor for at få oplysninger om de planeter, der har mere end 10 måner:
=QUERY(Papers!A1:G11, "select A,B,C,F where F>=10")
Tip. Jeg nævnte også kolonne F, der skal hentes for at sikre, at kriteriet er opfyldt. Men det er helt valgfrit. Du behøver ikke at inkludere kolonner med betingelser i resultatet:
=QUERY(Papers!A1:G11, "select A,B,C where F>=10")
Eksempel 2. Hvor med tekststrenge
- Jeg vil se alle rækker, hvor karakteren enten er F eller F+ . jeg vil bruge den indeholder operatør til dette:
=QUERY(Papers!A1:G11, "select A,B,C,G where G contains 'F'")
Bemærk. Husk at omgive din tekst med anførselstegn.
- For at få alle rækker med F kun, skal du blot erstatte indeholder med et lighedstegn (=):
=QUERY(Papers!A1:G11, "select A,B,C,G where G="F""")
- For at kontrollere de papirer, der endnu ikke er afleveret (hvor der mangler en karakter), skal du kontrollere kolonnen G for blanko:
=QUERY(Papers!A1:G11, "select A,B,C,G where G is null'")
Eksempel 3. Hvor med datoer
Gæt engang: Google Sheets QUERY har endda formået at tæmme datoer!
Da regneark gemmer datoer som løbenumre, er du normalt nødt til at bruge specielle funktioner som DATE eller DATEVALUE, ÅR, MÅNED, TID osv.
Men QUERY har fundet ud af at håndtere datoer. For at indtaste dem korrekt skal du blot skrive ordet dato og derefter tilføje selve datoen formateret som ååååå-mm-dd: dato '2020-01-01'
Her er min formel til at få alle rækker med en taledato før 1. januar 2020:
=QUERY(Papers!A1:G11, "select A,B,C where B
Eksempel 4. Kombinér flere betingelser
Hvis du vil bruge en bestemt periode som kriterium, skal du kombinere to betingelser.
Lad os prøve at finde de artikler, der blev leveret i efteråret 2019. Det første kriterium bør være en dato den 1. september 2019 eller senere , den anden - senest den 30. november 2019 :
=QUERY(Papers!A1:G11, "select A,B,C where B>=datoen '2019-09-01' og B<=datoen '2019-11-30'")
Eller jeg kan udvælge artikler på grundlag af disse parametre:
- inden den 31. december 2019 ( B
) - har enten A eller A+ som karakter ( G indeholder "A )
- eller B/B+ ( G indeholder "B". )
=QUERY(Papers!A1:G11, "select A,B,C,G where B
Tip. Hvis dit hoved er ved at eksplodere allerede nu, skal du ikke give op endnu. Der findes et værktøj, der er perfekt i stand til at bygge alle disse formler for dig, uanset antallet af kriterier. Hop direkte til slutningen af artiklen for at lære det at kende.
Google Sheets QUERY - Gruppering efter
Google Sheets QUERY gruppe efter kommandoen bruges til at sammenkæde rækker. Du bør dog bruge nogle aggregeringsfunktioner for at opsummere dem.
Bemærk. Gruppere efter skal altid følge den Vælg klausul.
Desværre er der ikke noget at gruppere i min tabel, da der ikke er nogen tilbagevendende værdier. Så lad mig justere den lidt.
Lad os antage, at alle opgaverne kun skal udarbejdes af 3 elever. Jeg kan finde den højeste karakter, som hver enkelt elev har fået. Men da de er bogstaver, er det MIN-funktionen, jeg skal anvende på kolonne G:
=QUERY(Papers!A1:G11, "select A,min(G) group by A")
Bemærk. Hvis du ikke bruger en aggregeringsfunktion med en kolonne i Vælg klausul (kolonne A i mit eksempel), skal du duplikere dem alle i den gruppe efter klausul.
Google Sheets QUERY - Pivot
Google Sheets QUERY pivot klausulen fungerer omvendt, hvis jeg må sige det sådan: Den omsætter data fra en kolonne til en række med nye kolonner og grupperer andre værdier i overensstemmelse hermed.
For dem af jer, der har med datoer at gøre, kan det være en rigtig opdagelse. I vil kunne få et hurtigt overblik over alle de forskellige årstal fra denne kildekolonne.
Bemærk. Når det drejer sig om pivot , hver kolonne, der anvendes i Vælg klausulen skal være dækket af en aggregeret funktion. Ellers skal det nævnes i gruppe efter kommandoen efter din pivot .
Husk, at min tabel nu kun nævner 3 studerende. Jeg vil få funktionen til at fortælle mig, hvor mange rapporter hver studerende har lavet:
=QUERY(Papirer!A1:G11, "select count(G) pivot A")
Google Sheets QUERY - Bestil efter
Denne er ret nem :) Den bruges til at sortere resultatet efter værdierne i bestemte kolonner.
Tip. Alle de foregående sætninger er valgfrie, når der anvendes rækkefølge efter . jeg bruger Vælg til at returnere færre kolonner til demonstrationsformål.
Lad os gå tilbage til min oprindelige tabel og sortere rapporterne efter taledato.
Denne næste Google Sheets QUERY-formel giver mig kolonnerne A, B og C, men sorterer dem samtidig efter dato i kolonne B:
=QUERY(Papers!A1:G11, "select A,B,C order by B")
Grænse
Hvad hvis jeg fortalte dig, at du ikke behøver at tage hver eneste række med i resultatet? Hvad hvis jeg fortalte dig, at Google Sheets QUERY kun kan trække en vis mængde af de første match, den finder?
Tja, den grænse klausulen er designet til at hjælpe dig med dette. Den begrænser antallet af rækker, der skal returneres, med det angivne antal.
Tip. Du er velkommen til at bruge grænse uden andre forudgående klausuler.
Denne formel viser de første 5 rækker, hvor kolonnen med karakterer indeholder en karakter (ikke er tom):
=QUERY(Papers!A1:G11, "select A,B,C,G where G is not null limit 5")
Offset
Denne bestemmelse er lidt modsat af den foregående. Mens grænse giver dig det antal rækker, du har angivet, offset springer dem over og henter resten.
Tip. Offset kræver heller ikke andre klausuler.
=QUERY(Papers!A1:G11, "select A,B,C,G where G is not null offset 5")
Hvis du forsøger at bruge både grænse og offset , sker følgende:
- Offset springer rækker i begyndelsen over.
- Grænse returnerer et antal af de følgende rækker.
=QUERY(Papers!A1:G11, "select A,B,C,G where G is not null limit 3 offset 3")
Ud af 11 datarækker (den første er en overskrift, og QUERY-funktionen i Google Sheets er god til at forstå det), springer offset de første 3 rækker over. Limit returnerer 3 næste rækker (startende fra den 4. række):
Google Sheets QUERY - Etiket
Google Sheets QUERY etiket kommandoen kan du ændre kolonnernes overskriftsnavne.
Tip. Andre klausuler er valgfrie for etiket også.
Sæt den etiket først, efterfulgt af kolonne-ID og et nyt navn. Hvis du omdøber få kolonner, skal du adskille hvert nyt par kolonne-label med et komma:
=QUERY(Papers!A1:G11, "select A,B,C label A 'Navn', B 'Dato'")
Format
format klausulen gør det muligt at ændre formatet for alle værdier i en kolonne. Til det formål skal du bruge et mønster, der står bag det ønskede format.
Tip. Formatklausulen kan også spille solo i Google Sheets QUERY.
=QUERY(Papers!A1:G11, "select A,B,C limit 3 format B 'mm-dd, yyyy, ddd'")
Tip. Jeg nævnte nogle datoformater til Google Sheets QUERY i dette blogindlæg. Andre formater kan tages direkte fra regneark: Format> Antal> Flere formater> Brugerdefineret nummerformat .
Indstillinger
Denne bruges til at angive nogle yderligere indstillinger for udfaldsdataene.
For eksempel kan en kommando som no_values returnerer kun formaterede celler.
Den hurtigste måde at opbygge QUERY-formler på - flere Vlookup-matches
Uanset hvor kraftfuld QUERY-funktionen i Google Sheets er, kan det kræve en indlæringskurve at få styr på den. Det er én ting at illustrere hver klausul separat på en lille tabel, og noget helt andet at forsøge at opbygge det hele korrekt med nogle få klausuler og en meget større tabel.
Derfor har vi besluttet at give Google Sheets QUERY en brugervenlig grænseflade og gøre det til et tillægsprogram.
Hvorfor er flere VLOOKUP-matches bedre end formler?
Nå, med tilføjelsen er der absolut ingen grund til at :
- finde ud af noget om disse klausuler Det er virkelig nemt at oprette mange komplekse betingelser i tilføjelsesprogrammet: så mange som du har brug for, uanset rækkefølgen for at hente så mange kampe som du har brug for.
Bemærk. På nuværende tidspunkt er følgende klausuler blevet indarbejdet i værktøjet: select, where, limit, og offset Hvis din opgave også kræver andre klausuler, bedes du kommentere nedenfor - måske kan du hjælpe os med at forbedre den ;)
- ved, hvordan man indtaste operatører : du skal bare vælge den fra en rulleliste.
- gå i tænkeboks over den korrekte måde at indtaste dato og klokkeslæt på Med tilføjelsesprogrammet kan du indtaste dem som før, baseret på dit regneblads sprogområde.
Tip. Der er altid et tip tilgængeligt i værktøjet med eksempler på forskellige datatyper.
Som en bonus vil du kunne:
- forhåndsvisning både den resultat og formlen
- lave hurtige justeringer til dine kriterier
- vælge en sted for resultatet
- indsæt resultatet som både QUERY-formel eller som værdier
Selv om GIF'en er blevet fremskyndet, tog det mig mindre end et minut at finjustere alle kriterierne og få resultatet:
Hvis du er nysgerrig nok, kan du her se en detaljeret video, der viser, hvordan tilføjelsen fungerer:
Jeg håber, at du vil give tilføjelsen en chance og hente den fra Google Workspace Marketplace. Vær ikke genert, og del din feedback, især hvis der er noget ved den, du ikke kan lide.
Du er også velkommen til at tjekke deres vejledningsside eller forside.