จะเปรียบเทียบสเปรดชีต Excel สองรายการได้อย่างไร


8

ฉันต้องการเปรียบเทียบสเปรดชีต Excel สองรายการ

ทั้งสองมีคอลัมน์เดียวกันตามลำดับเดียวกัน แต่ไม่ใช่แถวเดียวกัน

ฉันมีสเปรดชีตที่มี 1,000 แถวและ 50 คอลัมน์รวมถึงรหัสเฉพาะสำหรับแต่ละแถวและข้อมูลส่วนบุคคล (ที่อยู่หมายเลขโทรศัพท์ ฯลฯ )

ฉันต้องการเปรียบเทียบกับฐานเดียวกันที่แยกออกมาเมื่อหนึ่งปีที่แล้ว

วัตถุประสงค์ของฉันคือการรู้การเปลี่ยนแปลงทั้งหมด (ตัวอย่างเช่นคนที่เปลี่ยนที่อยู่ของเขา)

ฉันลองใช้สเปรดชีต (ดังที่อธิบายไว้ที่นี่: เปรียบเทียบสองไฟล์ excel ) แต่มันไม่ทำงานเพราะในไฟล์ "ใหม่" ของฉันฉันมีแถวใหม่และฉันมีแถวบางส่วนในไฟล์เก่าที่ไม่ได้อยู่ในใหม่

สเปรดชีตเปรียบเทียบกับหมายเลขบรรทัด Excel เป็นไปได้หรือไม่ที่จะเปรียบเทียบกับคอลัมน์แรก (ID ที่ไม่ซ้ำ)

นี่คือตัวอย่างที่ง่ายมาก: https://filebin.net/g4w98251y9mfwug6

มีสองแผ่นที่แสดงสเปรดชีตทั้งสองของฉัน

ตามที่คุณเห็นทั้งสองมีคอลัมน์เดียวกัน แต่:

  • มีแถวที่อยู่บนแผ่นงานทั้งสองโดยไม่มีการเปลี่ยนแปลง (ทุกแถวเหมือนกัน)
  • มีแถวที่อยู่บนแผ่นงานทั้งสอง แต่มีการเปลี่ยนแปลง (เป็นสีส้มในตัวอย่างของฉัน)
  • มีแถวที่อยู่ในแผ่นงานธันวาคมเท่านั้น (ฉันไม่จำเป็นต้องระบุบรรทัดเหล่านี้)
  • มีแถวที่อยู่ในแผ่นงานมกราคมเท่านั้น (เป็นสีส้มในตัวอย่างของฉัน)

สีส้มเป็นสิ่งที่ฉันต้องการ แต่ในตัวอย่างนี้ฉันสามารถทำได้ด้วยตนเอง: เปรียบเทียบเดือนธันวาคมและมกราคม ในสเปรดชีตจริงฉันไม่สามารถทำได้ด้วยตนเองเนื่องจากมีการเปลี่ยนแปลงข้อมูลบรรทัดคอลัมน์ ฯลฯ มากเกินไปและฉันจะทำสิ่งนี้ทุกเดือน

มีเพียงหนึ่งคอลัมน์เท่านั้นที่ไม่สามารถเปลี่ยนแปลงได้: คอลัมน์ A


ปีงบประมาณคนไม่ชอบดาวน์โหลดไฟล์โดยเฉพาะอย่างยิ่งเมื่อโพสต์โดยผู้ใช้ที่ไม่รู้จัก ฉันไม่ได้บอกว่าคุณไม่ควรอัปโหลดไฟล์และโพสต์ลิงก์ไปยังพวกเขา แต่พยายามทำให้คำถามของคุณโดดเด่น - ควรเข้าใจได้โดยไม่ต้องดูไฟล์ จริง ๆ แล้วฉันเชื่อว่าคำถามของคุณไม่เป็นไร ฉันสามารถตอบได้โดยไม่ต้องดูไฟล์ แต่แน่นอนว่าคำถาม (โดยเฉพาะคำถามของ Excel) นั้นชัดเจนกว่าด้วยข้อมูลตัวอย่าง … (ต่อ)
สกอตต์

