Excel VBA ตอนที่ 1 – Safe VBA

Excel VBA ตอนที่ 1 – Safe VBA

วิธีทำให้รหัส VBA ทำงานได้อย่างปลอดภัย
ทำงานไม่ผิดแฟ้มและค่าไม่เพี้ยนเมื่อ copy ไปที่อื่น
โดยเขียนเพิ่มคำสั่ง ThisWorkbook.Activate
และแก้ให้ Paste Special แบบ Value

Download แฟ้ม myVBACode.bas ได้จาก
https://drive.google.com/open?id=0Bxpfgh-rqhIWR2VfNVhIQ2dUNEk

วิธีประยุกต์ใช้ Excel ในงานวางแผนกำหนดการ (Scheduling)

วิธีประยุกต์ใช้ Excel ในงานวางแผนกำหนดการ (Scheduling) ตอนที่ 1

วิธีคำนวณหาระยะเวลาที่ใช้ทำงานในแต่ละกะ
แทนที่จะสร้างสูตรลัดแต่ซ้อนกันยาวเหยียดในเซลล์เดียว
มาชมทางออกที่ดีกว่า โดยออกแบบตารางช่วยคำนวณทีละขั้น
สูตรหาระยะเวลา = Minปลาย – Maxต้น

Download ตัวอย่างได้จาก
https://drive.google.com/open?id=0Bxpfgh-rqhIWQjdsQUJyV3FWN00

=====

วิธีประยุกต์ใช้ Excel ในงานวางแผนกำหนดการ (Scheduling) ตอนที่ 2a

จะวางแผนการรับเงินผ่อนชำระแบบรายเดือนได้อย่างไร
ลูกค้าบางรายผ่อนทุกเดือน บางรายผ่อนแบบเดือนเว้นเดือน หรือทุกกี่เดือนก็ได้

Download ตัวอย่างได้จาก
https://drive.google.com/open?id=0Bxpfgh-rqhIWSnF6Z2RqZko3Yjg

=====

วิธีประยุกต์ใช้ Excel ในงานวางแผนกำหนดการ (Scheduling) ตอนที่ 2b

วิธีวางแผนการรับเงินผ่อนชำระแบบเดือนเว้นเดือนหรือทุกกี่เดือนก็ได้
เผยเคล็ดการใช้สูตร Mod หาตำแหน่งเดือนจากตัวเลขที่ไม่มีในตาราง

กรณีกำหนดให้ยอด Amount เกิดขึ้นตั้งแต่ Start
ใช้สูตร =IF(Date>=Start,Amount,0)

กรณีกำหนดให้ยอด Amount เกิดขึ้นไม่เกิน Stop
ใช้สูตร =IF(Date<=Stop,Amount,0)

กรณีกำหนดให้ยอด Amount เกิดขึ้นในช่วงตั้งแต่ Start จนถึง Stop
ใช้สูตร =IF(AND(Date>=Start,Date<=Stop),Amount,0)

กรณีกำหนดให้ยอด Amount เกิดขึ้นนอกช่วงตั้งแต่ Start จนถึง Stop
ใช้สูตร =IF(OR(DateStop),Amount,0)

กรณีกำหนดให้ยอด Amount เกิดขั้นในช่วงตั้งแต่ Start จนถึง Stop
และให้เกิดขึ้นทุกระยะเวลาของ Cycle
ใช้สูตร
=IF(AND(Date>=Start,Date<=Stop,
OR(MOD(Date-Start+1,Cycle)=1,Cycle=1)),Amount,0)

เคล็ดของการคำนวณให้ยอด Amount เกิดขึ้นทุกระยะเวลาของ Cycle แล้วยังสามารถขยับตามวันที่เริ่ม Start นั้น อยู่ที่สูตร Date-Start+1 ซึ่งแทรกในสูตร MOD(Date-Start+1,Cycle)=1 โดยเป็นสูตรซึ่งทำหน้าที่เปลี่ยนวันที่ Date เดิมให้เป็น Date ใหม่ ทำให้ Date เดิม ไม่ว่าเป็นวันที่ใด แต่หากตรงกับวันที่เริ่ม Start จะถูกคำนวณเปลี่ยนเป็นวันที่ 1 เสมอ แล้วทำให้วันที่ถัดไปกลายเป็นวันที่ 2, 3, 4 เพิ่มขึ้นที่ละ 1 เรื่อยไป

