? การเลือกข้อมูลที่อยู่ในตารางหลายคอลัมน์หลายบรรทัดมาเรียงใหม่โดยพิจาณาจากค่าในเซลล์ว่าต้องเข้าเงื่อนไขตามที่กำหนดจึงจะนำมาใช้งาน โดยไม่ได้เลือกมาเฉพาะค่าในเซลล์ แต่เลือกคอลัมน์แรกของตารางที่ตรงกับค่าดังกล่าวและบรรทัด
ที่เป็นหัวคอลัมน์ที่ตรงกับค่าดังกล่าวมาด้วย งานลักษณะนี้หากต้องเลือกด้วยสายตาย่อมจะเสียเวลามาก จำเป็นต้องพึ่งพา VBA เข้ามาช่วยจัดการ ?
Video ด้านล่างนี้สาธิตการเขียน Code เพื่อหาค่าตามเงื่อนไขที่ต้องการจากตารางโดยเลือกเฉพาะค่าที่น้อยกว่า 0 หากพบค่านั้นจะนำค่าในคอลัมน์แรกของบรรทัดนั้น พร้อมกับค่าในบรรทัดแรกซึ่งเป็นหัวคอลัมน์ของข้อมูลมาด้วย สามารถที่จะนำประยุกต์ใช้ค้นหาข้อมูลตามเงื่อนไขใด ๆ ที่ซับซ้อยกว่านี้ได้ตามต้องการ เหมาะที่จะใช้กับข้อมูลจำนวนมากและเหมาะกับผู้ที่มีความรู้เกี่ยวกับ VBA สามารถที่จะลดเวลาการทำงานกับข้อมูลจำนวนมากให้เหลือระดับวินาที ตัวอย่าง Code ตามด้านล่างครับ ?
Sub CollectDataByCondition() Dim r As Range, arr(999, 2) As Variant, i As Integer Sheets("Result").UsedRange.ClearContents With Sheets("Vacancy") For Each r In .Range("c2").resize(.UsedRange.Rows.Count, _ .UsedRange.Column.Count).SpecialCells(xlcelltypecontstants, 1) If r.Value < 0 Then arr(i, 0) = Cells(1, r.Column).Value arr(i, 1) = .Cells(r.Row, 2).Value arr(i, 2) = 1 i = i + 1 End If Next r With Sheets("Result") .Range("a1:c1").Value = Array("Position", "Store", "Vacancy") .Range("a2").Resize(i, 3).Value = arr End With End With MsgBox "Finished", vbInformation End Sub
📹Video แสดงการค้นหาข้อมูลที่น้อยกว่า 0
🧭 Timeline หัวข้อหลัก
- 00:00:13 แนะนำวัตถุประสงค์: คัดเลือกข้อมูลตามเงื่อนไขแล้วจัดเรียงใหม่
- 00:00:24 เงื่อนไขคือเซลล์ที่มีค่า -1 จะถูกนำมาใช้งาน
- 00:00:32 นำหัวคอลัมน์มาใส่ในคอลัมน์ Position
- 00:00:37 นำค่าจากคอลัมน์ B มาใส่ในคอลัมน์ Store
- 00:00:40 กำหนดค่า Vacancy เป็น 1
- 00:00:54 วางผลลัพธ์ที่ชีต Result เริ่มจาก A2
- 00:01:04 เปิด VBE และสร้าง Module ใหม่
- 00:01:10 ตั้งชื่อ Procedure ว่า Collect_Data
- 00:01:21 ประกาศตัวแปร: R, Add, arr, I
- 00:01:33 เคลียร์ข้อมูลในชีตปลายทางก่อนเริ่ม
- 00:02:01 Loop ข้อมูลจากชีต Vacancy เฉพาะเซลล์ที่มีข้อมูล
- 00:03:12 ตรวจสอบว่าเซลล์มีค่าตัวเลขหรือไม่
- 00:03:49 ถ้าค่าน้อยกว่า 0 → เก็บหัวคอลัมน์และค่าจากคอลัมน์ B
- 00:05:12 กำหนดค่า Vacancy เป็น 1 และเพิ่มตัวนับ
- 00:05:33 วางหัวคอลัมน์: Position, Store, Vacancy
- 00:06:14 วางข้อมูลจากตัวแปร arr ลงในชีต Result
- 00:06:28 แจ้งผู้ใช้ด้วย Message Box ว่าเสร็จสิ้น
- 00:06:47 ทดสอบการรันโค้ดและตรวจสอบผลลัพธ์
- 00:06:54 ผลลัพธ์ตรงตามที่ต้องการ 00:06:57 สรุปจบคลิป