? การเลือกข้อมูลที่อยู่ในตารางหลายคอลัมน์หลายบรรทัดมาเรียงใหม่โดยพิจาณาจากค่าในเซลล์ว่าต้องเข้าเงื่อนไขตามที่กำหนดจึงจะนำมาใช้งาน โดยไม่ได้เลือกมาเฉพาะค่าในเซลล์ แต่เลือกคอลัมน์แรกของตารางที่ตรงกับค่าดังกล่าวและบรรทัดที่เป็นหัวคอลัมน์ที่ตรงกับค่าดังกล่าวมาด้วย งานลักษณะนี้หากต้องเลือกด้วยสายตาย่อมจะเสียเวลามาก จำเป็นต้องพึ่งพา 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