อัพเดทใหญ่ Google Sheets ฟีเจอร์ใหม่เพียบ (ส.ค. 2022)

Google อัพเดท 10 ฟีเจอร์ใหม่ของ Google Sheets (คือ copy Microsoft Excel หมายถึงได้แรงบันดาลใจ แซว 555+) แอดลองเล่นแล้วนี่คือมิติใหม่ของการใช้ Spreadsheets ทำงานเลย

Table of Contents

Google Sheets เป็นมากกว่าแค่ Spreadsheets แต่เป็น Programming Language ย่อยๆที่โฟกัสที่การทำงานกับ dataset เราสามารถประกาศตัวแปรได้ด้วย named range และล่าสุดเขียน function ไว้ใช้งานเองด้วยฟีเจอร์ named function

New Features

  • Named Function เขียน function ไว้ใช้งานเองได้แล้ว 🤩
  • XLOOKUP
  • XMATCH
  • LAMBDA
  • MAP
  • REDUCE
  • MAKEARRAY
  • SCAN
  • BYROW
  • BYCOL
  • New Data Connectors ต่อตรงไปที่ Google BigQuery

อ่านอัพเดท Google Sheets อย่างเป็นทางการได้ที่ blog Google Workspace Updates สำหรับการ rollout features ใหม่จะใช้เวลาประมาณสองสัปดาห์ แอดคิดว่าทุกคนน่าจะใช้ functions ใหม่ได้ภายในเดือน ก.ย. นี้

บทความนี้แอดจะเขียนรีวิวสั้นๆ ความสามารถใหม่ของ Sheets ให้ลองอ่านกัน มาลุยกันเลยครับ

LAMBDA

ส่วนตัวแอดยกให้ LAMBDA เป็น game changer ใน spreadsheets tools เลย เหมือนเราเขียน custom + anonymous function (ฟังก์ชันแบบไม่มีชื่อ) ไว้ใช้งานแบบเร็วๆ เช่น

=LAMBDA(x, x * 2)(250)
=LAMBDA(temp, (5/9)*(temp-32))(90)

Lambda function 1 เรารับ input x และส่ง output x*2 ลอง test กับ new input 250 ถ้าเรากดรันก็จะได้ 500 เป็นผลลัพธ์กลับมา ส่วน lambda function 2 ใช้เปลี่ยนอุณหภูมิจาก Fahrenheit -> Celsius

MAP & REDUCE

Functions MAP() กับ REDUCE() ยืมมาจาก programming concept เลย อันนี้ทีเด็ด 555+

  • Map a function to a list of values
  • Reduce list of values to a [single] value

ถ้าใครเขียน code เป็นอยู่แล้ว concept ของ map/ reduce น่าจะเข้าใจได้ไม่ยาก ภาษายอดนิยมอย่าง JavaScript และ Python ก็มี native functions พวกนี้ให้ใช้งานเลย

อธิบายเป็นภาษาคนง่ายๆ (non-programmer) map คือการใช้ฟังก์ชันสร้าง array ใหม่ ส่วน reduce ใช้ลดรูป array เดิมเป็นค่าๆหนึ่งที่เราต้องการ เช่น การหาผลรวม sum ในตัวอย่างด้านล่าง

# MAP example
=MAP(A1:A10, LAMBDA(friend, CONCATENATE("Hello ", friend)))

# REDUCE example
=REDUCE(0, B1:B10, LAMBDA(salary, value, salary+value))

ส่วนตัวแอดคิดว่าในแง่ use cases น่าจะได้ใช้ MAP บ่อยกว่า REDUCE เอาไว้ Google เปิดให้เล่นฟังก์ชันนี้เมื่อไหร่ แอดมาเขียนรีวิวการใช้งานให้อ่านอีกทีนะครับ 😆

XLOOKUP

Excel เปิดตัว XLOOKUP() มาหลายปีแล้ว วันนี้ถึงคิวของ Sheets ซักที โดย XLOOKUP เกิดมาเพื่อใช้แทน VLOOKUP ได้เลย i.e. เหมือนเป็น flexible vlookup function

ความแตกต่างหลักๆคือใช้งานง่ายกว่า VLOOKUP สามารถจัดการ missing value ได้ด้วย เวลาหาค่าไม่เจอ ถ้าเป็น VLOOKUP จะส่งค่า error #N/A กลับมา

=XLOOKUP(search_key, lookup_range, result_range, [optional parameters])
=XLOOKUP("Jisoo", A1:A10, B1:B10)

ตัวอย่างนี้อ่านเป็นภาษาไทยได้ว่าจงหาชื่อ Jisoo ในคอลัมน์ A1:A10 ถ้าเจอ match ให้ส่งค่าในคอลัมน์ B1:B10 กลับมา ได้ผลลัพธ์เหมือนเขียน VLOOKUP("Jisoo", A1:B10, 2, FALSE)

BYROW & BYCOL

BYROW() และ BYCOL() คือการ apply function ไปตาม row และ column ในตารางข้อมูล ถ้าเราเขียนโปรแกรมใน R, Python ก็เหมือนการเขียน loop วิ่งทีละแถวหรือทีละคอลัมน์เพื่อหาค่าที่เราต้องการ

ตัวอย่างการเขียน loop หาค่าเฉลี่ยทุกคอลัมน์ใน R

# example loop in R
for (i in 1:ncol(data)) {
  avg_col <- mean(data[[i]])
  print(avg_col)
}

มาลองดูตัวอย่าง BYCOL ใน Google Sheets กันบ้าง สมมติเรามีข้อมูลอยู่ใน range A1:D10

=BYCOL(A1:D10, LAMBDA(col, AVERAGE(col)) )

Formula ใน sheets สั้นกว่าเยอะเลยแต่ได้ผลเหมือนกัน ทำไมมันง่ายอย่างนี้ 555+ ไม่ต้องเขียน loop ให้เมื่อยมือ ใช้คู่กับ lambda หรือ named function สบายๆ

Named Functions

ถ้าเราต้องการสร้าง function ไว้ใช้เองใน Google Sheets สมัยก่อนเราต้องเปิดหน้าต่าง script ขึ้นมา แล้วเขียน Apps Script เอง (ภาษาคล้ายๆ JavaScript) ซึ่งใช้เวลาพอสมควร แต่วันนี้เราสร้าง named function ได้ง่ายๆแล้วที่เมนู Data อยากใช้แล้ว 555+

อันนี้แอดก็รู้สึก wow ไม่แพ้ฟีเจอร์ใหม่อื่นๆเลย เพราะเรายืม named function concept มาจากโลก programming (อีกแล้ว 555+) ง่ายจนงง ลองเปรียบเทียบโค้ด python vs. sheets ด้านล่าง

# example python function
def hello(name):
    return "Hello " + name

ถ้าเราอยากจะสร้าง function นี้ใน sheets แค่ไปที่เมนู Data > Named functions และประกาศ function ใหม่ได้เลย ทำไมมันง่ายอย่างนี้

Function Name: HELLO
Function Description/ About: say Hello to a user
Argument Placeholders: name
Example: HELLO("Lisa")

ตัวอย่าง named function CONTAINS(cell, range) จาก Google Sheets document พอเราประกาศ function เสร็จแล้วก็เรียกใช้งานมันได้เหมือน function ทั่วไปเลย

Formula ที่เราเคยเขียนสมัยก่อนแบบยาวๆ สามารถ abstract มันเป็น name function แบบที่เราต้องการได้เลย ใช้ร่วมกับ MAP, REDUCE, BYROW, BYCOL ได้ด้วย ไม่อยากจะคิด สุดต๊าซ 555+

Connect to BigQuery

ฟีเจอร์สุดท้าย จริงๆเปิดตัวมาซักระยะแล้ว แอดว่ามีประโยชน์อย่างมากสำหรับคนทำงานสาย data

Google Sheets เพิ่มฟีเจอร์ Data Connectors ให้เราต่อไปที่ BigQuery (Cloud Data Warehouse) ได้แล้ว แปลว่าเราสามารถดึงข้อมูลหลายล้าน records มาทำ pivot table/ report ผ่าน Google Sheets ได้เลย แบบไม่ต้องเขียน SQL group by + aggregate ให้ยุ่งยาก

Data Connectors ต่อไปที่ BigQuery ได้แล้ว

เราสามารถเขียน SQL เพื่อ extract ข้อมูลบางส่วนมาเก็บไว้ใน Google Sheets ได้ แต่ limitation ของ Sheets ตอนนี้จะเก็บข้อมูลได้ 10 ล้าน cells (เพิ่มจาก 5 ล้าน ตอนเดือน มี.ค. 2022 ที่ผ่านมา – ที่มา Google)

สมัยก่อนเหมือนฟีเจอร์นี้จะใช้ได้แค่ Workspace Users เท่านั้น แต่ตอนนี้แค่มี google account ก็ใช้ได้เลย ต้องเขียนบทความมาสอนใช้งานฟีเจอร์นี้แล้ว 555+

Ben Collins

ไม่อยากพลาดอัพเดทฟีเจอร์ใหม่ๆใน Google Sheets? ต้องกด follow อาจารย์ Ben Collins ไว้เลย

ติดตามอาจารย์ Ben Collins ได้ที่ https://twitter.com/benlcollins
Ben Collins

แอดติดตามอาจารย์ Ben Collins (Google Developer Experts) บน Twitter แกสอน Google Sheets กับ AppSheet ได้โหดมาก แอดเคยลองคอร์สเรียนกับแกด้วย สำหรับประเทศไทยมีราคาพิเศษ (Purchasing Power Parity – PPP) ใครสนใจลองส่ง email ไปทัก อ. Ben ได้นะครับ 😁

Read More

อ่านข้อมูลเพิ่มเติมเกี่ยวกับ functions ใหม่ได้ที่ links นี้นะครับ ใครลองใช้งานแล้วเป็นยังไงบ้าง มาพูดคุยกันได้บนเพจ DataRockie นะครับ

Leave a Reply