1
(ต่อ) ... เราต้องการให้คุณโพสต์แสดงเกี่ยวกับใจของข้อมูลของคุณตามที่ได้ทำที่นี่และที่นี่ ; ใช้รูปแบบข้อความเป็นไซต์ตารางหรือไซต์ตัวสร้างตารางข้อความล้วนหากคุณต้องการ ฉันขอแนะนำว่าข้อมูลที่ฉันใช้ในคำตอบของฉันเป็นเพียงปริมาณที่เหมาะสม: แถวหนึ่งในแต่ละหมวดหมู่สี่ที่คุณระบุในคำถาม
สกอตต์

มีเครื่องมือเปรียบเทียบ Excel ที่ดีอยู่ที่นั่น มันสามารถเปรียบเทียบ 2 ไฟล์ excel และออกจากความแตกต่าง คุณสามารถลอง Araxis Merge ได้ด้วยแม้ว่ามันจะไม่ฟรีก็ตาม
Kromster

คำตอบ:


4

สะดวกสบายที่สเปรดชีตของคุณใช้ 50 คอลัมน์เพราะนั่นหมายความว่ามีคอลัมน์ # 51, # 52, … ปัญหาของคุณได้รับการแก้ไขอย่างง่ายดายด้วยการใช้“ คอลัมน์ผู้ช่วยเหลือ” ซึ่งเราสามารถใส่ลงในคอลัมน์ได้  AZ(ซึ่งก็คือคอลัมน์ # 52) ฉันจะคิดว่าแถวที่ 1 ในแต่ละแผ่นของคุณมีส่วนหัว (คนคำID , Name, Addressฯลฯ ) เพื่อให้คุณไม่ต้องเปรียบเทียบเหล่านั้น (ตั้งแต่คอลัมน์ของคุณอยู่ในลำดับเดียวกันในแผ่นทั้งสอง) ฉันยังจะคิดว่าID(ตัวระบุที่ไม่ซ้ำกัน) Aอยู่ในคอลัมน์ (ถ้าไม่ได้คำตอบจะกลายเป็นเล็ก ๆ น้อย ๆบิตซับซ้อนมากขึ้น แต่ยังคงค่อนข้างง่าย.) ในเซลล์  AZ2(คอลัมน์ที่มีอยู่ในแถวแรกที่ใช้สำหรับข้อมูล) ป้อน

=B2&C2&D2&…&X2&Y2&Z2&AA2&AB2&AC3&…&AX2

รายชื่อทุกเซลล์จาก  ผ่าน  B2 เป็นผู้ประกอบการ concatenation ข้อความดังนั้นหากมีและมีแล้วจะมีการประเมินเพื่อ ในทำนองเดียวกันสูตรด้านบนจะต่อข้อมูลทั้งหมดของแถว (ไม่รวมแถว) ให้ผลลัพธ์ที่อาจมีลักษณะดังนี้:AX2&B2AndyC2New YorkB2&C2AndyNew YorkID

AndyNew York 1342 Wall Street นักลงทุนธนาคาร Elizabeth2catcollege degreeUCLA …

สูตรยาวและยุ่งยากในการพิมพ์ แต่คุณต้องทำเพียงครั้งเดียว (แต่ดูหมายเหตุด้านล่างก่อนที่จะทำจริง ๆ ) ฉันแสดงให้เห็นว่ามันต้องผ่านAX2เพราะคอลัมน์  AXคือคอลัมน์ # 50 สูตรควรครอบคลุมทุกคอลัมน์ข้อมูลนอกเหนือจากIDนี้ โดยเฉพาะอย่างยิ่งควรมีคอลัมน์ข้อมูลทุกคอลัมน์ที่คุณต้องการเปรียบเทียบ หากคุณมีคอลัมน์สำหรับอายุของบุคคลนั่นจะ (โดยอัตโนมัติหรือไม่) จะแตกต่างกันไปสำหรับทุกคนทุกปีและคุณไม่ต้องการให้มีการรายงาน และแน่นอนคอลัมน์ผู้ช่วยซึ่งมีสูตรการต่อข้อมูลควรอยู่ทางด้านขวาของคอลัมน์ข้อมูลสุดท้าย

ตอนนี้เลือกเซลล์  AZ2แล้วลาก / เติมลงไปใน 1,000 แถวทั้งหมด และทำเช่นนี้ในทั้งแผ่นงาน

