Innehållsförteckning
Visste du att när du slår ihop två Google-ark kan du inte bara uppdatera poster i en kolumn utan även dra fram hela relaterade kolumner och till och med rader som inte matchar varandra? Idag ska jag visa dig hur det går till med hjälp av funktionerna VLOOKUP, INDEX/MATCH, QUERY och tillägget Merge Sheets.
Förra gången jag pratade om att slå ihop två Google-ark delade jag med mig av olika sätt att matcha och uppdatera data. Den här gången ska vi fortfarande uppdatera celler, men vi ska också dra andra relaterade kolumner och rader som inte matchar varandra.
Här är min uppslagstabell, från vilken jag kommer att hämta alla nödvändiga uppgifter i dag:
Den har blivit större den här gången: den har två extra kolumner med leverantörsnamn och deras betyg. Jag kommer att uppdatera kolumnen Lager med denna information i en annan tabell och kommer också att ta fram leverantörer. Tja, kanske betyg också :)
Som vanligt kommer jag att använda några funktioner och ett speciellt tillägg för jobbet.
Slå ihop Google-ark & lägg till relaterade kolumner med VLOOKUP
Minns du VLOOKUP i Google Sheets? Jag använde det i min tidigare artikel för att matcha data och uppdatera vissa celler.
Om den här funktionen fortfarande skrämmer dig, är det hög tid att ta itu med den och lära dig den en gång för alla, för jag kommer att använda den i dag också :)
Tips: Om du letar efter en snabb lösning för att spara tid, ska du genast gå till Merge Sheets.
Låt oss göra en snabb sammanfattning av formelsyntaxen:
=VLOOKUP(search_key, range, index, [is_sorted])- Sök_nyckel är vad du letar efter.
- sortiment är vad du letar efter.
- index är numret på den kolumn som värdet ska returneras från.
- [is_sorted] är helt valfri och anger om nyckelkolumnen är sorterad.
Tips: Det finns en hel handledning om Google Sheets VLOOKUP på vår blogg, ta gärna en titt.
När jag slog ihop två Google-ark och bara uppdaterade uppgifterna i kolumnen Lager använde jag denna VLOOKUP-formel:
=ArrayFormula(IFERROR(VLOOKUP($B$2:$B$10,Sheet1!$B$2:$D$10,2,FALSE),"""))
IFERROR säkerställde att det inte fanns några fel i celler utan matchningar och ARRAYFORMULA bearbetade hela kolumnen på en gång.
Så vilka ändringar måste jag göra för att ta fram leverantörer som en ny kolumn från uppslagstabellen också?
Eftersom det är den index som talar om för Google Sheets VLOOKUP vilken kolumn den ska hämta data från, kan man säga att det är den som behöver justeras.
Det enklaste sättet är att bara kopiera formeln till den angränsande kolumnen och öka dess index med en (ersätta 2 med 3 ):
=ArrayFormula(IFERROR(VLOOKUP($B$2:$B$10,Sheet1!$B$2:$D$10,3,FALSE),"""))
Du måste dock infoga samma formel med ett annat index så många gånger som du vill få ytterligare kolumner.
Lyckligtvis finns det ett bättre alternativ, nämligen att skapa matriser. Med matriser kan du kombinera alla kolumner som du vill ta fram i ett index.
När du skapar en matris i Google Sheets listar du värden eller cell-/intervallreferenser inom parentes, t.ex. ={1, 2, 3} eller . ={1; 2; 3}
Hur dessa poster placeras i ett ark beror på avgränsaren:
- Om du använder ett semikolon kommer siffrorna att ta upp olika rader i en kolumn:
Det sistnämnda är precis vad du behöver göra i Google Sheets VLOOKUP-indexargumentet.
Eftersom jag slår samman Google-ark, uppdaterar den andra kolumnen och drar den tredje kolumnen måste jag skapa en array med dessa kolumner: {2, 3} :
=ArrayFormula(IFERROR(VLOOKUP($B$2:$B$10,Sheet1!$B$2:$D$10,{2,3},FALSE),"""))
På så sätt kan en VLOOKUP-formel i Google Sheets matcha namn, uppdatera lagerinformation och lägga till relaterade leverantörer i en tom kolumn intill.
Matcha & slå ihop ark och lägg till kolumner med INDEX MATCH
Nästa funktion är INDEX MATCH. Dessa två funktioner konkurrerar tillsammans med VLOOKUP eftersom de kringgår dess begränsningar när du slår ihop Google-ark.
Tips: Lär känna INDEX MATCH för Google Sheets i den här handledningen.
Låt mig börja med att påminna dig om formeln som helt enkelt slår ihop en kolumn baserat på matchningar:
=IFERROR(INDEX(Sheet1!$C$1:$C$10,MATCH(B2,Sheet1!$B$1:$B$10,0)),""")
I denna formel, Blad1!$C$1:$C$10 är en kolumn med de värden du behöver när Blad1!$B$1:$B$10 uppfyller samma värde som i B2 i den aktuella tabellen.
Med dessa punkter i åtanke är det Blad1!$C$1:$C$10 som du måste ändra för att inte bara slå ihop tabeller och uppdatera celler utan också lägga till kolumner.
Till skillnad från Google Sheets VLOOKUP är det inget märkvärdigt här. Du anger bara intervallet med alla de nödvändiga kolumnerna: den som ska uppdateras och andra som ska läggas till. I mitt fall blir det Blad1!$C$1:$D$10 :
=IFERROR(INDEX(Sheet1!$C$1:$D$10,MATCH(B2,Sheet1!$B$1:$B$10,0)),""")
Eller så kan jag utöka intervallet till E10 för att lägga till två kolumner, inte bara en:
=IFERROR(INDEX(Sheet1!$C$1:$E$10,MATCH(B2,Sheet1!$B$1:$B$10,0)),""")
Observera att de extra posterna alltid hamnar i de angränsande kolumnerna. Om dessa kolumner kommer att ha andra värden kommer formeln inte att skriva över dem, utan du får ett #REF-fel med en motsvarande upplysning:
När du rensar dessa celler eller lägger till nya kolumner till vänster om dem visas formelns resultat.
Slå ihop Google-ark, uppdatera celler & lägg till relaterade kolumner - allt med QUERY
QUERY är en av de mest kraftfulla funktionerna i Google kalkylblad, så det är ingen överraskning att jag ska använda den idag för att slå ihop några Google-ark, uppdatera celler och lägga till extra kolumner samtidigt.
Den här funktionen skiljer sig från andra eftersom ett av dess argument använder ett kommandospråk.
Tips: Om du undrar hur du använder Google Sheets QUERY-funktionen kan du läsa det här blogginlägget.
Vi påminner om formeln som uppdaterar cellerna först:
=IFERROR(QUERY(Sheet1!$A$2:$C$10, "select C where&QUERY!$B2:$B$10&"""),""),"")
Här tittar QUERY på tabellen med de nödvändiga uppgifterna i blad 1, jämför cellerna i kolumn B med min nya tabell och sammanfogar dessa blad: hämtar uppgifter från kolumn C för varje matchning. IFERROR håller resultatet felfri.
För att lägga till extra kolumner för dessa matcher måste du göra två små ändringar i formeln:
- en förteckning över alla nödvändiga kolumner för Välj kommandot:
...välja C,D,E...
- utvidga sortimentet för att se ut i enlighet med detta:
...QUERY(Sheet1!$A$2:$E$10,...
Här är en fullständig formel:
=IFERROR(QUERY(Sheet1!$A$2:$E$10, "select C,D,E where&Sheet4!$B2:$B$10&"""),""),"")
Den uppdaterar lagerkolumnen och hämtar två extra kolumner från uppslagstabellen till huvudtabellen.
Hur du lägger till rader som inte matchar varandra med FILTER + VLOOKUP
Tänk dig detta: du slår ihop två Google-ark, uppdaterar gammal information med den nya och får nya kolumner med extra relaterade värden.
Vad kan du göra mer för att få en fullständig bild av de aktuella dokumenten?
Kanske kan du lägga till rader som inte matchar i slutet av tabellen? På så sätt har du alla värden på ett och samma ställe: inte bara matchningar med uppdaterad relaterad information, utan även icke-matchningar för att få dem att räknas.
Jag blev positivt överraskad av att Google Sheets VLOOKUP kan göra det. När den används tillsammans med FILTER-funktionen slås Google Sheets samman och lägger till rader som inte matchar varandra.
Tips: I slutet kommer jag också att visa hur ett tilläggsprogram gör samma sak med en enda kryssruta.
Google Sheets FILTER-argument är ganska tydliga:
=FILTER(intervall, villkor1, [villkor2, ...])- sortiment är de data som du vill filtrera.
- villkor1 är en kolumn eller rad med ett filtreringskriterium.
- kriterier2, kriterier3 osv. är helt frivilliga. Använd dem när du behöver använda flera kriterier.
Tips: Du kan läsa mer om Google Sheets FILTER-funktionen i det här blogginlägget.
Så hur kan dessa två funktioner samarbeta och sammanfoga Google-ark? FILTER returnerar data baserat på de filterkriterier som skapats av VLOOKUP.
Titta på denna formel:
=FILTER(Sheet1!$A$2:$E$10,ISERROR(VLOOKUP(Sheet1!$B$2:$B$10,$B$2:$C$10,2,FALSE)=1))
Den genomsöker två Google-tabeller för att hitta matchningar och drar de rader som inte matchar varandra från den ena tabellen till den andra:
Låt mig förklara hur det fungerar:
- FILTER går till uppslagsbladet (en tabell med alla data - Blad1!$A$2:$E$10 ) och använder VLOOKUP för att få fram rätt rader.
- VLOOKUP tar namnen på objekten i kolumn B i det uppslagsbladet och jämför dem med namnen i min aktuella tabell. Om det inte finns någon överensstämmelse säger VLOOKUP att det är ett fel.
- ISERROR markerar varje sådant fel med 1, vilket säger till FILTER att ta med denna rad till ett annat ark.
Som ett resultat av detta tar formeln fram ytterligare tre rader för de bär som inte förekommer i min huvudtabell.
Det är inte så komplicerat när du leker lite med den här metoden :)
Men om du inte vill ägna din tid åt detta finns det ett bättre och snabbare sätt - utan en enda funktion eller formel.
Formelfritt sätt att matcha & sammanfoga data - tilläggsmodul Merge Sheets
Tillägget Merge Sheets omfattar alla tre möjligheter när du slår ihop Google-ark:
- Den uppdaterar relaterade celler baserat på matchningarna.
- lägger till nya kolumner för dessa träffar
- infogar rader med poster som inte matchar varandra
För att undvika förvirring är processen uppdelad i följande delar 5 enkla steg :
- De två första är där du är välj dina bord även om de finns i olika kalkylblad.
- På den 3d ska du Välj nyckelkolumn(er). som ska kontrolleras för matchningar.
- 4:e steget låter dig ange de kolumner som ska uppdateras med nya poster eller lägga till från ett ark till ett annat:
Det tog några sekunder innan jag kunde se resultatet:
Installera Merge Sheets från Google Sheets-butiken och du kommer att se att den bearbetar större tabeller lika snabbt. Tack vare Merge Sheets får du mer tid för viktiga saker.
Jag lämnar också denna 3-minuters demovideo för att hjälpa dig att bestämma dig :)
Kalkylblad med exempel på formler
Slå samman Google-ark, lägg till relaterade kolumner & icke-matchande rader - formelexempel (gör en kopia av kalkylbladet)