เลือกข้อมูลที่เข้าเงื่อนไขมาเรียงใหม่ด้วย VBA

? การเลือกข้อมูลที่อยู่ในตารางหลายคอลัมน์หลายบรรทัดมาเรียงใหม่โดยพิจาณาจากค่าในเซลล์ว่าต้องเข้าเงื่อนไขตามที่กำหนดจึงจะนำมาใช้งาน โดยไม่ได้เลือกมาเฉพาะค่าในเซลล์ แต่เลือกคอลัมน์แรกของตารางที่ตรงกับค่าดังกล่าวและบรรทัด

ที่เป็นหัวคอลัมน์ที่ตรงกับค่าดังกล่าวมาด้วย งานลักษณะนี้หากต้องเลือกด้วยสายตาย่อมจะเสียเวลามาก จำเป็นต้องพึ่งพา 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 สรุปจบคลิป
Scroll to Top