ในที่สุดบนแผ่นงานที่คุณต้องการเน้นการเปลี่ยนแปลง (ฉันเดาจากสิ่งที่คุณพูดว่านี่เป็นแผ่นงานที่ใหม่กว่า) ให้เลือกเซลล์ทั้งหมดที่คุณต้องการเน้น ฉันไม่รู้ว่านี่เป็นแค่คอลัมน์  Aหรือแค่เป็นคอลัมน์  Bหรือทั้งแถว (เช่นAผ่าน  AX) เลือกเซลล์เหล่านี้ในแถวที่ 2 ถึง 1,000 (หรือที่ใดก็ตามที่ข้อมูลของคุณอาจเข้าถึงได้) และไปที่“ การจัดรูปแบบตามเงื่อนไข” →“ กฎใหม่…” เลือก“ ใช้สูตรเพื่อกำหนดเซลล์ที่จะจัดรูปแบบ” และป้อน

=IFERROR(VLOOKUP($A2,'December 2017'!$A$2:$AZ$1000,52,FALSE), "") <> $AZ2

ลงใน“ รูปแบบค่าที่สูตรนี้เป็นกล่องจริง” สิ่งนี้จะใช้IDค่าจากแถวปัจจุบันของแผ่นงานปัจจุบัน (“ มกราคม 2018”) (ในเซลล์  $A2) ค้นหาในคอลัมน์  Aของแผ่นงานก่อนหน้า (“ ธันวาคม 2017”) รับค่าข้อมูลที่ต่อกันจากแถวนั้นและทำการเปรียบเทียบ กับค่าข้อมูลที่ตัดแบ่งในแถวนี้ (แน่นอนAZคือคอลัมน์ผู้ช่วย 52คือหมายเลขคอลัมน์ของคอลัมน์ผู้ช่วยและ1000เป็นแถวสุดท้ายในแผ่นงาน“ ธันวาคม 2017” ที่มีข้อมูล - หรือค่อนข้างสูงกว่าเช่นคุณสามารถป้อน1200แทนที่จะกังวลเกี่ยวกับความถูกต้อง) จากนั้นคลิกที่ "รูปแบบ" และระบุการจัดรูปแบบตามเงื่อนไขที่คุณต้องการ (เช่นสีส้มเติม)

ฉันทำตัวอย่างโดยมีเพียงไม่กี่แถวและมีคอลัมน์ข้อมูลเพียงไม่กี่คอลัมน์โดยมีคอลัมน์ตัวช่วยในคอลัมน์  H:

แผ่นเดือน / ปีก่อนหน้า (ธันวาคม 2560)

แผ่นเดือน / ปีปัจจุบัน (มกราคม 2018) โดยเน้นการเปลี่ยนแปลงเป็นสีส้ม

สังเกตว่าแถวของ Andy เป็นสีส้มเพราะเขาย้ายจากนิวยอร์กไปยังลอสแองเจลิสและแถวของ Debra เป็นสีส้มเพราะเธอเป็นรายการใหม่

หมายเหตุ:   หากแถวอาจมีค่าเช่นtheและreactในสองคอลัมน์ติดต่อกันและสิ่งนี้อาจเปลี่ยนแปลงได้ในปีต่อไปนี้thereและactจะไม่ถูกรายงานว่าเป็นความแตกต่างเนื่องจากเราเพิ่งเปรียบเทียบค่าที่ต่อกันและ ( thereact) คือ เหมือนกันทั้งสองแผ่น หากคุณกังวลเกี่ยวกับสิ่งนี้ให้เลือกตัวละครที่ไม่น่าจะอยู่ในข้อมูลของคุณ (เช่น, |) และแทรกระหว่างฟิลด์ ดังนั้นคอลัมน์ผู้ช่วยของคุณจะมี

=B2&"|"&C2&"|"&D2&"|"&…&"|"&X2&"|"&Y2&"|"&Z2&"|"&AA2&"|"&AB2&"|"&AC3&"|"&…&"|"&AX2

ทำให้เกิดข้อมูลที่อาจมีลักษณะเช่นนี้:

Andy | New York | 1342 Wall Street | Investment Banker | Elizabeth | 2 | cat | ระดับวิทยาลัย | UCLA | ...

