Tag: data

  • สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น

    n8n เป็นเครื่องมือ Automation ที่ช่วยให้การสร้าง Workflow ที่เชื่อมต่อระบบและบริการต่าง ๆ ได้เป็นเรื่องง่ายขึ้น แต่สิ่งหนึ่งที่มักจะท้าทายสำหรับผู้ใช้คือการจัดการกับข้อมูลภายใน Workflow เนื่องจากข้อมูลที่ไหลเข้ามาอาจอยู่ในรูปแบบที่หลากหลาย หรือมาจากแหล่งที่แตกต่างกัน การจะดึงข้อมูลมาใช้งาน จัดการ แปลง หรือวิเคราะห์ให้ถูกต้องนั้นไม่ใช่เรื่องง่าย และนี่คือที่มาของการทำความเข้าใจเรื่อง “การจัดการข้อมูล” (Data Management) ใน n8n

    EP นี้จะพาคุณไปสำรวจเทคนิคและเครื่องมือที่มีอยู่ใน n8n สำหรับการจัดการข้อมูลตั้งแต่ขั้นพื้นฐาน ไม่ว่าจะเป็นการดึงข้อมูลจากแหล่งต่าง ๆ การแปลงข้อมูลให้ตรงตามที่ต้องการ หรือแม้กระทั่งการสรุปข้อมูลและการสร้างสูตรคำนวณที่ซับซ้อน คุณจะได้เรียนรู้วิธีจัดการข้อมูลในหลากหลายรูปแบบ ไม่ว่าจะเป็นการแก้ไขค่าข้อมูล การกรองเฉพาะข้อมูลที่ต้องการ หรือการรวมข้อมูลเพื่อนำไปใช้งานในขั้นตอนถัดไป

    บทความนี้เหมาะสำหรับทั้งผู้ที่เริ่มต้นใช้งาน n8n และผู้ที่ต้องการเพิ่มความสามารถในการจัดการข้อมูลให้ล้ำลึกมากขึ้น ด้วยการใช้ Node กลุ่ม Data Transformation ซึ่งจะทำให้ Workflow ของคุณมีความยืดหยุ่นและทรงพลังยิ่งขึ้น พร้อมกันหรือยังครับ? ถ้าพร้อมแล้ว เรามาเริ่มต้นกันเลย!

    โครงสร้างของข้อมูลใน n8n

    ข้อมูลที่ถูกส่งผ่านระหว่าง Node ใน n8n จะถูกจัดเก็บในรูปแบบของ Array of Objects ซึ่งเดี๋ยวผมจะขออธิบายให้แบบละเอียดเลย

    Array ใน n8n สำหรับคนที่คุ้นเคยกับ Excel

    ใน Excel เราจะคุ้นเคยกับการทำงานกับข้อมูลในลักษณะของ ตาราง ซึ่งประกอบไปด้วย แถว (Row) และ คอลัมน์ (Column) โดยข้อมูลในแต่ละแถวจะถูกจัดเรียงในรูปแบบของรายการต่างๆ ที่สอดคล้องกับคอลัมน์นั้นๆ เช่น ผลไม้ (รายการสินค้า) , สี, ราคา เป็นต้น

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 1

    Array ใน n8n ก็มีแนวคิดคล้ายๆ กับการจัดเก็บข้อมูลในแถวเหล่านั้นของ Excel เพียงแต่มันจะเก็บข้อมูลในลักษณะของ ลิสต์ของวัตถุ (List of Objects) ที่ผสมผสานกับ ข้อมูล Key กับ Value ที่คู่กัน

    สำหรับ ลิสต์ของวัตถุ (List of Objects) นั้นมีโครงสร้างดังนี้

    =[item1,item2,item3]  
    
    หรือเขียนแบบขึ้นบรรทัดใหม่
    
    =[
        item1,
        item2,
        item3
    ]
    • ใน Python เรียกว่า List
    • ใน Power Query ของ Excel จะเรียกว่า List (แต่ใช้อีกสัญลักษณ์นึง)

    ซึ่งข้อมูลแต่ละรายการ (item ของ List) มักจะถูกเก็บไว้ในรูปแบบของ ข้อมูลที่คู่กัน ระหว่าง คีย์ (Key) กับ ค่า (Value)

    {
        key1: value1,
        key2: value2,
        key3: value3
    }
    • ใน Python เรียกว่า Dictionary
    • ใน Power Query ของ Excel จะเรียกว่า Record (แต่ใช้อีกสัญลักษณ์นึง)

    ความแตกต่างหลักระหว่าง Array ใน n8n กับตาราง Excel ทั่วไป

    Array สามารถซ้อนข้อมูลมากกว่าหนึ่งอันในหนึ่งรายการ (Nested Data)
    ปกติแล้ว… ใน Excel ข้อมูลมักจะถูกเก็บในเซลล์อย่างเรียบง่าย แต่ใน n8n ข้อมูลหนึ่งรายการใน Array สามารถมีข้อมูลซับซ้อนได้ ซึ่งสามารถเปรียบเทียบกับว่าในช่อง Excel มี “ก้อนข้อมูล” ซ้อนอยู่ข้างใน แทนที่จะเป็นค่าเดียว

    ตัวอย่างเช่น

    [
      {
        "fruit": "apple",
        "color": "red",
        "price": 10
      },
      {
        "fruit": "banana",
        "color": "yellow",
        "price": 5
      }
    ]
    

    ถ้าเปรียบเทียบกับ Excel:

    • ให้คิดว่า แต่ละแถว ใน Excel คือ แต่ละ item ของ List ของ n8n
    • ชื่อแต่ละคอลัมน์ ใน Excel ก็จะคล้ายกับ คีย์ ในแต่ละออบเจ็กต์ เช่น fruit, color, price
    • ส่วน ค่าของเซลล์ ก็คือ ค่า (Value) ของคีย์เหล่านั้น เช่น “apple”, “red”, 10
      (ถ้าเป็นข้อความก็จะครอบด้วยเครื่องหมายคำพูด)

    แบบนี้คือเป็น List ที่มี 2 item โดยแต่ละ item คือ record ที่มี 3 คอลัมน์ (key) ซึ่งหน้าตาก็จะสามารถเข้าใจได้ว่าคล้ายๆ ตาราง Excel ที่ผมให้ดูตั้งแต่แรกนั่นแหละ

    แต่ถ้าจะให้เห็นแบบชัดๆ จริงๆ ใน Excel ต้องไปดูใน Power Query จึงจะสามารถ Get Data from JSON เพื่ออ่านข้อมูลแบบนี้ให้เห็นภาพได้

    ตอนแรกข้อมูล JSON เมื่อกี๊ ถือเป็น List ที่มี 2 item อยู่ข้างใน ซึ่งแต่ละ item คือ record ที่มี 3 key-value คู่กัน (โดยผม preview ให้ดูด้านล่าง)

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 2

    Array ที่มาใน n8n

    ทีนี้ข้อมูลที่มาจริงๆ ใน n8n มันก็อาจมีทั้งมาจากในรูปแบบของตาราง (แบบ Spreadsheet) ยกตัวอย่างเช่น ถ้าผมลองดึงข้อมูลจาก Google Sheets ต้นฉบับแบบนี้

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 3

    โดยที่เราจะใช้ Node Google Sheets เพื่อ Get Rows in Sheets

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 4

    แล้วเราอย่าลืมไป Enable API ของ Google Sheets บน Google Cloud Console ด้วยนะ

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 5

    แล้วก็เอา Client ID กับ Client Secret อันเดิมที่เคยทำในตอนที่แล้ว มากรอกได้เลย ไม่ต้องสร้างใหม่แล้ว

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 6

    จากนั้นเลือกข้อมูลจาก Sheet ที่ต้องการ มันจะเห็นแบบนี้ ซึ่งถ้าใน Output เราดูในมุมมองของ Table มันก็จะเห็นเป็นตารางเหมือนใน Google Sheets นั่นแหละ (แต่มี Row Number โผล่มาด้วย โดยที่แถวแรกสุดกลายเป็นหัวตารางไป)

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 7

    แต่ถ้าดูในมุมมของ JSON จะเห็นแบบนี้ ซึ่งจะเห็นว่าหัวตารางก็คือ Key และ Data คือส่วนของ Value ของ Record นั่นเอง

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 8

    และถ้าดูแบบ Schema (โครงสร้างข้อมูลอธิบายข้อมูลในตารางว่ามี field อะไรบ้าง) จะเห็นแบบนี้

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 9

    ทั้งหมด มันคือ List ที่มี Record เดียว (ที่มีหลาย key-value)

    ซึ่งข้อมูลที่ถูกส่งออกมาจาก Node Google Sheets นี้ ตอนนี้ถือว่ามี 6 items

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 10

    เราต้องเข้าใจก่อนว่า การที่มันส่งออกไป 6 items แบบนี้ ถ้าเราทำอะไรบางอย่างต่อไปใน Workflow มันก็จะเหมือนไล่ทำทีละ item จนครบ 6 items

    เช่น ถ้าผมต่อ Line Notify ออกไป มันจะยิงไป 6 ครั้งเลย

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 11

    นี่ให้ดู มันยิง 6 ครั้งจริงๆ

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 12

    ซึ่งถ้าเราอยากทำการแก้ไขข้อมูล หรือ คัดเลือกข้อมูล เราก็ต้องใช้พวก Node ในกลุ่ม Data Transformation

    Node กลุ่ม Data Transformation เพื่อแก้ไขข้อมูล

    การแก้ไข/เพิ่มข้อมูลด้วย Edit Fields

    เมื่อเราต้องการแก้ไขข้อมูลที่ได้รับเข้ามาใน Workflow เราสามารถใช้ Node ในกลุ่ม Data Transformation เช่น Edit Fields เพื่อเพิ่มหรือแก้ไขข้อมูลได้ตามต้องการ

    ยกตัวอย่างเช่น การเปลี่ยนชื่อสินค้าทั้งหมดให้เป็นตัวพิมพ์ใหญ่ เราสามารถใช้ Node Edit Fields พร้อม Expression เพื่อจัดการได้ โดยการใช้ฟังก์ชัน toUpperCase()

    Tips : ผมใช้วิธีเติม . ต่อท้ายชื่อ field ปกติ แล้วเลือก choice ของ method ที่ชื่อว่า toUpperCase() มันก็จะสามารถแปลงค่าใน field product ให้เป็นพิมพ์ใหญ่ได้ง่ายๆ

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 13

    แต่ถ้าทำแค่นี้ Field อื่นๆ ก็จะหายไปเลย ทำให้ไม่สามารถส่งต่อไปที่ Line ได้ตามที่ตั้งไว้ใน Node เดิม

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 14

    แม้ว่าจริงๆ เราจะแก้การดึงข้อมูลที่จะส่ง Line ให้ไปเอาจาก Node Google Sheets ได้ (ฝั่ง Input ตัวที่ 2) แต่ผมว่าเราใช้วิธีกลับไปเลือก Include Other Input Fields ในโหนด Edit Fields ดีกว่าครับ

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 15

    นอกจากนี้ ใน Edit Fields เราก็สามารถเพิ่ม Field ใหม่ได้ด้วย เช่น เราสามารถกด Add Field แล้วตั้งชื่อ Field แล้วใส่ข้อมูล (fixed) หรือ สูตร (expression) ได้เลย

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 16

    ในที่นี้ผมเขียนสูตรคำนวณยอดขาย สมมติว่าผลไม้ราคาชิ้นละ 50 บาทง่ายๆ ก็คำนวณได้ดังนี้

    • วิธี คือ ลาก Quantity ลงมา จะได้ {{ $json.quantity }}
    • จากนั้นเราแก้สูตรในส่วนของ {{ … }} นะครับ เพราะว่าทุกอย่างใน {{ … }} จะมองว่าเป็นภาษา JavaScript
    • ใช้สูตรลักษณะแบบนี้เพื่อคำนวณได้เลย
    {{ $json.quantity *50}}

    ผลลัพธ์ที่ Output ออกมาจาก Node ก็จะมีคอลัมน์ใหม่ด้วย และเราก็สามารถเอาไปส่ง Line ต่อใน Step ต่อไปได้เลย

    ตัวอย่าง Output JSON ที่ได้

    [
      {
        "row_number": 2,
        "orderid": 123,
        "customer": "A",
        "product": "APPLE",
        "quantity": 3,
        "SalesAmt": 150
      },
      {
        "row_number": 3,
        "orderid": 123,
        "customer": "A",
        "product": "BANANA",
        "quantity": 2,
        "SalesAmt": 100
      },
      {
        "row_number": 4,
        "orderid": 124,
        "customer": "B",
        "product": "ORANGE",
        "quantity": 5,
        "SalesAmt": 250
      },
      {
        "row_number": 5,
        "orderid": 124,
        "customer": "B",
        "product": "MANGO",
        "quantity": 1,
        "SalesAmt": 50
      },
      {
        "row_number": 6,
        "orderid": 124,
        "customer": "B",
        "product": "GRAPE",
        "quantity": 4,
        "SalesAmt": 200
      },
      {
        "row_number": 7,
        "orderid": 125,
        "customer": "A",
        "product": "PEAR",
        "quantity": 6,
        "SalesAmt": 300
      }
    ]

    การสรุปข้อมูล ด้วย Summarize

    การสรุปข้อมูลใน n8n สามารถทำได้ง่าย เช่น การสรุปยอดขายต่อ Order ID ซึ่งคล้ายกับการใช้ Pivot Table ใน Excel หรือการ Group By ใน Power Query ทำให้ชาว Excel เข้าใจได้ไม่ยาก

    สมมติผมอยากจะทำการสรุปข้อมูลจากหลายๆ Item เข้าด้วยกัน ตาม OrderId กับ ลูกค้า แล้วอยากจะสรุปว่าทำยอดขายได้กี่บาท และ มีการซื้อสินค้ากี่ประเภท ผมทำได้ดังนี้

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 17

    ตัวอย่าง Output JSON ที่ได้

    [
      {
        "customer": "A",
        "orderid": "123",
        "sum_SalesAmt": 250,
        "unique_count_product": 2
      },
      {
        "customer": "A",
        "orderid": "125",
        "sum_SalesAmt": 300,
        "unique_count_product": 1
      },
      {
        "customer": "B",
        "orderid": "124",
        "sum_SalesAmt": 500,
        "unique_count_product": 3
      }
    ]

    การคัดเลือกข้อมูลด้วย Filter

    หากเราต้องการคัดเลือกข้อมูลเฉพาะรายการที่ตรงตามเงื่อนไข เช่น ยอดขายเกิน 300 บาท สามารถใช้ Node Filter ได้ ซึ่งจะทำให้ Workflow สามารถเลือกเฉพาะข้อมูลที่เราต้องการไปใช้ในขั้นตอนถัดไป

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 18

    จำนวน item ที่เหลือรอดไปก็ (อาจ) จะน้อยลง นี่คือ Concept ของการ Filter

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 19

    ตัวอย่าง Output JSON ที่ได้

    [
      {
        "customer": "A",
        "orderid": "125",
        "sum_SalesAmt": 300,
        "unique_count_product": 1
      },
      {
        "customer": "B",
        "orderid": "124",
        "sum_SalesAmt": 500,
        "unique_count_product": 3
      }
    ]

    รวบข้อมูลด้วย Aggregate

    สุดท้ายหากต้องการรวบข้อมูลทุกแถวเข้าด้วยกันเพื่อส่งออกเป็นข้อความเพียงข้อความเดียว เราสามารถใช้ Node Aggregate เพื่อช่วยในการรวบข้อมูลได้ ซึ่งเป็นวิธีที่ทำให้ Workflow ของเรามีความสะดวกและเรียบง่ายมากขึ้น

    สมมติผมอยากจะรวบข้อมูลส่ง Line แค่ Message เดียวเลย ผมก็อาจจะใช้โหนด Aggregate มาช่วยก็ได้

    ซึ่งสามารถ Aggregate Data ทั้งหมดทุกแถว ทุก Field เข้าเป็น List เดียว (ชื่อ data)เลยแบบนี้ก็ได้

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 20

    ถ้าใช้ all item data หน้าตา json จะเป็นแบบนี้

    [
      {
        "data": [
          {
            "customer": "A",
            "orderid": "125",
            "sum_SalesAmt": 300,
            "unique_count_product": 1
          },
          {
            "customer": "B",
            "orderid": "124",
            "sum_SalesAmt": 500,
            "unique_count_product": 3
          }
        ]
      }
    ]

    หรือจะ Aggregate แยก Field แบบนี้ก็ได้ (เลือกทีละ Field ได้เลย)

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 21

    ถ้าใช้ individual field หน้าตา json จะเป็นแบบนี้

    [
      {
        "customer": [
          "A",
          "B"
        ],
        "orderid": [
          "125",
          "124"
        ],
        "sum_SalesAmt": [
          300,
          500
        ],
        "unique_count_product": [
          1,
          3
        ]
      }
    ]

    เดี๋ยวผมลองใช้การ Aggregate แบบ all item data นะครับ เพราะผมคิดว่าน่าจะสะดวกกับหลายๆ เคสเลยถ้าเราใช้มันได้

    เรื่องของเรื่องคือ มันน่าจะต้องเขียนสูตร JavaScript ซึ่งผมเขียนไม่เป็น 😆

    แต่ไม่เป็นไร ผมสามารถไปถาม น้อง AI Chatbot เช่น ChatGPT ว่าจะต้องเขียนสูตรใน expression ของ n8n ยังไง ถึงจะทำให้รับ Input ที่ผมมี แต่สามารถส่ง output ออกมาสวยงามอ่านง่าย (ChatGPT ของผมชื่อว่าน้องฟ้า)

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 22

    น้อง AI เค้าแนะนำเขียน Expression แบบนี้

    ข้อมูลมีดังนี้
    {{ $json.data.map(item => 
    `Customer: ${item.customer}, Order ID: ${item.orderid}, Sales Amount: ${item.sum_SalesAmt}, Unique Products: ${item.unique_count_product}`).join('\n') }}
    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 23

    สุดท้ายออกมาแบบนี้ครับ สวยงาม

    สอนใช้ n8n EP03 : จัดการ Data ภายใน Workflow เบื้องต้น 24

    ตอนต่อไป

    หลังจากที่เราได้เรียนรู้วิธีการจัดการข้อมูลใน Workflow ด้วย n8n กันแล้ว ในตอนต่อไป เราจะเจาะลึกยิ่งขึ้นไปอีก กับการควบคุมการไหลของข้อมูล (Control Flow) ที่เป็นหัวใจสำคัญในการสร้าง Workflow ที่ซับซ้อนขึ้น เช่น การใช้ If Node เพื่อสร้างเงื่อนไขต่าง ๆ หรือการใช้ Switch Node เพื่อแตกสายการทำงานออกไปในหลายทิศทาง นอกจากนี้ เรายังจะได้สำรวจการวน Loop เพื่อจัดการกับข้อมูลจำนวนมากได้อย่างอัตโนมัติและมีประสิทธิภาพ

    ถ้าคุณอยากจะพัฒนา Workflow ของคุณให้ทำงานได้อย่างลื่นไหลและยืดหยุ่นมากขึ้น ห้ามพลาดตอนต่อไป! เราจะมาเรียนรู้เทคนิคสำคัญที่จะช่วยให้คุณสามารถจัดการกับการควบคุมข้อมูลอย่างชาญฉลาด เตรียมพบกับความท้าทายใหม่ ๆ ที่จะช่วยยกระดับการทำงานของ n8n ไปอีกขั้น แล้วเจอกันใน EP ถัดไปครับ!

  • สารพัดวิธีนับข้อมูลแบบไม่ซ้ำกันในคอลัมน์

    สารพัดวิธีนับข้อมูลแบบไม่ซ้ำกันในคอลัมน์

    อย่างที่ผมเคยบอกไปแล้วว่าการแก้ปัญหาหนึ่งๆ ใน Excel นั้นสามารถทำได้หลายวิธีมาก ซึ่งปัญหาการนับข้อมูลแบบไม่ซ้ำกันในคอลัมน์ก็เช่นกัน จะมีวิธีไหนบ้างมาดูกันครับ!!

    สถานการณ์ของเราคือ…

    สมมติว่าเรามีข้อมูลอยู่ตารางหนึ่ง เป็นตารางการขายของในช่วงเดือนที่ผ่านมา…
    ลักษณะข้อมูลคือ 1 บรรทัดเป็น 1 order ซึ่งแต่ละ order ก็จะมี Sales นักขายกำกับอยู่ว่าชื่ออะไร

    โจทย์คือ อยากรู้ว่ามี Sales อยู่กี่คนที่ทำการขายสินค้าได้ในช่วงเวลาที่เราเก็บข้อมูลมา
    แต่ปัญหาคือ ชื่อของ Sales สามารถซ้ำกันได้ในหลายๆ บรรทัด ซึ่งถ้าซ้ำกันเราต้องการจะนับแค่ 1

    สมมติข้อมูลเป็นแบบนี้ (มีแค่ 10 บรรทัดพอ) => distinct-count

    distinct-data

    ถ้าเราเจอปัญหาแบบนี้ จะแก้ไขได้ยังไงมาดูกันครับ!

    (more…)

  • สรุปทุกสิ่งที่คุณควรรู้เกี่ยวกับ Pivot Table : ภาค 1 – การสรุปผลข้อมูลขั้นพื้นฐาน

    สรุปทุกสิ่งที่คุณควรรู้เกี่ยวกับ Pivot Table : ภาค 1 – การสรุปผลข้อมูลขั้นพื้นฐาน

    PivotTable คืออะไร?

    PivotTable (ฝรั่งอ่านว่า พิ-วอท-เท-เบิ้ล) เป็นเครื่องมือบน Excel ที่สามารถสรุปผลข้อมูลตามเงื่อนไขที่กำหนดได้อย่างง่ายดายและรวดเร็ว เช่น สามารถสรุปได้ว่าข้อมูลแต่ละประเภท มีผลสรุปที่เราสนใจเป็นเท่าไหร่ เช่น ผลรวม/จำนวนนับ/ค่าเฉลี่ย/ค่ามาก/น้อยสุด เป็นต้น

    สรุปทุกสิ่งที่คุณควรรู้เกี่ยวกับ Pivot Table : ภาค 1 – การสรุปผลข้อมูลขั้นพื้นฐาน 25

    ความสามารถนี้ช่วยให้เราสามารถสรุปผลจากข้อมูลจำนวนมากที่อยู่ในลักษณะตารางฐานข้อมูล มาเป็นข้อมูลสรุปแบบสั้นๆ โดยให้เราสามารถพลิกแพลงมุมมองไปมาเพื่อให้เห็นข้อมูลในมุมมองที่สนใจได้อย่างรวดเร็ว โดยที่เมื่อได้ตารางสรุปตามต้องการแล้วยังสามารถเอาไปสร้างเป็นกราฟต่อได้อีก สะดวกสุดๆ เลยครับ

    ตัวอย่างการสรุปผล

    จากข้อมูลยุบยับที่ถูกเตรียมในลักษณะ Database เราสามารถนำมาสรุปผลใน PivotTable แบบง่ายๆ เช่นตารางนี้ได้เลย

    โหลดไฟล์ตัวอย่างได้ที่นี่ =>  inwexcel-pivot-practice.xlsx (แก้แล้ว)

    pivot-sample-01

    หรือสามารถเพิ่มมุมมองของข้อมูลที่เจาะรายละเอียดมากขึ้นได้อย่างง่ายดาย

    pivot-sample-02

    ลองคิดดูว่าหากคุณต้องเขียนสูตรเพื่อหาว่า Sales ก สามารถขายของเล่น โดยวิธีให้ลูกค้าชำระเงินสด เป็นจำนวนเงินเท่าไหร่? จะยุ่งยากแค่ไหน ในทางกลับกัน หากเราใช้ PivotTable เป็น เราสามารถหาคำตอบนี้ได้ภายเวลาไม่ถึง 1 นาทีด้วยซ้ำ

    นี่ไงจากข้อมูลที่ Pivot ออกมาแล้ว ได้คำตอบ คือ 7 ชิ้น 3250 บาทนั่นเอง อยากรู้ของใครอีกบอกมาได้เลย มันสรุปออกมาให้หมดแล้ว!!

    PivotTable ไม่ยากอย่างที่คิด

    PivotTable มักถูกเข้าใจผิดจากคนทั่วๆไป ว่าเป็นเครื่องมือที่ใช้ยาก ทั้งๆที่จริงแล้ว เป็นเครื่องมือที่ใช้งานง่าย และรวดเร็วกว่าการใช้สูตรเป็นอย่างมาก แต่มีข้อเสียที่ด้อยกว่าการใช้สูตรเล็กน้อยคือ หากข้อมูลที่ต้นทางเปลี่ยนแปลงไป เราต้องกดปุ่ม Refresh ใน PivotTable ก่อน ผลในตาราง Pivot จึงจะ Update ตาม

    เมื่อลองชั่งใจข้อดีข้อเสียแล้ว จะพบว่าในสถานการณ์ทั่วไป การใช้ PivotTable สรุปข้อมูลนี่แหละ สะดวกรวดเร็วและง่ายที่สุดแล้ว เอาล่ะ ต่อไปเรามาดูกันว่าจะใช้งาน PivotTable ได้อย่างไร

    Step การใช้ Pivot Table

    • โหลดไฟล์ตัวอย่างได้ที่นี่ =>  inwexcel-pivot-practice.xlsx
    • ให้คลิ๊กที่ส่วนใดส่วนหนึ่งของตาราง Database ที่เตรียมไว้
      แล้วกด [Insert] –> Tables –> PivotTable
    • ตรวจดูก่อนว่ามันคลุมตารางครบหรือไม่ ?
      • ถ้าเตรียมข้อมูล Database ดีในแบบที่ผมแนะนำไปมันก็จะครบอยู่แล้ว
      • หากมีการใช้ Tableเป็นSource Dataมันจะขึ้นชื่อTableมาให้เลย ซึ่งไม่ต้องมานั่งตรวจให้เสียเวลาอีกเช่นกัน
    • เลือกได้ว่าจะให้ข้อมูลที่ Pivot แล้วไปสร้างเป็น Sheet ใหม่ หรือไว้ใน Sheet ที่มี
    Pivot-Source

    Field List

    เวลาสร้างตาราง Pivot ขึ้นมาแล้ว หัวตารางของข้อมูลต้นฉบับของเรา จะกลายเป็น Field List ของ PivotTable ซึ่งจะวางอยู่ด้านขวาบน เปรียบเหมือน Item ที่ให้เราหยิบไปใช้ทำอะไรได้มากมาย

    เราสามารถลาก Field List แต่ละอันลงไปใน Slot ทั้งสี่อัน ที่อยู่บริเวณข้างล่างขวามือ แต่ละอันมีความหมายดังนี้

    Pivot-FieldList-add
    • Report Filterทำหน้าที่คัดกรองข้อมูล ให้แสดงเฉพาะข้อมูลบรรทัดเดียวกับที่ Filter ไว้
    • Column Labelนำข้อมูลมาไว้ที่หัวตาราง Pivot (ด้านบน) เพื่อจัดกลุ่มแบบคอลัมน์ โดยมันจะแสดง item ทั้งหมดที่ไม่ซ้ำกันใน Field ที่คุณเลือกมาไว้ที่หัวตาราง Pivot (ด้านบน)
    • Row Labelนำข้อมูลมาไว้ที่ด้านซ้ายของตาราง Pivot เพื่อจัดกลุ่มแบบแถว โดยมันจะแสดง item ทั้งหมดที่ไม่ซ้ำกันใน Field ที่คุณเลือกมาไว้ที่ด้านซ้ายของตาราง Pivot
    • Valuesเป็นการคำนวณสรุปผล ทำได้หลายรูปแบบ เช่น SUM, Count, Average, Max, Min โดยอาจแสดงได้หลายรูปแบบ เช่น รูปแบบปกติ, %ของทั้งหมด, %ของแถว,%ของคอลัมน์, การรวมแบบสะสมค่า เป็นต้น

    โดยField List 1 อัน สามารถลากลงไปใช้ในช่อง Values ซ้ำได้มากกว่า 1 ครั้ง เช่น อันแรกเราเอาไปหาค่า SUM อันที่สองเราสามารถเอา Field เดิมไปหาค่า MAX หรือจะเปลี่ยนรูปแบบการแสดงผลให้ต่างกันได้ เป็นต้น

    ลองลาก Field List หลายๆ แบบ

    ลาก Field จำนวนเงินที่จ่าย มาที่ช่อง Value 1 อัน : มันจะทำการคำนวณสรุปผลข้อมูลให้ แบบนี้คือเหมือนการ SUM ข้อมูลทั้งหมดแบบไม่มีเงื่อนไข หรือการแยกประเภทใดๆ ทั้งสิ้น

    layout-1

    หากลองเปลี่ยนเอา Field จำนวนเงินที่จ่าย มาไว้ที่ Row Label แทน : มันจะแสดง item ทั้งหมดที่ไม่ซ้ำกันซึ่งจะออกมาเยอะมากๆ ปกติแล้วคุณไม่น่าจะต้องการผลลัพธ์แบบนี้ครับ ยกเว้นว่าจะทำการ Grouping ข้อมูลตามช่วงยอดขาย ซึ่งผมจะพูดถึงเรื่อง Grouping ข้อมูลในบทถัดไปครับ

    layout-1-2

    ลาก Field ผู้ซื้อ มาที่ Row Label : มันจะแสดง item ทั้งหมดที่ไม่ซ้ำกัน

    layout-2

    ลองลาก Field จำนวน มาที่ช่อง Value เพิ่มอีก 1 อัน :

    layout-3

    ลองลาก Field จำนวน มาที่ช่อง Value ซ้ำเป็นอันที่ 2 ก็ยังได้ : ในบทต่อไป ผมจะสอนวิธีเปลี่ยนจาก SUM เป็นการสรุปอย่างอื่นได้อีกครับ เช่น Count, Average

    layout-3-2

    ลองย้าย Values  : จาก Column Labels มาที่ Row Label

    layout-4

    ลากอีก Field สินค้า มาไว้ที่ Report Filter : แล้วลองเลือก Dropdown คัดกรองดู

    layout-5

    ลากอีก Field ผู้ขาย มาที่ Column Label : มันจะแสดง item ทั้งหมดที่ไม่ซ้ำกัน

    layout-6

    ลากอีก Field ผู้ขาย มาที่ RowLabel ให้ซ้อนกับผู้ซื้อ : มันจะแสดง item ทั้งหมดที่ไม่ซ้ำกัน

    layout-7

    ลองย้าย Values : ไปยังหลายๆ ตำแหน่ง เช่น สลับลำดับใน Row หรือ ย้ายกลับไป Column

    layout-7-2
    layout-7-3

    วิธีการแปลความหมายตาราง Pivot Table

    ตัวอย่าง ผมลองลาก Field ต่างๆ มาลง 4 Slot ข้างล่างตามรูป

    Pivot-Basic

    วิธีตีความคือให้ดูว่า ข้อมูลที่กำลังสรุปผลเป็นการ Summary จาก Field ไหนบ้าง
    โดยต้องดูว่าข้อมูลมัน Cross กันแบบไหน ทั้ง 4 slot เลย

    ตัวอย่าง ในช่อง C12 (1000) หมายถึง

    นาย c (row) / ซื้อสินค้าใดๆก็ตาม (เลือก All แปลว่า ไม่ได้ filter เจาะจงสินค้า) / กับ sales ค (column) / ด้วยเครดิตการ์ด (row) / เป็นจำนวนรวม 1000 บาท (Values – สรุปด้วย SUM)

    เห็นมั๊ยครับว่า PivotTable นี่สามารถอ่านผลลัพธ์ได้ง่ายและรวดเร็วจริงๆ!!

    ใครอยากรู้ว่า Pivot Table ทำอะไรได้อีก อย่าลืมอ่านต่อได้ที่ตอนที่ 2 ครับ

    Video ประจำตอน

    มี 3 ไฟล์ด้วยกัน ตั้งใจดูให้ดีล่ะครับ ยาวหน่อย แต่อัดแน่นด้วยเนื้อหาครับ
    สรุปทุกสิ่งที่คุณควรรู้เกี่ยวกับ Pivot Table บน Excel ตอนที่ 1/3 :
    http://www.youtube.com/watch?v=_KB4LAMQbWU

    สรุปทุกสิ่งที่คุณควรรู้เกี่ยวกับ Pivot Table บน Excel ตอนที่ 2/3 :
    http://www.youtube.com/watch?v=rrUerQbuAJ8

    สรุปทุกสิ่งที่คุณควรรู้เกี่ยวกับ Pivot Table บน Excel ตอนที่ 3/3 :
    http://www.youtube.com/watch?v=2VJ7eTKmzK4

  • ประเภทข้อมูล (Data Type) ในโปรแกรม Excel

    ประเภทข้อมูล 4 แบบ

    ใน Excel ไม่ว่าเราจะเขียนสูตร หรือ พิมพ์ข้อมูลลงไปใน Cell …. ผลลัพธ์ค่าที่แท้จริง (Value) สามารถแบ่งออกเป็น 4 ประเภทข้อมูลใหญ่ๆ ด้วยกัน คือ

    ประเภทข้อมูล
    1. Number ตัวเลข สามารถเอามาคำนวณทางคณิตศาสตร์ได้
      • ตัวเลขปกติทั่วไป 10, 2.3, 1/2, 1.234E+03
      • ตัวที่อาจไม่เหมือนตัวเลข แต่จริงๆเป็นตัวเลขอย่าง เช่น วันที่และเวลา คือ ตัวเลขที่เปลี่ยน Format ไป
        • วันที่ เช่น 31 Jan 2013
          • Excel จะมองวันที่ เป็นจำนวนเต็ม เช่น
          • เลข 1 คือ วันที่ 1 เดือน 1 ปี คศ. 1900
          • เลข 2 คือ วันที่ 2 เดือน 1 ปี คศ. 1900
        • เวลา เช่น 16:30
          • Excel จะมองเวลา เป็นจุดทศนิยม โดย เที่ยงวันคือ 0.5 เป็นต้น
        • รายละเอียด อ่านได้ที่ การทำงานเกี่ยวกับวันและเวลา (Date & Time) ใน Excel
      • ธรรมชาติจะอยู่ ชิดขวาของ Cell โดยอัตโนมัติ
    2. Text ตัวอักษร เอาไว้แสดงผลข้อความ ไม่ได้เอาไว้มาคำนวณ
      • ตัวหนังสือจริงๆ เช่น ช้าง, ม้า, cow, sid110, I love my pen
      • ตัวหนังสือที่หน้าตาเหมือน Type อื่น เช่น 123 จริงๆ สามารถเป็นตัวหนังสือก็ได้ ถ้าพิมพ์ว่า ‘123
      • ธรรมชาติจะอยู่ ชิดซ้ายของ Cell โดยอัตโนมัติ
      • แปลว่า บางช่องเราอาจเห็นว่าเป็นตัวเลข แต่จริงๆ เป็น Text ก็ได้ วิธีดูคร่าวๆ คือ หากมันถูกจัดชิดซ้าย โดยที่เราไม่ได้ไปเป็นคนกำหนดจัดซ้ายเอง มันจะเป็น Text, ถ้าชิดขวาจะเป็นตัวเลข)
      • เราสามารถกำหนดให้เวลาพิมพ์ข้อมูลลงไป แล้วบังคับให้ผลลัพธ์เป็น Text ได้ โดย
        • วิธีที่ 1 : ใส่เครื่องหมาย ‘ นำหน้า เช่น ‘001234 มันจะออกมาเป็น 001234 ที่เป็น Text
        • วิธีที่ 2 : เปลี่ยน format ของ Cell เป็น Text ก่อน แล้วค่อยพิมพ์ข้อมูล
    3. Logic ตรรกะ มีอยู่ 2 อย่างคือ
      • TRUE เกิิดเมื่อมีการเปรียบเทียบค่าแล้วเป็นจริง เช่น ใส่สูตรว่า =10>3
      • FALSE เกิิดเมื่อมีการเปรียบเทียบค่าแล้วเป็นเท็จ เช่น ใส่สูตรว่า =5<2
      • ธรรมชาติจะอยู่ กึ่งกลางของ Cell โดยอัตโนมัติ
    4. Error ข้อผิดพลาด
      • ธรรมชาติจะอยู่ กึ่งกลางของ Cell โดยอัตโนมัติ
      • ความผิดพลาดมีหลายสาเหตุด้วยกัน การที่เรารู้ความแตกต่างของมัน จะทำให้เราเข้าใจ และแก้ไขข้อบกพร่องได้อย่างถูกต้องมากขึ้นครับ
    ประเภท Errorความหมายค่าทดสอบที่แสดงออกมาจากการใช้ฟังก์ชัน
    ERROR.TYPE
    #NULL! เกิดจากการใช้ Intersection Operator (ช่องว่าง) แล้วปรากฎว่าการ Intersect นั้นออกมาเป็น Set ว่าง เช่น =SUM(A10:A20 C10:C20) (ช่วง 2 อันไม่มีช่องซ้ำกันเลย)1
    #DIV/0!เกิดจากการคำนวณที่มีการหารด้วย 02
    #VALUE!เกิดจากการใส่ค่า Input ลงไปในสูตรผิดประเภทข้อมูล
    เช่น =IF(“แมว”,1,0) จะผิด เพราะ ตรง “แมว” จริงๆ ต้องเป็นตรรกกะ ที่ถูกคือ = IF(A3=”แมว”,1,0) จึงจะไม่ Error
    3
    #REF!เกิดจากการที่ไม่สามารถอ้างถึง Cell ได้ ซึ่งอาจเกิดจากการ Delete Cell, Column หรือ Row ไปจนช่องนั้นหายไป4
    #NAME?มีการอ้างถึงชื่อ Cell หรือ Function ที่ไม่มีอยู่จริง (ปกติมักจะเกิดจากการจะใส่ข้อความ แต่ลืมใส่ ” ” ครอบ)5
    #NUM!มีการใส่ค่าตัวเลขที่มากเกินกว่า Excel จะรับไหว หรือ อาจเกิดจากการที่ Excel ทำการคำนวณ Trial & Error ค่า (Iterative) แล้วไม่ได้ผลลัพธ์ที่ต้องการ เช่น ตอนใช้สูตร IRR6
    #N/Aเป็น Error ที่เจอบ่อยมาก เช่น หาข้อมูลด้วยการ Lookup ไม่เจอ, อาจเกิดจากใส่ Input ลงสูตรผิดหรือเกิน (ซึ่งการ Lookup ไม่เจอ ไม่ใช่แปลว่าเขียนสูตรผิด)7
    #GETTING_DATA8

    วิธีตรวจสอบประเภทข้อมูล

    โดยเราสามารถตรวจสอบว่าข้อมูลที่เราสนใจอยู่ในประเภทไหนได้ง่ายๆ มี 3 วิธี คือ

    ใช้ยางลบ Clear Format ทิ้งแล้วดูด้วยตา

    • หากเป็น Number จะอยู่ชิดขวาของช่อง
    • หากเป็น Text ปกติจะอยู่ชิดซ้ายของช่อง
    • หากเป็น Logic จะเป็นคำว่า TRUE FALSE อยู่กึ่งกลางช่อง
    • หากเป็น Error มักมีเครื่องหมาย # หรือ ! และ อยู่กึ่งกลางช่อง

    ใช้ Function =TYPE(ช่องที่ต้องการตรวจสอบ) 

    ผลลัพธ์ที่ออกมาจะเป็นรหัสตัวเลข ซึ่งมีความหมายดังนี้

    • 1 = Number (ตัวเลข)
    • 2 = Text (ตัวอักษร)
    • 4 = Logic (ตรรกกะ) :
    • 16 = Error (ผิดพลาด)
    • 64 = Array (อาเรย์) **** เป็นการใส่ข้อมูลหลายๆ ค่าใน Cell เดียว ซึ่งขอไม่พูดถึึง ณ ตอนนี้ครับ

    ใช้ฟังก์ชั่นกลุ่ม IS….

    เป็นการถามคำถามกับ Excel ว่าใช้ประเภทข้อมูลที่สนใจมั้ย? ซึ่งจะให้ผลลัพธ์เป็น TRUE/FALSE

    • ISNUMBER เช็คว่า ใช่ตัวเลขหรือไม่?
    • ISTEXT เช็คว่า ใช่ตัวเลขหรือไม่?
    • ISNONTEXT เช็คว่า ไม่ใช่ตัวหนังสือหรือไม่?
    • ISLOGICAL เช็คว่า ใช่ตรรกกะหรือไม่?
    • ISERROR  เช็คว่า error หรือไม่?
    • ISFORMULA  เช็คว่า ใช่สูตรหรือไม่?

    ทำไมเราต้องเรียนรู้ประเภทของข้อมูลใน Excel?

    • หากเรารู้ว่าข้อมูลที่เรากำลังใส่เป็นข้อมูลแบบไหน เราจะสามารถใช้สูตรได้พลิกแพลงมากขึ้น โดยเรารู้ว่าเราต้องใส่ Input ลงไปในสูตรในแต่ละ Argument (แต่ละช่อง Input) ให้ถูกประเภท ตามที่แต่ละสูตรต้องการ เช่น
      excel formula arguement
      • สูตร =LEFT(ข้อความ,จำนวนตัวอักษรที่ต้องการ) จะเห็นว่า จำนวนตัวอักษรที่ต้องการ จะต้องเป็นข้อมูลที่เป็น Number (ตัวเลข) เท่านั้น แปลว่า หากเรามีสูตรที่ได้ผลลัพธ์เป็นตัวเลข เราก็สามารถผสมสูตรนั้นลงไปในช่อง “จำนวนตัวอักษรที่ต้องการ” ได้เช่นกัน
    • เราจะเข้าใจการทำงานของ Excel มากขึ้น เช่น เราจะเข้าใจว่า ทำไมเวลาเอาวันที่มาลบกันแล้วจะได้ออกมาเป็นช่วงเวลาระยะห่างของสองวันได้ (เพราะ Excel มองว่าวันที่คือตัวเลขตัวหนึ่งนั่นเอง)

    เมื่อคุณอ่านบทความนี้จบแล้ว ก็น่าจะมีพื้นฐานเกี่ยวกับประเภทข้อมูลใน Excel กันแล้วล่ะ ในตอนต่อๆ ไปเราจะได้มาเรียนรู้วิธีการใช้สูตร (Formula) กันครับ