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 UpdateData2()
Dim rsAll As Range, rtAll As Range
Dim rs As Range, i As Integer
Application.ScreenUpdating = False
With Worksheets("Update_Delete_Item")
Set rsAll = .Range("H6", .Range("H" & Rows.Count).End(xlUp))
End With
With Worksheets("Database")
Set rtAll = .Range("H2", .Range("H" & Rows.Count).End(xlUp))
End With
For Each rs In rsAll
For i = rtAll.Count To 1 Step -1
'-4
If rs = rtAll(i) And rs.Offset(0, -4) = rtAll(i).Offset(0, -4) _
And rs.Offset(0, 6) = "Update" Then '6
rs.Offset(0, -6).Resize(1, 11).Copy '-5
rtAll(i).Offset(0, -6).PasteSpecial xlPasteValues
End If
Next i
Next rs
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Code: Select all
rs.Offset(0, -6).Resize(1, 11).Copy '-5
ให้ดู OI, ProdCode และคำว่า Update ครับsnasui wrote:สำหรับค่านี้เราใช้เป็นเงื่อนไขในการ Delete หรือ Update อยู่แล้วครับ แต่สิ่งที่จะต้องตรวจสอบให้แน่ใจคือ Update หรือ Delete ได้ถูกบรรทัดหรือไม่ มีอะไรเป็นตัวบอกว่าจะ Update หรือ Delete บรรทัดนั้น ๆ เพราะ OI เป็นตัวเดียวกัน คำว่า Delete หรือ Update กับ OI จึงไม่เพียงพอที่จะบอกสิ่งเหล่านั้นกรณีมีข้อมูลจำนวนมากและสลับกันไปสลับกันมา ผมปรับ Code ให้ดู Product Code เพิ่มเข้ามาด้วยว่าต้องเป็น Product เดียวกันถึงค่อย Delete หรือ Update...su019 wrote:หากเราใช่้ Column L เป็นตัวบอกว่าจะลบ หรือแก้ไข จะได้ไหมค่ะ
Code: Select all
If rs = rtAll(i) And rs.Offset(0, -5) = rtAll(i).Offset(0, -5) _
And rs.Offset(0, 6) = "Update" Then
rs.Offset(0, -5).Resize(1, 10).Copy
rtAll(i).Offset(0, -5).PasteSpecial xlPasteValues
End If
Code: Select all
If rs = rtAll(i) And rs.Offset(0, -4) = rtAll(i).Offset(0, -4) _
And rs.Offset(0, 6) = "Update" Then
rs.Offset(0, -5).Resize(1, 9).Copy
rtAll(i).Offset(0, -5).PasteSpecial xlPasteValues
End If
Code: Select all
If rs = rtAll(i) And rs.Offset(0, -4) = rtAll(i).Offset(0, -4) _
And rs.Offset(0, 6) = "Update" Then '6
rs.Offset(0, -6).Resize(1, 11).Copy '-5
rtAll(i).Offset(0, -6).PasteSpecial xlPasteValues
End If