และการเปลี่ยนแปลงจะมีการรายงานเพราะ≠the|reactthere|actคุณอาจกังวลเกี่ยวกับสิ่งนี้ แต่ขึ้นอยู่กับว่าคอลัมน์ของคุณคืออะไรจริง ๆ คุณอาจมีเหตุผลที่จะมั่นใจได้ว่าสิ่งนี้จะไม่มีปัญหา

เมื่อคุณทำงานได้แล้วคุณสามารถซ่อนคอลัมน์ตัวช่วยได้


1

ไปที่แท็บมุมมองแล้วคลิกหน้าต่างใหม่ ไปที่หน้าต่างใหม่และคลิกเคียงข้างกัน คุณสามารถซิงโครไนซ์การเลื่อนได้โดยคลิกการซิงโครนัสการเลื่อน ตรวจสอบภาพที่แนบมา: แผ่นงาน Excel เคียงข้างกัน

การเลื่อนแบบซิงโครนัสช่วยให้คุณได้รับประโยชน์จากการเลื่อนแผ่นงานต่าง ๆ พร้อมกัน การสลับปุ่มจะทำให้คุณสามารถดูทั้งคู่เข้าด้วยกันและเลื่อนแผ่นงานเพียงแผ่นเดียว


ฉันมีมากกว่า 1,000 บรรทัดในแต่ละสเปรดชีต ... 50 คอลัมน์ .. ข้อมูลบางอย่างค่อนข้างยากที่จะเปรียบเทียบโดยการดู (ข้อมูลธนาคารหมายเลขโทรศัพท์วันที่ ... ) มันยาวเกินไปที่จะดำเนินการเช่นนั้นและมีความเสี่ยง ข้อผิดพลาด / Omission ฉันจะต้องทำเช่นนี้ทุกเดือน .. ไม่มีวิธีแก้ปัญหาได้เร็วขึ้น? :(
CILUEA

ในมุมมองเดียวกันคุณสามารถใช้ตัวกรองกับคอลัมน์ เพิ่มสูตรการค้นหาบนแผ่นงานอย่างใดอย่างหนึ่ง
Cetza Nido

ฉันไม่ต้องการใช้ตัวกรองกับคอลัมน์ ... ฉันมีสเปรดชีตสองรายการ (หนึ่งบรรทัด = พนักงานหนึ่งคน) และฉันต้องการแสดงข้อมูลที่เปลี่ยนแปลง (ที่อยู่, โทรศัพท์ .. ) สำหรับพนักงานแต่ละคนระหว่างสเปรดชีตเก่า (ล่าสุด เดือน) และสเปรดชีตใหม่ (เดือนนี้) ฉันไม่สามารถทำได้ด้วยตนเองในแต่ละเดือน .. มันมากกว่า 1 000 เส้นในแต่ละสเปรดชีตและ 50 คอลัมน์
CILUEA

คุณสามารถใช้การค้นหาหรือดัชนีการจับคู่ + สูตรพร้อมกับการจัดรูปแบบตามเงื่อนไข เป็นไปได้ไหมที่จะแบ่งปันชีตของคุณกับข้อมูลตัวอย่าง?
Cetza Nido

ฉันได้แก้ไขโพสต์ของฉันด้วยตัวอย่างและคำอธิบายเพิ่มเติม .. ขอบคุณ!
CILUEA

1

ตกลงเพื่อให้คุณสามารถทำหนึ่งในสองสิ่ง

1.- วิธีการแก้ปัญหา OOTB คือไปที่ "ข้อมูล" -> "เครื่องมือข้อมูล" -> "ลบ (นี่คือการแปลโดยตรงจากภาษาสเปน) รายการซ้ำ" ด้วยวิธีนี้คุณจะต้องผนวกทั้งสองตารางและคุณจะจบลงด้วยข้อมูลที่มีการเปลี่ยนแปลงและไม่ซ้ำกันเท่านั้น ดังนั้นในการกรองการใช้งานCountIfบนเอกสิทธิ์ของคุณให้ยกเลิกการเลือกสิ่งที่ถูกนับเป็น 1 สั่งซื้อโดย uniqueId และคุณจะเห็นสิ่งที่เปลี่ยนแปลงไปอย่างชัดเจน

2.- ใช้สูตรนี้

IF(Index("rangetoreturn";Match("CellofUniqueID";"Rangeofuniqueidtolookinto";0))<>"OneOftheCellthatcontainsthesameasRangeToReturn";"Info Has Changed";"InfoHasNotChanged")

สูตรนี้สามารถ draged ไปทางขวาและลง ดังนั้นคุณจะได้รับตารางที่มีเงื่อนไข if โดยมีจำนวนบรรทัดเท่ากับตาราง "CellofUniqueID" ตำแหน่งของ "ข้อมูลมีการเปลี่ยนแปลง" จะบอกคุณว่าเซลล์ในตารางอื่นมีการเปลี่ยนแปลงเนื้อหาของมัน ดังนั้นใช้สูตรนี้ในแผ่นงานใหม่และสร้างตารางใหม่ จากนั้นดูที่ตัวกรองและยกเลิกการเลือก "InfoHasNotChanged" (หรือคำใด ๆ ที่คุณต้องการใช้)

"rangetoreturn" และ "Rangeofuniqueidtolookinto" มาจากหนึ่งตาราง (หรือแผ่น) และ "CellofUniqueID" มาจากตารางอื่น

ไชโย


ขอบคุณมาก! วิธีแก้ปัญหาแรกอาจเป็นวิธีที่ง่ายที่สุด แต่ก็ใช้งานไม่ได้: (หรือบางทีฉันไม่เข้าใจดี) ตัวเลือก "ลบคำซ้ำ" จะลบบางบรรทัดและฉันต้องการเก็บทุกบรรทัดในทั้งสองแผ่นยิ่งกว่านั้นฉันเท่านั้น มีหนึ่งคอลัมน์บนแผ่นงานที่มีข้อมูลที่ไม่ซ้ำกันคอลัมน์อื่น ๆ ทั้งหมดมีหลายบรรทัดที่มีข้อมูลเดียวกันภายใน (ตัวอย่างเช่นคนสองคนที่มีวันเดือนปีเกิดเดียวกันหรืออายุเท่ากัน .. )
CILUEA

ตัวเลือกที่ 2: rangetoreturn / Rangeofuniqueidtolookinto / OneOftheCellthatcontainsthesameasRangeToReturn คืออะไร
CILUEA

@CILUEA สำหรับตัวเลือก 2 "rangeofreturn" ซึ่งเป็นช่วงของข้อมูลที่คุณต้องการนำกลับมาใช้ใหม่ "Rangeofuniqueidtolookinto" นั่นคือช่วงของเอกลักษณ์ที่คุณจะมองหาไอดีที่เป็นเอกลักษณ์ของคุณ "OneOftheCellthatcontainstasameasRangeToReturn" นี่เป็นข้อมูลที่คุณจะเปรียบเทียบกับสิ่งที่คุณนำกลับมาดังนั้นถ้ามันแตกต่างกันมันจะบอกคุณ น่าเศร้าที่ไม่มีคำตอบที่สะดวกสบายเว้นแต่คุณจะรู้จัก VBA เล็กน้อยซึ่งดูเหมือนจะไม่เป็นเช่นนั้น
dmb

@CILUEA สำหรับตัวเลือก 1 คุณต้องสร้างตารางใหม่จากทั้งสองตาราง จากนั้นลบรายการที่ซ้ำกัน จากนั้นคุณยังสามารถใช้CountIfและกรองข้อมูลได้ 2 ครั้งเมื่อคุณมี 1 ครั้งหมายความว่าข้อมูลไม่เปลี่ยนแปลง สุดท้ายสั่งซื้อโดย id ที่ไม่ซ้ำกันของคุณ นอกจากนี้ยังโยนธงในคอลัมน์คอลัมน์ใหม่เพื่อให้คุณรู้จากตารางซึ่งข้อมูลของคุณมาจาก ตอนนี้คุณสามารถเห็นได้ชัดเจนในสิ่งที่แตกต่าง
DMB

@Scott "ออกจากกล่อง" ... ทำผิดพลาดที่นั่นควรเป็น OOTB ขออภัยภาษาอังกฤษไม่ใช่ภาษาแรกของฉัน
dmb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.