เปรียบเทียบข้อมูล

วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน?

“ไม่ทราบว่ามีวิธีเปรียบเทียบข้อมูลใน Excel จากข้อมูล 2 รายการหรือไม่ ว่ามี item ไหนต่างกันบ้างครับ?”

คำถามนี้มีคนถามบ่อยพอสมควร เลยเขียนเป็นบทความให้อ่านกัน คนอื่นๆ จะได้รับประโยชน์ไปด้วยเนอะ

เอาล่ะ! สมมติผมมีข้อมูลอยู่ 2 List ซึ่งอยู่คนละ Sheet ดังนี้

จะเห็นว่ามีทั้งรายการที่มีใน A แต่ไม่มีใน B รวมถึง มีใน B แต่ไม่มีใน A ด้วย

ผมจะเสนอวิธี Compare List นี้ 2 วิธีด้วยกัน คือ
1. วิธีใช้ VLOOKUP
2. วิธีใช้ Power Query

ซึ่งความพิเศษของบทความนี้ คือ ผมจะแสดง Step การแก้ปัญหาเหมือนกันเป๊ะๆ เลย แต่ใช้แค่เครื่องมือต่างกันเท่านั้นเอง

เพื่อนๆ จะได้เข้าใจว่า Power Query สามารถทำงานในลักษณะเดียวกับที่เราใช้ Excel ปกติได้ยังไง? ซึ่งเพื่อนๆ ก็จะรู้จักทั้งการ Apppend/ Remove Duplicates / Merge/ เขียนสูตร/Filter ใน Power Query ด้วยครับ

วิธีที่ 1 : ใช้ VLOOKUP เปรียบเทียบข้อมูล

Step 1 : เอาข้อมูลมารวมกันใน Sheet เดียว

ก่อนที่เราจะใช้สูตร VLOOKUP ค้นหาข้อมูล ผมขอนำ List จากทั้งสอง Sheet มารวมกัันก่อนใน Sheet ใหม่ ( ตั้งชื่อว่า Sheet All ) ด้วยการ Copy Paste ปกติ

จะเห็นว่ามันมีข้อมูลซ้ำๆ กันอยู่ ดังนั้นเราจะกด Remove Duplicates ก่อนจะทำงานต่อด้วยครับ โดยไปที่ [Data] => Data Tools => Remove Duplicates

วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 3

Step 2 : หาข้อมูลว่าเจอใน List ที่สนใจหรือไม่

จากนั้นเราจะใช้ VLOOKUP หาว่ามีข้อมูลที่เราสนใจใน Sheet A หรือไม่?

ดังนั้นเราจะเขียนสูตรประมาณนี้ก่อนครับ
หาใน Sheet A =VLOOKUP(A2,SheetA!A:A,1,FALSE)

วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 4

เราจะสามารถตีความผลลัพธ์ได้ว่า

  • ถ้าขึ้น #N/A แปลว่า ไม่เจอข้อมูลใน Sheet A
  • ถ้าไม่ใช่ #N/A แปลว่า เจอ ข้อมูลใน Sheet A

ในทำนองเดียวกัน ในอีก Sheet เราก็ทำเหมือนกัน ได้ว่า

หาใน Sheet B =VLOOKUP(A2,SheetB!A:A,1,FALSE)

วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 5

Step 3 : ทำ Column สรุปผล เพื่อเลือกเฉพาะสิ่งที่เราสนใจ

ถ้าเราสนใจอยากจะ List ทุก item ที่ไม่เจอครบทั้ง 2 List ก็ใช้วิธีการสร้างคอลัมน์ใหม่ แล้วใส่เงื่อนไขแบบ OR ลงไปก็ได้ครับ

หลักการคือ เราจะตรวจสอบว่ามีตัวใดตัวหนึ่ง Error หรือไม่ แปลว่า อย่างน้อยหา PartNum ที่กำลังสนใจไม่พบใน Sheet ใด Sheet หนึ่ง

ดังนี้ =OR(ISNA(B2),ISNA(C2))

วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 6

จากนั้นเราก็ Filter เฉพาะตัวที่เป็น TRUE ได้เลยครับ (แปลว่า อย่างน้อยหาไม่พบใน Sheet ใด Sheet หนึ่ง)

วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 7

วิธีที่ 2 : ใช้ Power Query เปรียบเทียบข้อมูล

