หน้าเว็บ

วันเสาร์ที่ 9 มีนาคม พ.ศ. 2562

VBA Excel - Range Property and Method

การเข้าถึง Range ใน Excel ด้วย VBA ในบทความ VBA Excel - Range นั้นเป็นการชี้เป้าเพื่อให้เห็นว่าเรากำลังจะจัดการกับเซลล์หรือช่วงเซลล์ใด เมื่อเข้าไปถึงเซลล์นั้นแล้วในบทความนี้จะกล่าวถึงการกำหนด คุณสมบัติ (Property) และ การกระทำ (Method) ต่าง ๆ กับเซลล์ที่เราต้องการ

Video ด้านล่างนี้สาธิตการกำหนด Property เช่นกำหนดค่า กำหนดสีให้กับ Font กำหนด Font ให้เป็นตัวหนา การใช้ Method เพื่อ Clear ข้อมูลของเซลล์เป้าหมาย วิธีเลือกข้อมูลเป้าหมายโดยไม่รวมหัวคอลัมน์ การลบเซลล์เป้าหมาย เป็นต้น

Video แสดงการกำหนด Property และ Method ให้กับ Range

Video แสดงการกำหนด Property และ Method ให้กับ Range (ต่อ)

กรณีมีปัญหาการใช้งาน Excel and VBA สามารถสอบถามได้ที่ snasui.com

VBA Excel - Range

การใช้งาน VBA ควบคุม Excel นั้น เราทราบกันแล้วว่าจำเป็นต้องศึกษาเกี่ยวกับ Object Model ของ Excel เพื่อที่จะเขียน Code ควบคุม Object ต่าง ๆ ของ Excel ได้ตามต้องการ ในตอนนี้เราจะกล่าวถึงการเข้าถึง Range ใน Excel ซึ่งเป็น Object ที่สำคัญอย่างยิ่ง เนื่องจากว่าข้อมูลต่าง ๆ ของเราจะบรรจุอยู่ในเซลล์ การเข้าถึงเซลล์จะมีหลาย ๆ ลักษณะด้วยกัน เช่นเข้าถึงเซลล์เดี่ยว เข้าถึงช่วงเซลล์ เข้าถึงเซลล์โดยระบุบรรทัด เข้าถึงเซลล์ทั้งบรรทัด เข้าถึงเซลล์ทั้งคอลัมน์ เป็นต้น

Video ด้านล่างนี้จะอธิบายพร้อมสาธิตการเขียน Code VBA เพื่อเข้าถึงเซลล์ในลักษณะต่าง ๆ โดยจะแสดงหน้าต่างการทดสอบ Code ประกอบการบรรยาย ทำให้เห็นอย่างชัดเจนว่าการเข้าถึงเซลล์ในลักษณะต่าง ๆ นั้นให้ผลเป็นอย่างไร นอกจากนี้ยังแสดงการเข้าถึงเซลล์แบบใช้การอ้างอิงเซลล์อื่นเพื่อไปยังเซลล์เป้าหมาย การขยายช่วงเซลล์เป้าหมาย การเข้าถึงเซลล์ของชีตอื่น ๆ เป็นต้น


กรณีมีปัญหาการใช้งาน Excel and VBA สามารถสอบถามได้ที่ Excel Forum

VBA Excel - Workbook and Worksheet

ในการจัดการไฟล์และชีตของ Excel เราจะต้องเข้าถึง Object ที่ชื่อว่า Workbook และ Worksheet โดยจะต้องทราบ Method และ Property ของ Object ดังกล่าวด้วยเพื่อที่จะกำหนดค่าหรือควบคุม การทำงานของไฟล์และชีตได้

ใน Video ด้านล่างนี้ได้แสดงตัวอย่างการเขียน Code เพื่อที่จะเข้าถึง Workbook และ Worksheet พร้อมทั้งกำหนดค่าเช่นการเพิ่มไฟล์ การ Save As เพื่อจัดเก็บไฟล์ การเปิด การปิดไฟล์ การเปลี่ยนชื่อชีต การย้ายชีตไปยังตำแหน่งที่ต้องการ