Download ตัวอย่างได้จาก
https://drive.google.com/open?id=0Bxpfgh-rqhIWSnF6Z2RqZko3Yjg

=====

วิธีประยุกต์ใช้ Excel ในงานวางแผนกำหนดการ (Scheduling) ตอนที่ 3

เบื้องหลังของการทำ Financial Feasibility Study หรืองานวางแผนการเงิน
การวางแผน Cash In-Flow ซึ่งสามารถกำหนดรูปแบบรายรับได้หลายแบบ
ไม่จำเป็นต้องรับเท่ากันทุกงวด จะกำหนด Cash In-Flow ตามกำหนดใดก็ได้
โดยใช้สูตร Index ควบคุมกำหนดการ

Download ตัวอย่างได้จาก
https://drive.google.com/open?id=0Bxpfgh-rqhIWX1B6YkQzaHlJMTQ

=====

วิธีประยุกต์ใช้ Excel ในงานวางแผนกำหนดการ (Scheduling) ตอนที่ 4

วิธีวางแผนแบบ Just-in-Time เพื่อเตรียมส่งของให้ลูกค้าตรงตามกำหนดเวลา
โดยใช้สูตร Offset ควบคุมกำหนดการให้คิดย้อนหลังจากอนาคตมาปัจจุบัน
เมื่อทำได้จะช่วยประหยัดเงินเป็นแสนเป็นล้าน ไม่ต้องซื้อโปรแกรมสำเร็จรูปมาใช้

หลักการสำคัญ
ใช้สูตร Min IF Array เพื่อบอกตำแหน่งรายการ
ซึ่งเป็นเคล็ดลับสำคัญทำให้เปลี่ยนโครงสร้างการสั่งซื้อหรือผลิตได้ตามใจ
จากนั้นใช้สูตร Indirect+Address เพื่อหาจำนวนที่ต้องการไปออกใบสั่งซื้อ

Download ตัวอย่างได้จาก
https://drive.google.com/open?id=0Bxpfgh-rqhIWNEJ5bUk1Q00zLTg

=====

วิธีประยุกต์ใช้ Excel ในงานวางแผนกำหนดการ (Scheduling) ตอนที่ 5

วิธีสร้างปฏิทินพันปี โดยใช้สูตรวันที่ของ Excel และใช้สีแสดงวันหยุด
แจกตัวอย่างแฟ้ม Excel แสดงปฏิทินปีค.ศ. 2018
ซึ่งคุณสามารถกำหนดวันหยุดประจำปีได้เอง
สามารถเลือกแสดงปฏิทินช่วงปีใดก็ได้ ระหว่างปีค.ศ.1900 – 9999
หรือปรับช่วงปีโดยใส่เลขที่ปีที่ต้องการลงไปในช่อง This Year

Download ตัวอย่างได้จาก
https://drive.google.com/open?id=0Bxpfgh-rqhIWRlFiVkp1NjhwNjg

=====

วิธีประยุกต์ใช้ Excel ในงานวางแผนกำหนดการ (Scheduling) ตอนที่ 6

วิธีคำนวณหาระยะเวลาทำงาน ในช่วงกะหนึ่งๆ
แสดงที่มาของสูตรสั้นๆ Min ปลาย – Max ต้น
แทนการใช้สูตร IF ซ้อน IF ซึ่งต้องซ้อนกันถึง 7 ชั้น
อย่าใช้แค่สมองคิดสูตร ต้องใช้สายตาช่วยคิดด้วย

Download ตัวอย่างได้จาก
https://drive.google.com/open?id=0Bxpfgh-rqhIWejFZNDB0bC1xUDQ

=====

วิธีประยุกต์ใช้ Excel ในงานวางแผนกำหนดการ (Scheduling) ตอนที่ 7

วิธีสร้างแถบสีบอกช่วงระยะเวลาทำงานด้วย Conditional Formatting
ซึ่งเปลี่ยนเป็นสีต่างๆได้เองแล้วแต่ว่าทำงานติดต่อกันกี่วัน
โดยประยุกต์ใช้สูตร Min ปลาย – Max ต้น เพื่อคำนวณหาระยะเวลาที่ทำงานติดต่อกัน

Download ตัวอย่างได้จาก
https://drive.google.com/open?id=0Bxpfgh-rqhIWMVhUemdhTzRyWWM

ตัวอย่างใหม่ใช้ Array น้อยลง
https://drive.google.com/open?id=0Bxpfgh-rqhIWdXdfdmxPbllkdlU

=====

วิธีประยุกต์ใช้ Excel ในงานวางแผนกำหนดการ (Scheduling) ตอนที่ 8

วิธีสร้างตารางคำนวณค่าแรงของลูกจ้าง แยกค่าแรงปกติและค่าล่วงเวลา
และใช้เป็นฐานข้อมูลไปในตัว พร้อมสร้างแถบสีแบบ Gantt Chart
โดยประยุกต์ใช้สูตร Min ปลาย – Max ต้น

Download ตัวอย่างได้จาก
https://drive.google.com/open?id=0Bxpfgh-rqhIWYjk3ZnZnSzJaQW8

=====

วิธีประยุกต์ใช้ Excel ในงานวางแผนกำหนดการ (Scheduling) ตอนที่ 9

วิธีออกแบบ Queueing Module เพื่อจัดลำดับคิวการทำงาน
คำนวณหาเวลาเริ่มงานแต่ละขั้นจนเสร็จสิ้น และแสดงเป็น Gantt Chart

Download ตัวอย่างได้จาก
https://drive.google.com/open?id=0Bxpfgh-rqhIWVEVLUXFGbUNHVWM

=====

วิธีประยุกต์ใช้ Excel ในงานวางแผนกำหนดการ (Scheduling) ตอนที่ 10

วิธีออกแบบ MRP Module เพื่อวางแผนความต้องการวัสดุเพื่อใช้ในการผลิต
(Material Requiements Planning) ซึ่งปกติต้องซื้อโปรแกรมแพงๆมาใช้
เมื่อ copy module ไปวางต่อๆกันแล้ว ตัวแปรจะรับส่งไปคำนวณต่อให้เอง

Download ตัวอย่างได้จาก
https://drive.google.com/open?id=0Bxpfgh-rqhIWMkQ1dnhyZi01anc

=====

วิธีดึงรูปภาพมาแสดงประกอบรายการ

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

Download ตัวอย่างเก่าได้จาก
http://www.excelexperttraining.com/extreme/files/database/picturelist.xls

ตัวอย่างใหม่
https://drive.google.com/open?id=0Bxpfgh-rqhIWVTFNRGstM29NRTg

วิธีจับขโมย

วิธีแก้แค้นคนที่ชอบโอ้อวดว่า เขาสร้างแฟ้มเอง คิดเองกับมือ
ทั้งๆที่ความจริงแล้วเขาขโมยแฟ้มของคนอื่นมาใช้

Download ตัวอย่างได้จาก
https://drive.google.com/open?id=0Bxpfgh-rqhIWWWFNNWJkWVBQQVU
แจกแฟ้มไปแกะ (ใจอ่อนครับ)

Managing Data with Excel VBA

Managing Data with Excel VBA ตอนที่ 1

วิธีนำรายการใหม่ไปบันทึกเพิ่มต่อท้ายรายการสุดท้ายในตารางฐานข้อมูล

โดยใช้รหัส VBA แค่ 3 บรรทัด
ThisWorkbook.Activate
MyVar = [Source]
[Target] = MyVar

Download ตัวอย่างได้จาก
https://drive.google.com/open?id=0Bxpfgh-rqhIWYXA3VW9GZEtvV0k

=====

Managing Data with Excel VBA ตอนที่ 2

วิธีใช้สูตร Dynamic Range นำรายการใหม่ทั้งหมด กี่รายการก็ได้
ไปบันทึกเพิ่มต่อท้ายรายการสุดท้ายในตารางฐานข้อมูล

โดยใช้รหัส VBA แค่ 3 บรรทัด
ThisWorkbook.Activate
MyVar = [Source]
[Target] = MyVar

Download ตัวอย่างได้จาก
https://drive.google.com/open?id=0Bxpfgh-rqhIWd3U3d1VIc0R6bDg

=====

Managing Data with Excel VBA ตอนที่ 3

วิธีใช้สูตร Dynamic Range แบบ Dynamic Sheet
นำรายการข้อมูลจากแต่ละชีท กี่รายการก็ได้ มารวมไว้เป็นชีทเดียว
โดยบันทึกเพิ่มต่อท้ายรายการสุดท้ายในตารางฐานข้อมูล

