สวัดดีครับ
มาช่วยกันใช้ความสามารถของ 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. ข้อความใดผิดพลาดหรือไม่เข้าใจ ขออภัยมา ณ.ที่นี้ด้วยครับ!!!!!!

Hosted by www.Geocities.ws

1