เพื่อมุ่งให้เกิดคุณภาพจากการอบรมสูงสุด Excel Expert Training ให้การอบรม Excel กลุ่มเล็กๆ ไม่เกิน 6 คนทุกคนสามารถเรียนรู้ Excel อย่างใกล้ชิด จะมาคนเดียวหรือมาเป็นกลุ่มแล้วนัดวันอบรมแบบส่วนตัวก็ได้ ผู้เข้าอบรมทุกคนสามารถติดตามเนื้อหาที่อบรมได้อย่างชัดเจนจากจอภาพด้านหน้าของตัวเอง
Results 1 to 9 of 9

Thread: ลบแถวที่มีค่าว่างเปล่าหรือค่าศูนย์ทิ้งไป

  1. #1
    virai06
    Guest

    ลบแถวที่มีค่าว่างเปล่าหรือค่าศูนย์ทิ้งไป

    สวัสดีค่ะอาจารย์ที่เคารพนับถือทุกท่าน
    ตามไฟล์ที่แนบ ดิฉันต้องการลบแถวที่แสดงค่าศูนย์ทิ้งไป หรือแถวใดที่เป็นคอลัมน์ C6 , c7,c11,c12,c15 ถึง c23 ซึ่งเป็นCELL มีค่าว่างเปล่า หรือมีค่าเป็นศูนย์ ทิ้งไป
    กล่าวคือCELL ใดของแต่ละแถวที่มีค่าเป็น 0 หรือค่าว่างเปล่า ให้ลบทิ้งไปไม่ต้องแสดงผลออกมา
    (บริเวณที่ทำสีเขียวจะลบทิ้ง )
    ข้อมูลจริงอาจมีมากกว่าตัวอย่าง เป็นพันๆรายการบรรทัดลงมา
    จะใช้คำสั่งVBA อย่างไรคะ เพราะดิฉันจะไปประยุกต์เข้ากับมาร์โครเดิมที่มีอยู่ในปุ่มกด
    ขอความอนุเคราะห์ด้วยคะ ขอบพระคุณอย่างสูง

  2. #2
    มิตรภาพ
    Guest
    ยังงงๆอยู่้นะครับ
    1.ลบเซลที่มี 0 ให้เป็นเซลเปล่าๆ?
    หรือ
    2.ลบบรรทัดทิ้งไปเลย ที่มีเซลใดก็ตามเป็น 0?
    หรือ
    3.ลบข้อมูลในบรรทัด ที่มีเซลใดก็ตามเป็น 0 แสดงไว้เพียงบรรทัดว่างๆ?
    หรือ
    4.ซ่อนบรรทัด ที่มีเซลใดก็ตามเป็น 0?
    ช่วยยืนยันมาอีกทีครับ

  3. #3
    virai06
    Guest

    ลบบบรทัดนั้นทิ้งไปเลย

    บรรทัดนั้นทิ้งไปเลยค่ะ เพราะไม่ต้องการเอาตัวเลขนั้นมาแสดงหรือนำมาคำนวณต่อ
    ขอบคุณมากค่ะ

  4. #4
    virai06
    Guest

    ตัวอย่างหลังลบค่าทิ้ง

    เพิ่มเติมอีกนิดค่ะ ข้อมูลหลังลบค่า0 หรือค่าว่างเปล่าแล้วจะเป็นไปตามตัวอย่างที่แนบมามาให้ใหม่ค่ะ

  5. #5
    zv735
    Guest

    อย่างนี้ได้หรือเปล่าครับ

    อย่างนี้ได้หรือเปล่าครับ

    Code:
     
    Sub DeleteZero()
        LastLine = Range("C65536").End(xlUp).Row
        For i = LastLine To 1 Step -1
            If (Range("C" & i).Value = 0) Or (Range("C" & i).Value = "") Then
                Rows(i & ":" & i).Delete Shift:=xlUp
            End If
        Next i
    End Sub
    ดู File แนบนะครับ

  6. #6
    มิตรภาพ
    Guest
    ลองวิธีนี้นะครับ สามารถประยุกต์ใช้ VBA ทำก็ได้

    1. ที่คอลัมน์ G ระบายพื้นที่ตั้งแต่ G1 ถึง G บรรทัดสุดท้าย
    2. ใส่สูตร =IF(OR(A2=0,B2=0,C2=0,D2=0,E2=0,F2=0),"1","") แล้วกด Ctrl+Enter สูตรจะเข้าไปอยู่ในทุกเซลที่ระบายไว้
    3. ใช้ AutoFilter โดยกำหนดให้เลือกแสดงค่า "ไม่ว่าง" ที่คอลัมน์ G
    4. ตอนนี้จะมองเห็นเฉพาะบรรทัดที่มี 0 ให้ delete บรรทัดทิ้งทั้งหมดเลย
    5. ยกเลิกการใช้ AutoFilter ก็จะเหลือแต่บรรทัดที่ไม่มี 0

    คงเป็นวิธีหนึ่งเท่านั้นครับ น่าจะมีวิธีอื่นๆอีก รอท่านต่อไปนะครับ

  7. #7
    อรวีร์
    Guest

    Smile

    ปกติเวลาจะลบบรรทัดหลายบรรทัดตามเงื่อนไขที่กำหนด อรวีร์จะใช้วิธีใส่สูตรใน Column ว่างโดยสูตรนั้นจะได้ผลลัพธ์เป็น #N/A ถ้าเป็นไปตามเงื่อนไขที่จะลบ
    เสร็จแล้วใช้คำสั่ง Edit->Goto->Special แลือก Formulas แบบ Error
    แล้ว Edit->Delete->Entire Row
    ถ้าข้อมูลมากๆเป็นหมื่นบรรทัด อาจเพิ่มคำสั่ง Sort ก่อน Delete ค่ะ
    ลองดู Code ค่ะ
    Code:
    Dim LastRow As Long
    LastRow = [A65535].End(xlUp).Row
    With Range("G1:G" & LastRow)
        .FormulaR1C1 = "=IF(RC3=0,NA( ),1)"
        .SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete
        .ClearContents
    End With
    ทดลองลบบรรทัดนี้ก่อนเพื่อทดสอบ
    .ClearContents
    แล้วแก้
    .SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete
    เป็น
    .SpecialCells(xlCellTypeFormulas, 16).EntireRow.Select
    แล้วลอง Run ดูค่ะ

  8. #8
    virai06
    Guest

    บรรทัดแถวแรกไม่ให้ลบ

    ขอบพระคุณอาจารย์ที่ชี้แนะทุกท่าน อาจารย์อรวีร์ ค่ะ ดิฉันขออนุญาตเรียนเพิ่มคะ เนื่องจากดิฉันจำเป็นต้องนำสูตรไปไว้ในปุ่มกดที่วางไว้แถวแรก ปรากฎเจอปัญหาตามไฟล์แนบ มีวิธีแก้ได้อย่างไรคะ (หมายถึงแถวแรกเป็นหัวข้อเรื่องไม่ต้องการให้ลบทิ้ง และเป็นที่ฝังสูตรและปุ่มกด)
    ให้ลบเฉพาะในขอบเขตของตารางข้อมูลที่เป้นค่าศุนย์และค่าว่างเท่านั้น
    ขอบพระคุณอย่างสูงค่ะ
    LastRow = [A65535].End(xlUp).Row


  9. #9
    อรวีร์
    Guest

    Smile

    การบอกคำตอบที่คุณ virai06 ต้องการเป็นเรื่องง่ายกว่าการอธิบาย แต่ web นี้มีเป้าหมายเพื่อการศึกษาเรียนรู้ ไม่ใช่ให้ Solution
    อรวีร์เลยเลือกที่จะอธิบายยาวๆดีกว่าค่ะ

    คุณ virai06 ควรทดลองศึกษาทำความเข้าใจแต่ละคำสั่ง โดยทำให้บางบรรทัดไม่ทำงาน( ใส่ ' ) หรือใส่ Msgbox เพื่อให้แสดงค่าบ้างค่าออกมา ลอง Run Code นี้ดูค่ะ
    Code:
    Dim LastRow As Long
    LastRow = [A65535].End(xlUp).Row
    MsgBox "บรรทัดสุดท้าย = " & LastRow
    With Range("G1:G" & LastRow)
        .FormulaR1C1 = "=IF(RC3=0,NA( ),1)"
        '  .SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete
        '  .ClearContents
    End With
    MsgBox "ใส่สูตรในช่วง " & Range("G1:G" & LastRow).Address
    เสร็จแล้วดูสูตรที่อยู่ใน Column G
    เมื่อเข้าใจแล้วก็ลองแก้ไข Code ให้เริ่มใส่สูตรตั้งแต่บรรทัดที่ 2 แทนตั้งแต่บรรทัดที่ 1
    ----------------------------------------------------------------
    ส่วนความหมายของ
    .SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete
    ให้ลองดูในคำตอบที่แล้วค่ะ

    หรือลองบันทึก Macro ของการใช้คำสั่ง Edit--> Goto--> Special--> Formula แบบ Error
    และบันทึก Macro ของการใช้คำสั่ง Edit--> Delete. . .--> Entire Row

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •