Office Automation ด้วย Excel VBA สร้างจำนวนบรรทัดตามปริมาณสินค้าแต่ละรายการ

Office Automation ด้วย Excel VBA - สร้างจำนวนบรรทัดตามปริมาณสินค้าแต่ละรายการ
Office Automation ด้วย Excel VBA สร้างจำนวนบรรทัดตามปริมาณสินค้าแต่ละรายการ

นักเรียนคอร์ส เปลี่ยนงานถึกเป็นงานเทพด้วย Excel VBA (ZOOM) ถามเข้ามา

“อาจารย์ ช่วยไกด์ให้หน่อยได้มั้ยคะ ว่าโจทย์นี้ต้องทำอย่างไร”

ตอบ: โจทย์นี้ ทำได้ 3 วิธี เรียงจากง่ายไปยาก (ตามความคิดของผมนะครับ)
1) ใช้ Power Query ทำ UnPivot เลย แล้วค่อยมาเติมจำนวนให้เป็น 1 เอาเอง
2) VBA loop ก้อปปี้ค่าไปวางตามจำนวนได้เลย
3) เขียนสูตร…ก็จะต้องมีคอลัมน์ช่วย ก็จะมีหลายขั้นตอนสักหน่อย
เลือกแบบไหนดีครับ?

“เป็น VBA ดีกว่าค่ะ อยากฝึกใช้งาน VBA ที่เรียนมาด้วยค่ะ เดี๋ยวขอลองเองก่อนค่ะ”

วันนี้เลยเอางานที่ถามนั้น มาเขียนโค้ด ให้ดูกันครับ

อย่างที่บอกงานนี้ง่ายกว่าการเขียน สูตรเยอะเชียว
งานนี้ใช้แค่ 9-10 บรรทัดเองครับ

👉 #โจทย์คือ…

  • มีรายการสินค้าในคอลัมน์ B
  • แล้วมี ปริมาณของแต่ละสินค้าในคอลัมน์ C
  • แล้วอยากสร้างตารางทางขวาให้มีจำนวนบรรทัดของสินค้าแต่ละรายการตามปริมาณสินค้า
  • แล้วให้ใส่เลข 1 แทนลงใจคอลัมน์ปริมาณสินค้า

👉 #งานลักษณะนี้มีแนวคิดคือ…..

  • loop ไปที่ตารางสินสินค้า
  • ระหว่าง Loop ก็ เก็บค่าปริมาณสินค้าในคอลัมน์ C เข้าตัวแปร เพื่อเอาไปใช้ต่อในการกำหนดจำนวนบรรทัด
  • จากนั้นก็ Copy ข้อมูลทีละบรรทัดไปวางที่ตารางทางขวา โดยต้องหาตำแหน่ง TargetRow ให้ทุกรอบการ Loop
  • และในการวาง แทนที่จะวางทีละ 1 บรรทัด ก็ให้กำหนดช่วงตามจำนวนบรรทัด แล้ววางลงในคราวเดียวเลย.
  • แล้วสุดท้ายก็ ใส่จำนวน 1 ลงในคอลัมน์ ปริมาณ
  • เป็นอันว่าเสร็จพิธี ครับ 🙂

👉 #แนวคิดในการเขียนโค้ด ( Office Automation ด้วย Excel VBA)

  • 1) Loop ไปที่ตารางรายการสินค้า
  • 2) สร้างตัวแปร 3 ตัวคือ…
  • 1) ตัวแปร i Type Long, รับค่าบรรทัดเพื่อการ Loop
  • 2) ตัวแปร ProdQTY as long รับค่าปริมาณของสินค้าแต่ละรายการ
  • 3) ตัวแปร MyTargetRow รับค่าตำแหน่งที่จะวางข้อมูล
  • 3) ระหว่าง loop
  • 3.1 ให้เช็คว่า เก็บค่าปริมาณสินค้าไว้ในตัวแปร ProdQTY
  • 3.2 Copy บรรทัดที่ Loop ไปวางโดยมีตำแหน่งเท่ากับ MyTargetRow ถึง MyTargetRow + ProdTQY- 1
  • 3.3 แล้วเติมค่า 1 ลงในคอลัมน์ปริมาณ (๋J) เท่ากับตำแหน่งที่ Paste ข้อมูล

** ด้วย Code เพียง 8-9 บรรทัด เราก็สามารถสั่งให้ Excel ทำงานแทนเราได้แล้ว **

👉 ได้โค้ดง่าย ๆ แบบนี้

Sub GenerateRowsByProdQTY()

Dim i As Long, ProdQty As Long, MyTargetRow As Long
For i = 8 To Range(“B” & Rows.Count).End(xlUp).Row
ProdQty = Range(“C” & i).Value
MyTargetRow = Range(“I” & Rows.Count).End(xlUp).Row + 1
Range(“B” & i, “F” & i).Copy
Range(“I” & MyTargetRow, “I” & MyTargetRow + ProdQty – 1).PasteSpecial xlPasteValuesAndNumberFormats
Range(“J” & MyTargetRow, “J” & MyTargetRow + ProdQty – 1).Value = 1
Next i
End Sub

👉 เราสามารถใช้VBAช่วยแก้ปัญหางานที่เยอะ ๆ ยาก ๆ น่าเบื่อ เสียเวลาเยอะ ๆ เหมือนทำไม่มีวันเสร็จ ให้เสร็จได้ในเวลาเพียงไม่ถึง 1 วินาที

งาน VBA ลักษณะนี้เป็นงานที่ช่วยเพิ่ม Productivity ให้กับเราได้เป็นอย่างมาก ที่สำคัญมันใช้เพียงความรู้ VBA ในระดับเบื้องต้น เท่านั้น

ลองศึกษา และฝึกใช้งาน Excel VBA กันดูนะครับ แล้วจะรู้ว่าชีวิตดีขึ้นมากมาย
ขอให้สนุกกับการเรียน และใช้งาน Excel VBA ครับ

👉 #สำหรับผู้ที่สนใจเรียนVBA สำหรับงาน Office Automation

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

รีบสมัครมาได้เลย!!!

👉 ทักมาคุยกันก่อนที่ m.me/excelbypichart หรือ โทร. 099-084-2562
🔸 ปูพื้นฐานการเขียนโค้ด VBA ตั้งแต่เริ่ม ไม่ต้องมีพื้นฐาน Coding มาก็เรียนรู้เรื่อง และจะเขียนโค้ดเองได้ ไม่ใช่การบันทึก macro แล้วปรับ ๆ แก้ ๆ แต่เรียนเขียนโค้ด VBA จริง ๆ

🔸 เรียนจบมี…

  • มี Certificate
  • รับเข้ากลุ่มปิด Facebook เพื่อพูดคุยสอบถามเรียนรู้เพิ่มเติม
  • สามารถชมคลิปการเรียนย้อนหลังได้ตลอดเวลา

🔸 รับจำนวนจำกัด เพียง 10 คน
🔸 คอร์สนี้ต้องใช้เวลาเรียน 2 วันเต็ม ๆ
🔸 สอนด้วย ZOOM
– นั่งเรียนที่บ้านไม่ต้องเดินทางให้เสียเวลา
– คนอยู่ต่างจังหวัดก็เรียนได้
👉 ติดต่อสอบถามเนื้อหาเพิ่มเติม หรือสมัครได้ที่ลิงค์นี้ m.me/excelbypichart หรือ โทร. 099-084-2562
————//————
อ.ชาติ
Learn Excel With Pichart
Smart Excel For Better LIFE

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *