Page 1 of 1
สอบถาม VBA สำหรับเปรียบเทียบ 2 columns
Posted: Sun Jun 21, 2020 8:15 pm
by nitiwatza
สวัสดีครับ เพิ่งสมัครสมาชิกครับ
พบเจอปัญหา VBA code ครับ คือ อยากจะเปรียบเทียบคอลั่ม A และคอลั่ม B ในแต่ละ Row, ถ้า 2 ช่องมีค่าเท่ากันให้แสดงคอลั่ม C ว่า "QC completed" แต่ถ้าต่างกันให้แสดงว่า "QC not completed"
จากไฟล์แนบผมนำโค้ดจากอินเตอร์เน็ตมาแก้ไข ซึ่งก่อนหน้านี้ใช้กับ Timestamp แล้วได้ผล แต่กับเคสนี้ไม่เกิดการเปลี่ยนแปลงเลยและไม่ขึ้น debug ครับ
รบกวนผู้รู้ผมต้องแก้โค้ดอย่างไรบ้างครับ ขอบคุณมากครับ
Re: สอบถาม VBA สำหรับเปรียบเทียบ 2 columns
Posted: Sun Jun 21, 2020 8:33 pm
by snasui

Code ในไฟล์จะทำงานเมื่อเซลล์ใด ๆ มีการเปลี่ยนแปลงครับ ถ้าจะให้ Code ทำงานต้องคีย์ค่าในเซลล์ใด ๆ ในคอลัมน์ A เสียก่อนครับ
ควรมีตัวอย่างข้อมูลในไฟล์ตัวอย่าง พร้อมทั้งอธิบายว่าต้องการให้แสดงผลลัพธ์ในเซลล์ไหนเป็นอย่างไร จะได้สะดวกในการทำความเข้าใจครับ
Re: สอบถาม VBA สำหรับเปรียบเทียบ 2 columns
Posted: Sun Jun 21, 2020 8:39 pm
by nitiwatza
snasui wrote: Sun Jun 21, 2020 8:33 pm

Code ในไฟล์จะทำงานเมื่อเซลล์ใด ๆ มีการเปลี่ยนแปลงครับ ถ้าจะให้ Code ทำงานต้องคีย์ค่าในเซลล์ใด ๆ ในคอลัมน์ A เสียก่อนครับ
ควรมีตัวอย่างข้อมูลในไฟล์ตัวอย่าง พร้อมทั้งอธิบายว่าต้องการให้แสดงผลลัพธ์ในเซลล์ไหนเป็นอย่างไร จะได้สะดวกในการทำความเข้าใจครับ
ขอโทษครับ ลืมใส่กรณีตัวอย่างให้ ผมแนบไฟล์ให้ใหม่นะครับ
จากตัวอย่าง
1. Cell A2 = "AAA" และ Cell B2 = "AAA" ผลลัพธ์ Cell C2 = "QC completed" เพราะ Cell A2 = Cell B2 ครับ
2. Cell A3 = "AAD" และ Cell B3 = "AAB" ผลลัพธ์ Cell C3 = "QC not completed" เพราะ Cell A3 <> Cell B3 ครับ
ในตัวอย่างโค้ดไม่ทำงานนะครับ ผมใส่ตัวอย่างเข้าไปเองเฉยๆ
Re: สอบถาม VBA สำหรับเปรียบเทียบ 2 columns
Posted: Sun Jun 21, 2020 10:15 pm
by snasui

ตัวอย่างการปรับ Code ครับ
Code: Select all
Dim x As Range
Application.EnableEvents = True
If Target.Count < 100000 Then
Application.ScreenUpdating = False
For Each x In Target
If Not Intersect(Range("B:B"), x) Is Nothing Then
If x.Value = "" And x.Offset(0, -1).Value = "" Then
x.Offset(0, 1).Value = ""
ElseIf x.Value = x.Offset(0, -1).Value Then
x.Offset(0, 1).Value = "QC completed"
Else
x.Offset(0, 1).Value = "QC not completed"
End If
ElseIf Not Intersect(Range("a:a"), x) Is Nothing Then
If x.Value = "" And x.Offset(0, 1).Value = "" Then
x.Offset(0, 2).Value = ""
ElseIf x.Value = x.Offset(0, 1).Value Then
x.Offset(0, 2).Value = "QC completed"
Else
x.Offset(0, 2).Value = "QC not completed"
End If
End If
Next x
Application.ScreenUpdating = True
End If
Application.EnableEvents = True
Re: สอบถาม VBA สำหรับเปรียบเทียบ 2 columns
Posted: Mon Jun 22, 2020 9:07 am
by nitiwatza
snasui wrote: Sun Jun 21, 2020 10:15 pm

ตัวอย่างการปรับ Code ครับ
Code: Select all
Dim x As Range
Application.EnableEvents = True
If Target.Count < 100000 Then
Application.ScreenUpdating = False
For Each x In Target
If Not Intersect(Range("B:B"), x) Is Nothing Then
If x.Value = "" And x.Offset(0, -1).Value = "" Then
x.Offset(0, 1).Value = ""
ElseIf x.Value = x.Offset(0, -1).Value Then
x.Offset(0, 1).Value = "QC completed"
Else
x.Offset(0, 1).Value = "QC not completed"
End If
ElseIf Not Intersect(Range("a:a"), x) Is Nothing Then
If x.Value = "" And x.Offset(0, 1).Value = "" Then
x.Offset(0, 2).Value = ""
ElseIf x.Value = x.Offset(0, 1).Value Then
x.Offset(0, 2).Value = "QC completed"
Else
x.Offset(0, 2).Value = "QC not completed"
End If
End If
Next x
Application.ScreenUpdating = True
End If
Application.EnableEvents = True
ขอบคุณมากครับ ใช้งานได้ถูกวัตถุประสงค์เลยครับ