Video แสดงการเข้าถึง Workbook Worksheet และการกำหนดค่า

กรณีมีปัญหาการใช้งาน Excel และ VBA สามารถสอบถามได้ที่ Excel Forum

VBA Excel - Object Model

การเขียนโปรแกรมควบคุม Excel ด้วย VBA จำเป็นที่จะต้องเรียนรู้ Object ของ Excel เบื้องต้นที่เราต้องรู้จักเพื่อทีจะเขียนโปรแกรมควบคุม Object ของ Excel ได้แก่ Application, Workbook, Worksheet, Chart, Cell, Range, Shape เป็นต้น

นอกจากนี้ยังจำเป็นต้องทราบเกี่ยวกับการกระทำ (Method) และคุณสมบัติ (Property) ที่สำคัญของ Object นั้น ๆ เพื่อที่จะกำหนดค่า กำหนดการกระทำของ Object นั้น ๆ ได้

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

Video บรรยาย Object Model ของ Excel

กรณีมีปัญหาเกี่ยวกับการใช้งาน Excel และ VBA สามารถสอบถามได้ที่ Excel Forum

วันเสาร์ที่ 17 กุมภาพันธ์ พ.ศ. 2561

แยกข้อมูลในเซลล์โดยให้ค่าที่ซ้ำแสดงค่าเดียว

Smile ปกติแล้วการแยกค่าในเซลล์เดียวเป็นหลายเซลล์สามารถใช้ Data > Text to columns เข้ามาช่วยได้ และถ้าหากในเซลล์นั้นคั่นแต่ละส่วนด้วยอักขระใด ๆ แล้วจะยิ่งแยกได้โดยง่าย แต่หากว่าเซลล์นั้นมีค่าซ้ำกันหลายค่าแต่เราต้องการนำค่าที่ซ้ำกันนั้นมาแสดงเพียงค่าเดียวย่อมจะมีความยุ่งยากลำบากกว่าปกติ

ยกตัวอย่างตามภาพด้านล่างจะมีอักขระในเซลล์ A1 คั่นแต่ละส่วนด้วยเครื่องหมายคอมม่า ซึ่งจะพบว่ามีหลายส่วนเป็นค่าที่ซ้ำกัน หากเราต้องการแยกค่าเหล่านั้นออกมาแสดงในแต่ละเซลล์โดยผลลัพธ์เริ่มตั้งแต่ B2 เรียงลงไปด้านล่างโดยต้องการให้ค่าที่ซ้ำกันแสดงเพียงค่าเดียว เราจำเป็นจะต้องใช้สูตร Array เข้ามาช่วย Star

ภาพแสดงแยกข้อมูลในเซลล์โดยให้ค่าที่ซ้ำแสดงค่าเดียว

ที่เซลล์ B2 เราสามารถเขียนสูตรได้ดังนี้

=IFERROR(INDEX(TRIM(MID(SUBSTITUTE( $A$2,",",REPT(" ",50)),50(ROW(INDIRECT("1:50"))-1)+1,50)),SMALL( IF(FREQUENCY(MATCH(TRIM(MID(SUBSTITUTE($A$2,",",REPT(" ",50)),50(ROW( INDIRECT("1:50"))-1)+1,50)),TRIM(MID(SUBSTITUTE($A$2,",",REPT(" ",50)), 50*(ROW(INDIRECT("1:50"))-)+1,50)),0),ROW(INDIRECT("1:"&LEN($A$2)))),
ROW(INDIRECT("1:"&LEN($A$2)))),ROWS(B$2:B2))),"")

Ctrl+Shift+Enter > คัดลอกสูตรลงด้านล่าง สามารถดาวน์โหลดไฟล์ตัวอย่างไปศึกษาได้ตามสะดวก

กรณีมีปัญหาเกี่ยวกับการใช้งาน Excel และ VBA สามารถสอบถามได้ที่ Excel Forum