Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> Office

สร้าง Mini-App ใน Excel ที่ใช้งานได้จริง ด้วยปุ่ม ฟอร์ม และตรรกะซ่อน

Excel สามารถกลายเป็น mini app platform ได้เมื่อจัดโครงสร้างด้วยการจัดรูปแบบที่ชัดเจน logic layer ที่ซ่อนอยู่ ปุ่ม ฟอร์ม และฟีเจอร์โต้ตอบแบบไดนามิก ด้วยการรวมปุ่ม form controls และ hidden logic คุณสามารถสร้างเครื่องมือโต้ตอบสำหรับป้อนข้อมูล แดชบอร์ด หรือติดตามกระบวนการ

ในบทช่วยสอนนี้ เราจะแสดงวิธีเปลี่ยน Excel เป็น basic app โดยใช้ปุ่ม ฟอร์ม และ hidden logic

ขั้นตอนที่ 1: วางแผนฟีเจอร์ของ App

เพื่อทำให้ Excel กลายเป็น app คุณต้องวางแผนว่าคุณต้องการอะไรและ app จะทำอะไร สมมติว่าเราจะสร้าง app ที่รับคำสั่งซื้อด้วยฟอร์มและจัดเก็บข้อมูลคำสั่งซื้อ

เพื่อทำเช่นนั้น สร้างชีทเหล่านี้:

  • Home: หน้าแรกสะอาดพร้อมปุ่มใหญ่ ("Add Order", "OrderData" "Dashboard")
  • Form: อินพุตสำหรับผู้ใช้ (drop-downs, วันที่, ฟิลด์ตัวเลข) พร้อมปุ่ม Submit Order
  • OrderData: Excel Table เดียวที่จัดเก็บทุกเรคคอร์ด (คิดว่ามันคือ database ของคุณ)
  • Logic: ชีทซ่อนสำหรับ helper tables, named ranges, validation rules, และ ID counters
  • Dashboard: ถ้าต้องการ สร้างแดชบอร์ดจากข้อมูลการขายพร้อม KPI cards และ charts ที่ขับเคลื่อนโดย Logic sheet

ขั้นตอนที่ 2: สร้างชีท Order Form

  • สร้างชีทใหม่ชื่อ Order Form
  • ในคอลัมน์ A รายการ label ต่อไปนี้:
    • Order ID
    • Date
    • Category
    • Product
    • Units
    • Unit Price
    • Total Amount
  • ในคอลัมน์ B เว้นเซลล์ว่างไว้สำหรับป้อนข้อมูล:
  • จัดรูปแบบฟอร์มให้สวย:
    • ปรับความกว้างคอลัมน์
    • เพิ่มขอบเซลล์

ขั้นตอนที่ 3: เพิ่ม Form Controls

เพื่อทำให้ฟอร์มไดนามิกและโต้ตอบ คุณสามารถใช้ Drop-down Lists ใน logic sheet ให้รายการข้อมูลทั้งหมด เช่น Category, Product, Price ฯลฯ จากนั้นสร้าง named ranges เพื่อใช้ใน form controls

สร้าง Named Ranges:

  • รายการ category พร้อมชื่อสินค้า
  • ไปที่แท็บ Formulas >> เลือก Name Manager >> เลือก New

Category:

  • ใน Name: Category
  • ใน Refers to:

Products:

  • เลือก category และ products
  • ไปที่แท็บ Formulas >> เลือก Create from Selection
  • เลือก Top row
  • คลิก OK

Unit_Price:

  • เลือกชื่อสินค้าและราคา
  • ไปที่แท็บ Formulas >> เลือก Create from Selection
  • เลือก Left column
  • คลิก OK

สร้าง Drop-Down Lists:

Category:

  • เลือกเซลล์ B4
  • ไปที่แท็บ Data >> เลือก Data Validation
  • ภายใต้ Allow >> เลือก List
  • ใน Source: ใส่ named range
  • คลิก OK

Product:

  • เลือกเซลล์ B5 และสร้าง dependent drop-down list
  • ไปที่แท็บ Data >> เลือก Data Validation
  • ภายใต้ Allow >> เลือก List
  • ใน Source: ใส่สูตรต่อไปนี้
  • คลิก OK
  • คุณสามารถเลือกสินค้าตาม category

