ฉันจะเข้าร่วมสองแผ่นงานใน Excel เช่นเดียวกับใน SQL ได้อย่างไร


121

ฉันมีแผ่นงานสองแผ่นในไฟล์ Excel ที่แตกต่างกันสองไฟล์ พวกเขาทั้งสองมีรายการชื่อหมายเลขรหัสและข้อมูลที่เกี่ยวข้อง หนึ่งรายการหลักที่มีเขตข้อมูลประชากรทั่วไปและอื่น ๆ เป็นรายการที่มีเฉพาะชื่อและรหัสและที่อยู่ รายการนี้ตัดลงมาจากรายการหลักโดยสำนักงานอื่น

ฉันต้องการใช้รายการที่ 2 เพื่อกรองรายการแรก นอกจากนี้ฉันต้องการให้ผลลัพธ์รวมเขตข้อมูลอื่นจากแผ่นงานต้นแบบข้างเขตข้อมูลที่อยู่จากแผ่นงานที่สอง ฉันรู้ว่าฉันสามารถทำสิ่งนี้ได้อย่างง่ายดายด้วยการเข้าร่วมฐานข้อมูลภายใน แต่ฉันไม่ชัดเจนเกี่ยวกับวิธีการทำสิ่งนี้อย่างมีประสิทธิภาพใน Excel สามารถเข้าร่วมสองแผ่นงานใน Excel ได้อย่างไร คะแนนโบนัสสำหรับการแสดงวิธีการรวมภายนอกด้วยเช่นกันและฉันต้องการรู้วิธีการทำสิ่งนี้โดยไม่จำเป็นต้องมีแมโคร


1
ฉันพบหน้าต่อไปนี้มีประโยชน์มาก: randomwok.com/excel/how-to-use-index-match
Tommy Bravo

randomwok.com/excel/how-to-use-index-match => โดยเฉพาะ "เตือนความจำ" ที่ง่ายที่สุดในตอนท้าย:=INDEX ( Column_I_want_a_return_value_from , ( MATCH ( My_Lookup_Value , Column_I_want_to_Lookup_against , 0 ))
Tommy Bravo

คำตอบ:


157

สำหรับการใช้งาน 2007 ขึ้นไปData> From Other Sources> From Microsoft Query:

  1. เลือกExcel Fileและเลือก excel อันดับที่ 1 ของคุณ
  2. เลือกคอลัมน์
    (หากคุณไม่เห็นรายการคอลัมน์ใด ๆ ตรวจสอบให้แน่ใจOptions> System Tables)
  3. ไปData> Connections> [เลือกการเชื่อมต่อที่สร้างขึ้นเพียง]> Properties> Definition>Command text

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

SELECT *
FROM `C:\Users\Peter\Documents\Excel-to-excel\Source_1.xlsx`.`Sheet1$` a
LEFT JOIN `C:\Users\Peter\Documents\Excel-to-excel\Source_2.xlsx`.`Sheet1$` b
ON a.col2 = b.col2

1
มีวิธีหลีกเลี่ยงการเข้ารหัสฮาร์ดไดรฟ์หรือไม่? เส้นทางสัมพัทธ์จะทำงานหรือไม่
Rekin

25
ในฐานะที่เป็นโบนัสเพิ่มเติม Microsoft Query จะช่วยให้คุณได้รับการควบคุมทั่วไปแบบ 16 บิตสำหรับการเปิดไฟล์ Excel และกล่องข้อความ ด้วยวิธีนี้คุณสามารถจำได้เมื่อคุณเป็นเด็ก :-)
Edward Brey

สิ่งนี้ใช้ได้กับไฟล์ CSV หรือไม่ ฉันใช้ MS Office Professional Plus 2010 และไม่เห็นวิธีการทำตามขั้นตอนที่ 3 - ฉันจะออกจากกล่องโต้ตอบในขั้นตอนที่ 2 หรือไม่ ไม่มี "เลือกการเชื่อมต่อใหม่ของคุณ" ในกล่องโต้ตอบการเชื่อมต่อของฉัน
John Freeman

@JohnFreeman เพราะคุณต้องเลือกหนึ่งในตัวเลือกที่มีตามความต้องการของคุณ (เช่น 'เพิ่ม ... ')
Aprillion

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

11

สนับสนุนคำตอบที่ยอมรับ ฉันแค่ต้องการเน้นที่ "เลือกคอลัมน์ (ถ้าคุณไม่เห็นรายการของคอลัมน์ใด ๆ ให้แน่ใจว่าได้ตรวจสอบตัวเลือก> ตารางระบบ)"

