EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)Code: Select all
Sub RoundedRectangle1_Click()
Sheets("Sheet1").Range("A5", "A10").Select
Cells.Find ("")
Selection.EntireRow.Delete
End Sub
Code: Select all
Sub RoundedRectangle1_Click()
Dim rng As Range
For Each rng In Sheets("Sheet1").Range("A5", "A10")
If rng.Value = 0 Then
rng.EntireRow.Delete
End If
Next rng
End Sub
Code: Select all
Sub RoundedRectangle1_Click()
Dim rng As Range, l As Long, i As Long
With Sheets("Sheet2")
l = .Range("c" & .Rows.Count).End(xlUp).Row
For i = l To 6 Step -1
If .Cells(i, "c").Value = 0 Then
.Rows(i).Delete
End If
Next i
End With
End Sub
.Row(i).Delete
เป็น .Cells(i,"c").ClearContents
ครับเรียน คุณDhitiBankครับDhitiBank wrote:อ๋อ ผมเข้าใจผิดนึกว่าให้ลบทั้งแถว หากค่าในคอลัมน์ C เป็น 0
ถ้าอย่างนั้น ลองปรับโค้ดตรง.Row(i).Delete
เป็น.Cells(i,"c").ClearContents
ครับ
จะเป็นการ ClearContents เฉยๆ.Cells(i,"c").ClearContents
ตัวอย่างการปรับ Code ครับkio2002 wrote:เรียน คุณDhitiBank
Code นี้ใช้ลบค่าที่เป็น 0 ใน column C ได้เหมือนกันครับ และลบค่าที่เป็น 0 ได้หมดด้วย
แต่ผมอยากจะให้ลบเฉพาะค่า 0 ที่อยู่ในเซลล์ ระหว่าง C6,C54 ครับ
ขอบคุณล่วงหน้าครับ
Code: Select all
Sub RoundedRectangle1_Click()
Dim rng As Range
For Each rng In Sheets("Sheet1").Range("A5", "A10")
If rng.Value = 0 Then
rng.value = ""
End If
Next rng
Sheets("Sheet1").Range("A5", "A10").specialcells(xlcelltypeblanks).EntireRow.Delete
End Sub
Sheets("Sheet1").Range("A5", "A10").specialcells(xlcelltypeblanks).EntireRow.Delete
Sheets("Sheet1").Range("A5", "A10").specialcells(xlcelltypeblanks).Delete Shift:=xlUp
ใช่แล้วครับDhitiBank wrote: ขอบคุณอาจารย์ครับ specialcells ทีเดียวอยู่เลย ถ้าหากผมต้องการลบเฉพาะเซลล์นั้นๆ แล้วให้เด้งขึ้นหลังลบแล้ว ผมก็ปรับเป็น
Sheets("Sheet1").Range("A5", "A10").specialcells(xlcelltypeblanks).Delete Shift:=xlUp
ใช่หรือเปล่าครับ
Code: Select all
Sub RoundedRectangle1_Click()
Dim rng As Range
For Each rng In Sheets("Sheet1").Range("A5", "A10")
If rng.Value = 0 Then
rng.EntireRow.Delete
End If
Next rng
End Sub
Code: Select all
'เริ่ม Procedure ที่ชื่อว่า RoundedRectangle1_Click
Sub RoundedRectangle1_Click()
'ประกาศตัวแปร ให้ rng เป็น Range
Dim rng As Range
'Loop แต่ละเซลล์ในช่วง A5:A10
For Each rng In Sheets("Sheet1").Range("A5", "A10")
'ถ้าเซลล์มีค่าเป็น 0 แล้ว
If rng.Value = 0 Then
'ให้ลบเซลล์นั้นทั้งบรรทัด
rng.EntireRow.Delete
'จบ if
End If
'ไปยังเซลล์ถัดไป
Next rng
'จบ Procedure
End Sub
Code: Select all
Sub RoundedRectangle1_Click()
Dim rng As Range
For Each rng In Sheets("Sheet1").Range("A5", "A10")
If rng.Value = 0 Then
rng.value = "" ส่วนตัวนี้ก็คือ กำหนดให้ค่าที่เข้าเงื่อนไขเป็นค่าว่าง
End If
Next rng
Sheets("Sheet1").Range("A5", "A10").specialcells(xlcelltypeblanks).EntireRow.Delete ส่วนคำสั่งนี้ก็คือให้ลบทีเดียว และ xlcelltypeblanks ก็คือให้ลบค่าว่างจากล่างขึ้นบน
End Sub
Sheets("Sheet1").Range("A5", "A10").specialcells(xlcelltypeblanks).EntireRow.Delete
คือให้ลบเซลล์ว่างทุกเซลล์ในช่วง A5:A10 โดยลบทั้งบรรทัดพร้อมกันทีเดียว ไม่มี Code ใดที่บอกว่าเป็นการลบจากล่างขึ้นบน ในกรณีลบทั้งบรรทัดโปรแกรมจะขยับบรรทัดล่างขึ้นด้านบนให้เองอัตโนมัติครับ