Units:

  • เลือกเซลล์ B6
  • ไปที่แท็บ Data >> เลือก Data Validation
  • ภายใต้ Allow >> เลือก List
  • ใน Source: ใส่รายการถึง 10
  • คลิก OK

Units Price:

  • เลือกเซลล์ B7
  • ไปที่แท็บ Data >> เลือก Data Validation
  • ภายใต้ Allow >> เลือก List
  • ใน Source: ใส่สูตรต่อไปนี้
  • คลิก OK
=INDIRECT(SUBSTITUTE(B5, " ", "_"))
  • มันเป็น dependent drop-down list
  • คุณสามารถเลือกราคาตามสินค้า

เพิ่มปุ่ม Submit:

  • ไปที่แท็บ Developer >> เลือก Insert >> เลือก Button จาก Form Controls
  • วาดปุ่มใต้ฟอร์ม
  • ตั้งชื่อ “Submit Order”
  • เว้นไว้ก่อน เราจะ assign macro ในขั้นตอนที่ 5

ขั้นตอนที่ 4: สร้างชีท Order Database และ Dashboard

  • เพิ่มชีทใหม่ชื่อ OrderData
  • ใน Row 1 ใส่ headers ต่อไปนี้:
    • Order_ID
    • Date
    • Category
    • Product
    • Unit_Price
    • Units
    • Total_Amount
  • เราจะซ่อนชีทนี้ภายหลังเพื่อเก็บ backend ไว้จากผู้ใช้

ขั้นตอนที่ 5: เพิ่ม VBA Logic

ตอนนี้ เราจะใช้ VBA code เพื่อส่งข้อมูลฟอร์มไปยังชีท orderdata โค้ด VBA นี้จะคัดลอกข้อมูลฟอร์มไปที่ database และล้างฟอร์มสำหรับรายการถัดไป

  • คลิกขวา ปุ่ม SubmitOrder >> Assign Macro >> คลิก New
  • ใส่โค้ดต่อไปนี้
Sub SubmitOrder()
    Dim wsForm As Worksheet, wsDB As Worksheet
    Dim nextRow As Long
    Dim lastOrderID As String
    Dim newOrderNum As Long
    Set wsForm = ThisWorkbook.Sheets("Order Form")
    Set wsDB = ThisWorkbook.Sheets("OrderData")
    ' Find the next empty row in the database
    nextRow = wsDB.Cells(wsDB.Rows.Count, "A").End(xlUp).Row + 1
    ' Get last order ID (skip header)
    If nextRow = 2 Then
        ' No orders yet ? start from 1001
        newOrderNum = 1001
    Else
        lastOrderID = wsDB.Cells(nextRow - 1, 1).Value ' e.g., ORD-1005
        newOrderNum = CLng(Replace(lastOrderID, "ORD-", "")) + 1
    End If
    ' Save the current order to database
    wsDB.Cells(nextRow, 1).Value = "ORD-" & newOrderNum
    wsDB.Cells(nextRow, 2).Value = wsForm.Range("B3").Value ' Date
    wsDB.Cells(nextRow, 3).Value = wsForm.Range("B4").Value ' Category
    wsDB.Cells(nextRow, 4).Value = wsForm.Range("B5").Value ' Product
    wsDB.Cells(nextRow, 5).Value = wsForm.Range("B6").Value ' Units
    wsDB.Cells(nextRow, 6).Value = wsForm.Range("B7").Value ' Unit Price
    wsDB.Cells(nextRow, 7).Value = wsForm.Range("B8").Value ' Revenue
    ' === Safe clear: only values ===
    Application.EnableEvents = False
    wsForm.Range("B3").Value = vbNullString
    wsForm.Range("B4").Value = vbNullString ' Category (keeps DV)
    wsForm.Range("B5").Value = vbNullString ' Product (keeps DV)
    wsForm.Range("B6").Value = vbNullString ' Units (keeps DV)
    wsForm.Range("B7").Value = vbNullString ' Unit Price (keeps DV)
    wsForm.Range("B8").Formula = "=B6*B7" ' Restore Revenue formula
    Application.EnableEvents = True
    ' Generate the next Order ID for the next entry
    wsForm.Range("B2").Value = "ORD-" & (newOrderNum + 1)
    MsgBox "Order submitted successfully!", vbInformation