เมื่อคุณเลือกไฟล์ excel มีโอกาสมากที่คุณจะเห็นthis data source contains no visible tablesพรอมต์และไม่มีแท็บและคอลัมน์ที่พร้อมใช้งาน Microsoft ยอมรับว่าเป็นจุดบกพร่อง ที่แท็บในไฟล์ excel ถือว่าเป็น "ตารางระบบ" และตัวเลือกสำหรับ "ตารางระบบ" จะไม่ถูกเลือกตามค่าเริ่มต้น ดังนั้นอย่าตกใจในขั้นตอนนี้คุณเพียงแค่ต้องคลิกที่ "ตัวเลือก" และตรวจสอบ "ตารางระบบ" จากนั้นคุณจะเห็นคอลัมน์ที่มีอยู่


8

VLOOKUP และ HLOOKUP สามารถใช้เพื่อค้นหาคีย์หลักที่ตรงกัน (จัดเก็บในแนวตั้งหรือแนวนอน) และคืนค่าจากคอลัมน์ / แถวของแอตทริบิวต์


มีประโยชน์อย่างมากสำหรับแผ่นงานในสมุดงานเดียวกัน (แต่ฉันพบว่าฟังก์ชัน INDEX + MATCH มีประโยชน์มากกว่า) มีความซับซ้อนเล็กน้อยเมื่ออัปเดตข้อมูลจากสมุดงานภายนอกที่ปิด ...
Aprillion

7

คุณสามารถใช้ Microsoft Power Query พร้อมใช้งานสำหรับ Excel รุ่นใหม่กว่า (คล้ายกับคำตอบที่ยอมรับ แต่ง่ายกว่าและง่ายกว่ามาก) การเรียก Power Query รวมการรวมเข้าด้วยกัน

วิธีที่ง่ายที่สุดคือการมีแผ่นงาน Excel 2 แผ่นเป็นตาราง Excel จากนั้นใน Excel ไปที่แท็บ Ribbon ของ Power Query และคลิกปุ่ม 'จาก Excel' เมื่อคุณนำเข้าทั้งสองตารางไปยัง Power Query ให้เลือกหนึ่งรายการแล้วคลิก 'ผสาน'


3
ง่ายกว่าตัวเลือกที่เสนออื่น ๆ นี่ควรเป็นคำตอบ! Power Queryรวมอยู่ใน Excel 2016 ภายใต้แท็บData
SliverNinja - MSFT

1
ฟีเจอร์อีกอย่างที่ไม่มีใน Mac ju
juandesant

4

ในขณะที่ฉันคิดว่าคำตอบของ Aprillion ที่ใช้ Microsoft Query นั้นยอดเยี่ยม แต่ก็เป็นแรงบันดาลใจให้ฉันใช้Microsoft Accessเพื่อเข้าร่วมเอกสารข้อมูลซึ่งฉันพบได้ง่ายขึ้นมาก

คุณต้องติดตั้ง MS Access ไว้แน่นอน

ขั้นตอน:

  • สร้างฐานข้อมูล Access ใหม่ (หรือใช้ฐานข้อมูลเริ่มต้น)
  • ใช้Get External Dataเพื่อนำเข้าข้อมูล Excel ของคุณเป็นตารางใหม่
  • ใช้Relationshipsเพื่อแสดงว่าตารางของคุณเข้าร่วมอย่างไร
  • ตั้งค่าประเภทความสัมพันธ์ให้ตรงกับสิ่งที่คุณต้องการ (แทนซ้ายเข้าร่วม ฯลฯ )
  • สร้างแบบสอบถามใหม่ที่รวมตารางของคุณ
  • ใช้External Data->Export to Excelเพื่อสร้างผลลัพธ์ของคุณ

ฉันไม่สามารถทำอย่างนั้นได้หากไม่มีคำตอบที่ยอดเยี่ยมของ Aprillion


ฉันไม่เคยเข้าใช้ก่อนหน้านี้ แต่ใช้เวลาเพียง 10 นาที ฉันคัดลอก / วางคอลัมน์ excel ลงใน 2 ตารางแทนที่จะนำเข้า
jiggunjer

3

คุณไม่สามารถ preform สไตล์ SQL รวมในตาราง Excel จากภายใน Excel ที่กล่าวว่ามีหลายวิธีในการบรรลุสิ่งที่คุณพยายามทำ