คราวนี้มาเพิ่มรหัส MsgBox “Done” เพื่อแสดงผลว่าทำงานเสร็จแล้ว

Download ตัวอย่างได้จาก
https://drive.google.com/open?id=0Bxpfgh-rqhIWN1duSDZ5Wkp3U3c

=====

Managing Data with Excel VBA ตอนที่ 4

วิธีทำให้ Excel สื่อสารบอกให้คุณตัดสินใจก่อนว่า จะทำงานต่อไปหรือไม่
โดยใช้ MsgBox ร่วมกับ IF ใน VBA

Download ตัวอย่างได้จาก
https://drive.google.com/open?id=0Bxpfgh-rqhIWU2JETjJQci1TUkU

=====

Managing Data with Excel VBA ตอนที่ 5

วิธีทำให้ VBA ช่วยตัดสินใจว่าข้อมูลที่บันทึกเป็นรายการใหม่หรือรายการเก่า
ถ้าเป็นรายการใหม่ ให้บันทึกเพิ่มต่อท้ายรายการสุดท้ายในตารางฐานข้อมูล
ถ้าเป็นรายการเก่า ให้บันทึกทับรายการเดิมที่มีอยู่แล้วในตารางฐานข้อมูล
โดยใช้ชื่อ Target ชื่อเดิมชื่อเดียวแต่ย้ายตำแหน่งตามเงื่อนไขได้เอง

หมายเหตุ วิดีโอนี้อัดตอนฝนตกครับ
ขอแก้ตอนที่ 6 เป็นตอนที่ 5 ด้วยครับ ฟังเสียงฝนเพลินไปหน่อย

Download ตัวอย่างได้จาก
https://drive.google.com/open?id=0Bxpfgh-rqhIWVWU2Rnhnb2YzWjQ

เครื่องหมาย $ คือหัวใจของ Excel


ทำไมต้องใส่ $ 2 ตัวบ้าง ตัวเดียวบ้าง ไม่ใส่เลยบ้าง
ความรู้พื้นฐานที่ทุกคนต้องใช้ให้เป็นและสร้างเป็นด้วย
บางคนมีบุญแต่กรรมมาบังเพราะแก้ $ ไม่เป็น

วิธีแก้ตาลาย

วิธีแก้ตาลาย โดยใส่สีพื้น row สลับกันไปมา
พอ Insert ก็จะสลับสีให้เองอัตโนมัติ
โดยใช้สูตร =MOD(ROW(),2)=0 ร่วมกับ Conditional Formatting

=Row() จะคืนค่าเป็นเลขที่ของ row

=Mod(เลขที่ของ row,2) เป็นการนำเลขที่ row ไปหารด้วยเลข 2 จะได้ผลลัพธ์เป็นเศษที่เหลือจากการหาร เช่น
3/2 เหลือเศษ 1
4/2 หารลงตัว เหลือเศษ 0

=MOD(ROW(),2)=0 เป็นสูตรหา row ที่เป็นเลขคู่ เพราะเลข row/2 หารลงตัวแล้วเศษ =0

สูตรนี้จะเปลี่ยนสี Row เลขคู่

หมายเหตุ

ควรใช้กับพื้นที่ตารางส่วนที่จำเป็นเท่านั้นครับ เพราะ Conditional Format จะทำการเปลี่ยนสีให้เมื่อมีการเลื่อนพื้นที่ขึ้นมาให้เห็นบนหน้าจอ ถ้าพื้นที่ใหญ่มากจะทำให้ Excel ช้าลง

จะค้นหาเซลล์ที่บันทึกวันที่ผิดวิธีได้อย่างไร

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

Provide feedback with animation


Excel 2016 กลายเป็น Excel รุ่นที่ถูกตำหนิว่าเป็นรุ่นที่แย่ที่สุด
เพียงเพราะมัน Animated แบบการ์ตูน ขยับไปขยับมา จนทำให้เมื่อยสายตา
มาเลิกใช้ Provide feedback with animation ดีกว่าไหม

ทำเลทองในการสร้างสูตร


สูตรที่จะใช้งานได้จริง ต้องสร้างแล้วนำไปใช้ได้ทุกที่
ไม่ใช่สร้างแล้วใช้ได้ เพราะแค่ฟลุ้คบังเอิญใช้งานได้