End Sub

คำอธิบาย:

  • Order ID เพิ่มขึ้นอัตโนมัติหลังการส่งแต่ละครั้ง
    • การส่งครั้งแรกเริ่มที่ ORD-1001 ถ้าฐานข้อมูลว่าง
    • หลังแต่ละคลิก:
    • แมโครตรวจสอบหมายเลข order ล่าสุดที่จัดเก็บ
    • เพิ่มขึ้น 1
    • เติม B2 บนฟอร์ดด้วย ID ถัดไปที่พร้อมใช้งาน
  • มันจะล้างเฉพาะค่า ไม่ใช่สูตรหรือ data validations ดังนั้นรายการถัดไปเริ่มใหม่

ขั้นตอนที่ 6: สร้าง Dashboard Sheet

ตอนนี้คุณสามารถสร้างแดชบอร์ดจากข้อมูลคำสั่งซื้อ

  • สร้าง KPIs: คำนวณ Total Order, Sales, Units Sold, Average Order Value, ฯลฯ
  • แทรก Chart: สร้าง dynamic chart หรือแทรก PivotChart

ขั้นตอนที่ 7: จัดรูปแบบชีทให้มีลักษณะ APP

สร้าง Homepage:

  • ไปที่แท็บ Insert >> เลือก Illustrations >> เลือก Shapes
  • เลือก Button
  • ลากปุ่มเข้าเซลล์
  • คลิกขวา shape >> เลือก Link
  • เลือก Place in This Document >> เลือก sheet cell (navigation button, ไม่ต้องโค้ด)
  • เลือก Order Form
  • คลิก OK
  • ทำขั้นตอนคล้ายกัน ใส่ hyperlink สำหรับ Dashboard และ OrderData sheet
  • ภายหลัง lock orderdata เพื่อความปลอดภัย

ซ่อน Logic:

เพื่อให้ Excel ทำงานเหมือน app มากขึ้น:

  • เลือกชีท
  • คลิกขวา >> เลือก Hide
  • ป้องกันชีท Order Form ให้เปลี่ยนแปลงได้เฉพาะ input cells
  • ไปที่แท็บ View:
    • Uncheck Formula Bar
    • Uncheck Gridline

ขั้นตอนที่ 8: ทดสอบ Order App

  • ป้อนตัวอย่าง order:
    • Order ID: จะ auto-enter Order ID เอง
    • Date: ใส่วันที่ 3/1/2025
    • Category: เลือก category จาก drop-down
    • Product: เลือก Mouse จาก dependent drop-down
    • Units: เลือกจำนวนจากรายการ
    • Unit Price: เลือกราคาจาก dependent drop-down
    • Revenue: คำนวณอัตโนมัติ
  • คลิก Submit Order
  • Order ID ถัดไปจะปรากฏอัตโนมัติ
  • ฟอร์มจะถูกล้างสำหรับ order ถัดไป
  • Message box จะโผล่ถ้าส่งฟอร์มสำเร็จ
  • คลิก OK
  • ตรวจสอบชีท OrderData รายการจะปรากฏอัตโนมัติ

สรุป

คุณสามารถทำตามขั้นตอนข้างต้นเพื่อเปลี่ยนชีท Excel เป็น App คุณสามารถใช้ปุ่ม ฟอร์ม และ hidden logic สร้าง App แบบไดนามิก เครื่องมือแบบ app-like นี้เป็นวิธีทรงพลังที่จะปรับปรุงการป้อนข้อมูลและลดข้อผิดพลาดของผู้ใช้ โดยไม่ต้องลงทุนในซอฟต์แวร์เฉพาะทาง ด้วยการรวม front-end form ที่สะอาด data validation drop-downs hidden database sheet และ VBA automation เราสร้างระบบจัดการคำสั่งซื้อที่ทำงานได้จริง คุณสามารถขยาย setup นี้ด้วยแดชบอร์ด รายงานสรุป หรือแม้กระทั่ง Power Query integration สำหรับ analytics ขั้นสูง