สวัดดีครับ
มาช่วยกันใช้ความสามารถของ
Excel ให้คุ้มค่า ใน Excel
มีความสามารถอันหนึ่งเรียกว่า
แมคโคร
จริงความสามารถนี้มีการทำมาตั้งแต่
lotus123 แต่มาหลังๆ จางหายไป
เจ้าตัวแมคโครนี้สามารถทำให้
Excel ทำงานลอกเลียนแบบที่เรา kick
menu ต่างๆ หรือ พิมพ์ข้อมูลต่างๆ
ตลอดจนการสั่งพิมพ์และ
การสร้างกราฟ ปกติ จะต้องมา kick
icon หรือกดปุ่ม menu เพื่อให้
Excel ทำการพิมพ์ข้อมูล
ออกไปทางเครื่องพิมพ์
สมมุติว่าทุกวันเราต้องการออกกราฟ
การทำงานปกติก็คือ
ปรับปรุงตัวเลขแต่ละ Cell
ข้อมูลให้ตรงตามต้องการ
จากนั้นกด Icon กราฟ และ
ก็เลือกพื้นที่
ที่จะให้กราฟแสดง
จากนั้นกำหนดหมายเลขแถวและบรรทัดที่ต้องการที่จะนำมา
Plot กราฟ
จากนั้นกำหนดข้อความต่างๆเกี่ยวกับ
ค่าทางแนวนอน ค่าทางแนวตั้ง
ข้อความบนหัว กราฟ
ข้อความชนิดของข้อมูล
และอื่นๆ อีกมากมาย
ถ้างานนี้ต้องทำรายงานกราฟทุกวัน
และอาจต้องทำขั้นตอนหลังจากแก้ไข้ข้อมูลแล้วทุกครั้ง
จุดนี้เองที่สามารถนำเอา
แมคโครมาช่วยโดยก่อนที่ จะ
เริ่มทำกราฟให้ไป เลือก Menu
ที่สร้าง แมคโดร (
Tools > Macro > Record new macro ) จากนั้น
ใส่ชื่อของ แมคโครนั้น
หรือจะใช้ชื่อที่ขึ้นมาเอง (
macro1) ก็ได้ เสร็จแล้วตรงช่อง Short
Key Ctrl+ให้ใส่ชื่อปุ่มอักษร
ที่ต้องการจะสั่ง run แมคโคร
เช่น A เป็นต้น แล้วก็กดปุ่ม OK
ต่อไป ก็เริ่มทำกราฟ
ตามขั้นตอนปกติ จนเสร็จ
และเมื่อเสร็จแล้วให้กดปุ่ม
Stop หรือไปที่ menu เลือกไปที่ (
Tools > Macro > Stop Recording ) เป็นอันเสร็จพิธี
การเรียกใช้งานทำได้สองอย่าง
อย่างแรกคือกดปุ่ม Ctrl และ
ปุ่มอักษรที่เลือกไว้
พร้อมกัน โปรแกรม แมคโคร
ก็จะเริ่มทำงานตามขั้นตอน
เหมือนกับที่เราเริ่มบันทึก
แมคโครเอาไว้
ซึ่งช่วยลดขั้นตอนตรงนี้
และมันจะทำงานคล้ายกับว่ามัน
วิ่งไปได้เอง
เอ!!!!! อาจสงสัยว่า
แล้วถ้าทำกราฟค้างไว้แล้วก็ไม่เห็นต้องมาทำ
แมคโครให้ยุ่งอยาก
คำตอบก็คือ จริงครับ
แต่การทำแมคโครยังมีต่อ
อีกครับประมาณว่า ภาคสอง
คือว่า การทำงานทุกอย่างบน Excel
ถ้าจับได้ว่ามีลักษณะซ้ำคล้ายกับ
ขั้นตอนการสร้างกราฟสามารถนำ
แมคโครเข้าช่วยได้ทันทีครับ
แต่ทีนี้เพื่อให้สมกับ
ภาคสองต้องเข้าไปดูที่ภายในโปรแกรม
แมคโครซึ่งเครื่องมันเขียนให้
ตามผมมาครับ
วิธีการก็คือ ไปที่ เมนู Tools
> Macro > Macro และก็เลือกชื่อ
แมคโครที่เราสร้างไว้
จากนั้น กดที่ ปุ่ม OK
ถึงตรงนี้ก็จะเห็น Code
อะไรเยอะไปหมด เย็นไว้ครับ..
มาดูบรรทัดแรกสุด
จะเห็นได้ว่า มีคำสั่ง Sub
Macro1() ปล่อยมันครับ มาดูที่
บรรทัดสุดท้าย จะมีคำสั่ง End
Sub ซึ่งก็คือภาษา VB
นั่นเองครับ อ่าว!!!
ทำไงดีไม่คล่องเสียด้วย
ลองดูน่านะ
การนำค่า จากใน cell ออกมา
และการใส่ข้อมูลกลับลงไปใน cell
สมมุติว่าอยากจะดึงค่าจาก
ช่อง A1 ของ sheet
และสมมุติอีกว่าในช่องนั้นเป็นตัวเลข
แต่เราอยากเอาค่ามันออกมาใส่ตัวแปรเพื่อที่จะนำไป
คำนวนต่อ
ตรงทำได้โดยแทรกบรรทัดก่อนจบ
End sub() แล้วพิมพ์ Code ว่า A =
worksheets("sheet1").cells(1,1).value
เท่านี้ก็จะได้ ค่ามาอยู่ใน
ตัวแปร A ทันที มาดูที่ Code
ซักนิด
ตรงในเครื่องหมายคำพูดของ
worksheet จะเป็นชื่อ sheet ของ excel
ซึ่งตามปกติจะมีชื่อว่า Sheet1
แต่ถ้ามีการแก้ชื่อ ของ แถบ sheet
ไป
ก็ต้องมีการใส่ชื่อตรงนี้ให้ตรงกันด้วย
จากนั้นตรงที่เลข 1,1
หมายความว่าต้องการอ้างอิง
ไปที่ตำแหน่ง A1 ซึ่งแทน A
ด้วยเลข 1 นั่นเอง ( ถ้ากรณี B5
ก็จะได้เลข 5,2 ) และสุดท้าย value
หมายความว่าเราต้องการนำค่าข้อมูลออกมาจาก
cell นั่นเอง
ทีนี้
มาตามกรณีที่มีการนำค่าออกมาให้
ตัวแปร A
เราก็สามารถมากระทำต่อ
ตัวแปรนี้ได้เช่น A = A+1*5 เป็นต้น
ทำให้ค่าของ A
เปลี่ยนไปและก็มีความต้องการอีกอย่างคือ
อยากนำค่าในตัวแปร A
ใส่กลับลงไปใน cell ของ sheet อีก
ซึ่งก็จะทำได้โดยใช้คำสั่งดังนี้
worksheets("sheet1").cells(1,1).value = A
เท่านี้ก็ทำให้
มีการนำค่ากลับไปใส่ใน cell
แต่เป็นค่าที่มีการทำการคำนวนใหม่เกิดขึ้น
หรือ ถ้าเรากำหนดหมายเลข cell
ใหม่ตำแหน่งที่จะถูกส่งค่ากลับนั้น
ก็จะเปลี่ยนไปได้ตามความต้องการ
ยัง..ยังไม่พอลองมาดู code
ตัวอย่างกันครับ
For x = 1 To 20
If (x Mod 2 = 0) Then
Worksheets("Sheet1").Cells(x, 1).Value = x
End If
Next x
จาก source code
ที่เห็นจะทำให้มีการนำเลข
คู่ 2,4,6,8,10,12,14,16,18,20 ไปใส่ตาม cell ช่อง A
แบบยรรทัด เว้นบรรทัด
ซึ่งจากแนว
ทางการทำแบบนี้สามารถนำมาประยุกต์เขียนโปรแกรม
แมคโครของ Excel
ตรวจสอบเงื่อนไขต่างๆ
รวมทั้งทำงานวน Loop ได้
หรืออาจให้
ตรวจว่าถ้ามี
อักษรนี้อยู่แล้วลบค่าใน cell
นั้นออกก็จะสามารถทำได้
เนื่องจากตอนแรกมีคำพูดที่ว่า
ให้เครื่องมันสร้าง Code
ของโปรแกรมเอง
จุดนี้เราก็สามารถประยุกต์
โดยไป Record การทำงานบางอย่างที่
เราต้องการแล้วตามเข้าไปดู Code
ที่ถูกสร้างออกมา
ตัดเอาเฉพาะส่วนเพื่อนำมาทำงานร่วมกับโปรแกรม
ที่เราเขียนขึ้นจุดนี้ทำให้เรา
ง่ายเข้าในการที่จะทำให้ Excel
มันฉลาดขึ้น
เช่นอาจจะให้มันทำให้ cell
ช่องนั้นๆ เป็นสีแดง
ถ้าเป็นเลขคู่เพื่อจะทำให้ดูง่ายมีสีสัน
การเขียนโปรแกรมก็ทำตามเทคนิดที่กล่าวไป
แล้วนำ code
ที่ได้มามาแทรกในช่วง if statement ออ...
บางครั้งตรงการอ้างหมายเลข cell
ถ้าเป็นตัวแปรอาจมีปัญหา
ให้แก้ โดยใช้คำสั่ง Worksheets("Sheet1").Cells(x,
1).select แทนเพื่อทำการเลือก cell
นั้นๆ
ส่วนใหญ่ใน Excel
จะมีการเขียนเขียน
สูตรข้างในมากมายเล่นเอาคนมาดูทีหลัง
งง ลองเอา code
นี้ไปเรียกรายละเอียดมันออกมาซิครับ
For i = 1 To 50
Windows("y.xls").Activate
a = Cells(i, 1).Formula
b = Cells(i, 12).Formula
b = "'" & b
Windows("z.xls").Activate
Sheet1.Cells(i, 1).Value = a
Sheet1.Cells(i, 2).Value = b
Next i
โดย Code
ที่เห็นจะทำงานเริ่มจาก
เปิด Excel file ไว้ 2 file ชื่อ y
กับ ชื่อ z โดยที่ file y
จะเป็นตัวที่มีสูตรอยู่ และfile
z จะเป็นผลลัพธ์
ชื่อเหล่านี้สามารถแก้ได้ตามใจชอบครับ
แล้วก็กรณีจะไปกระทำที่ cell
ตำแหน่งอื่นๆก็ลองตรวจสอบตัวแปรดูเพื่อให้เป็นไปตามความต้องการ
ยังไม่จบเลยแฮะ ไว้ต่อภาค สาม
ละกันนะ จะเขียนเกี่ยวกับการเอา
Excel ไปดึง
ข้อมูลจากฐานข้อมูลใหญ่ๆ
เช่นระบบ
ฐานข้อมูลเพื่อง่าย
ต่อการ ทำรายงานโดย Excel.
ข้อความใดผิดพลาดหรือไม่เข้าใจ
ขออภัยมา ณ.ที่นี้ด้วยครับ!!!!!!