คราวนี้วิธีที่ 2 จะใช้ Power Query แทน ซึ่งมีข้อดีตรงที่สามารถกด Refresh เมื่อข้อมูลเปลี่ยนไปได้เลย (ไม่ต้องนั่ง copy paste /remove duplicates ใหม่อีกที) แต่หลักการคิดจะเหมือนกับวิธี VLOOKUP เลยครับ

Step 1 : เอาข้อมูลมารวมกันใน Sheet เดียว

ก่อนอื่นให้เอาทั้ง 2 List เข้าเป็น Query ก่อน (ทั้ง 2 อันเลย)

โดยตั้งชื่อ Query แต่ละอันเป็น TableA กับ TableB ด้วย (ทำทีละอัน) และให้ทำเป็น Load to…Only create Connection อย่างเดียว เราจะได้ไม่ต้องมีตารางออกมาเยอะแยะ เดี๋ยวงง

Tips : หลักการ คือ เราจะให้ผลลัพธ์สุดท้ายเท่านั้น ที่ออกมาเป็น Table จริงๆ นอกนั้นให้ create Connection อย่างเดียวนะครับ

วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 8
วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 9
วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 10

พอได้ครบทั้ง 2 Query แล้ว ให้สร้าง Query ใหม่ แบบ Append ก่อน จะได้เห็นภาพครบทุก Item (การ Append คือ เอาข้อมูลมาต่อตูดกัน จำนวนแถวจะเพิ่มขึ้น เหมือนกัยการที่เรา Copy ข้อมูลทั้ง 2 Sheet มาต่อตูดกันแบบวิธีแรกนั่นแหละครับ)

วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 11

เลือก Append Table A และ B เข้าด้วยกัน

วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 12

ตอนแรกข้อมูลอาจจะออกมาซ้ำกัน (เพราะมันเอาสองตารางมาต่อตูดกันจริงๆ) ดังนั้นเราจะ Remove Duplicates ออกก่อน

วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 13

Step 2 : หาข้อมูลว่าเจอใน List ที่สนใจหรือไม่

พอเราได้ List ที่สมบูรณ์และไม่ซ้ำกันแล้ว จากนั้นเราจะเอาไป Merge กับ Table A (เหมือน VLOOKUP หาข้อมูลใน Table A นั่นแหละ )

โดยที่ Step ในการ Merge เค้าจะให้เลือกว่า column ไหนใน 2 ตาราง ที่มีความสัมพันธ์กัน เราก็เลือกไปเลยว่าเป็น PartNum ทั้งคู่นั่นแหละ

วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 14

พอกด Ok ตอนแรกมันจะออกมาเป็น Table ก่อน

ให้กด Expand เพื่อแตกเอาผลลัพธ์ออกมา (ตรงนี้จริงๆ เลือกได้ว่าจะเอาคอลัมน์ไหนกลับมาบ้าง แต่ในที่นี้เรามีคอลัมน์เดียว 555)

วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 15

จะได้ผลลัพธ์ว่ามีการ Map เจอกับ Table A ตัวไหนบ้าง เหมือนกับตอนที่เรา VLOOKUP เลยมะ?

วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 16

ทำอย่างนี้อีกทีกับ Table B เพื่อดูว่า Map เจอตัวไหนบ้าง

วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 17
วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 18

Step 3 : ทำ Column สรุปผล เพื่อเลือกเฉพาะสิ่งที่เราสนใจ

ถ้าเราอยากได้ตัวที่ตัวใดตัวหนึ่งเป็น Null ดังนั้นเราจะสร้างคอลัมน์ใหม่ โดย Add Column => Custom Column โดยเขียนสูตรแบบ or ดังนี้ (ตรงชื่อคอลัมน์ สามารถ double click จาก List ด้านขวาได้นะ ไม่ต้องพิมพ์เอง)

วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 19

พอเรา Filter เลือกเฉพาะที่เป็น TRUE ก็จะได้ตัวที่เราสนใจครับ

วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 20

จากนั้นถ้าจะโหลดออกมาเป็น Table ก็ Close & Load ได้เลยจบ เช่นเดียวกับตอนที่ใช้ VLOOKUP

แต่มีข้อดีกว่าคือ ถ้าเกิดมีข้อมูลเพิ่มขึ้นอีก เรากด Refresh ทีเดียวจบเลย!!

วิธีเปรียบเทียบข้อมูล 2 List ว่ามี item ไหนที่ต่างกัน? 21