ใน Excel เช่นรูเบนกล่าวว่าสูตรที่อาจจะทำงานที่ดีที่สุดคือและVLOOKUP HLOOKUPในทั้งสองกรณีคุณจับคู่แถวที่ไม่ซ้ำกันและคืนค่าคอลัมน์ที่ได้รับไปทางซ้าย \ down จาก id ที่พบ

หากคุณต้องการเพิ่มเขตข้อมูลเพิ่มเติมสองสามรายการในรายการที่สองจากนั้นเพิ่มสูตรไปยังรายการที่สอง หากคุณต้องการตารางสไตล์ "outer join" ให้เพิ่มVLOOKUPสูตรลงในรายการแรกISNAเพื่อทดสอบว่าพบการค้นหาหรือไม่ หากความช่วยเหลือของ Excel ไม่ได้ให้รายละเอียดเพียงพอแก่คุณเกี่ยวกับวิธีใช้สิ่งเหล่านี้ในอินสแตนซ์ของคุณโปรดแจ้งให้เราทราบ

หากคุณต้องการใช้ SQL แล้วเชื่อมโยงข้อมูลไปยังโปรแกรมฐานข้อมูลของคุณสร้างแบบสอบถามของคุณและส่งออกผลลัพธ์กลับไปยัง Excel (ใน Access คุณสามารถนำเข้าแผ่นงาน Excel หรือช่วงชื่อในตารางที่เชื่อมโยงได้)


12
จริงที่คุณสามารถ - มันเรียกว่าแบบสอบถามของ Microsoft
Aprillion

3

ที่ XLTools.net เราได้สร้างทางเลือกที่ดีสำหรับ MS Query ให้ทำงานโดยเฉพาะกับ SQL Queries กับตาราง Excel มันถูกเรียกว่าXLTools SQL แบบสอบถาม มันง่ายกว่าที่จะใช้มากกว่า MS Query และใช้งานได้ดีถ้าคุณต้องการสร้างและรัน SQL - ไม่มี VBA, ไม่มีการจัดการที่ซับซ้อนกับ MS Query ...

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

คุณสามารถใช้การเข้าร่วมเกือบทุกประเภทรวมถึง LEU OUTER JOIN (ไม่รองรับ RIGHT OUTER JOIN และ FULL OUTER JOIN เท่านั้น)

นี่คือตัวอย่าง:

XLTools SQL Query - ตัวสร้างเคียวรี


2

สำหรับผู้ใช้ Excel 2007: ข้อมูล> จากแหล่งอื่น> จาก Microsoft Query> เรียกดูไฟล์ Excel

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

ในการกำหนดการเข้าร่วมของคุณ: กล่องโต้ตอบ Microsoft Query> เมนูตาราง> เชื่อม ...

ในการส่งคืนข้อมูลไปยังแผ่นงาน Excel ต้นฉบับของคุณเลือก "ส่งคืนข้อมูลไปยังแผ่นงาน Excel" จากกล่องโต้ตอบ Microsoft Query> เมนูไฟล์


0

หากคุณคุ้นเคยกับฐานข้อมูลเพียงพอคุณสามารถใช้ SQL Server เพื่อเชื่อมต่อทั้งสองเวิร์กชีตเป็นเซิร์ฟเวอร์ที่เชื่อมโยงจากนั้นใช้ T-SQL เพื่อทำงานข้อมูลแบ็คเอนด์ของคุณ จากนั้นเสร็จโดยเชื่อมต่อ Excel กลับไปที่ SQL แล้วดึงข้อมูลลงในตาราง (ปกติหรือหมุน) คุณสามารถพิจารณาใช้ Powerpivot; มันจะอนุญาตให้รวมระหว่างแหล่งฐานข้อมูลใด ๆ รวมถึง Excel ที่ใช้เป็นฐานข้อมูลแบบแฟลต


2
คุณพูดถูก แต่คำถามเริ่มแรกนั้นใช้สเปรดชีต (หรือสอง) เพื่อทำหน้าที่ฐานข้อมูลดังนั้นฉันไม่แน่ใจว่าวิธีที่มีประสิทธิภาพจริงๆในการทำงานให้สำเร็จ
dav

0

กำลังมองหาปัญหาเดียวกันกับที่ฉันเจอRDBMergeซึ่งฉันคิดว่าเป็นวิธีที่เป็นมิตรกับผู้ใช้ในการผสานข้อมูลจากหลายสมุดงาน Excel, csv และไฟล์ xml ลงในสมุดงานสรุป

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