Làm cách nào để tôi tham gia hai bảng tính trong Excel như trong SQL?


121

Tôi có hai bảng tính trong hai tệp Excel khác nhau. Cả hai đều chứa danh sách tên, số id và dữ liệu liên quan. Một là danh sách chính bao gồm các trường nhân khẩu học chung và cái còn lại là danh sách chỉ bao gồm tên và id và địa chỉ. Danh sách này đã được giảm xuống từ danh sách chính bởi một văn phòng khác.

Tôi muốn sử dụng danh sách thứ 2 để lọc cái đầu tiên. Ngoài ra, tôi muốn kết quả bao gồm các trường khác từ bảng chính cùng với các trường địa chỉ từ bảng tính thứ hai. Tôi biết làm thế nào tôi có thể làm điều này rất dễ dàng với một kết nối bên trong cơ sở dữ liệu, nhưng tôi không rõ ràng về cách thực hiện điều này một cách hiệu quả trong Excel. Làm thế nào có thể tham gia hai bảng tính trong Excel? Điểm thưởng cho thấy cách thực hiện các phép nối ngoài là tốt, và tôi rất muốn biết cách làm điều này mà không cần macro.


1
Tôi thấy trang sau rất hữu ích: Randomwok.com/excel/how-to-use-index-match
Tommy Bravo

Randomwok.com/excel/how-to-use-index-match => đặc biệt là "lời nhắc" dễ dàng ở cuối:=INDEX ( Column_I_want_a_return_value_from , ( MATCH ( My_Lookup_Value , Column_I_want_to_Lookup_against , 0 ))
Tommy Bravo

Câu trả lời:


157

Đối với 2007+ sử dụng Data> From Other Sources> From Microsoft Query:

  1. chọn Excel Filevà chọn excel đầu tiên của bạn
  2. chọn các cột
    (nếu bạn không thấy bất kỳ danh sách các cột nào, hãy đảm bảo kiểm tra Options> System Tables)
  3. đi đến Data> Connections> [chọn kết nối vừa tạo]> Properties> Definition>Command text

Bây giờ bạn có thể chỉnh sửa điều này Command textdưới dạng SQL. Không chắc chắn cú pháp nào được áp dụng, nhưng tôi đã thử tham gia ngầm, "tham gia bên trong", "tham gia trái" và các hiệp hội mà tất cả đều hoạt động. Đây là một truy vấn mẫu:

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
Có cách nào để tránh mã hóa đường dẫn không? Con đường tương đối sẽ làm việc?
Rekin

25
Là một phần thưởng bổ sung, Microsoft Query cho phép bạn trải nghiệm Điều khiển chung theo kiểu 16 bit để mở tệp Excel và cho các hộp thông báo. Bằng cách đó bạn có thể nhớ khi còn trẻ. :-)
Edward Brey

Cái này có hoạt động với các tệp CSV không? Tôi đang sử dụng MS Office Professional Plus 2010 và không thấy cách làm theo bước 3 - tôi có để hộp thoại ở bước 2 không? Không có "chọn kết nối mới của bạn" trong hộp thoại Kết nối của tôi.
John Freeman

@JohnFreeman bởi vì bạn phải chọn một trong những tùy chọn có sẵn theo yêu cầu của bạn (ví dụ 'Thêm ...')
Aprillion

3
Lưu ý rằng bạn có thể nhận được hộp thoại có nội dung 'Nguồn dữ liệu này không chứa các bảng hiển thị', theo sau là hộp thoại 'Trình hướng dẫn truy vấn - Chọn cột'. Đó là từ hộp thoại này mà bạn muốn nhấp vào nút 'Tùy chọn', sau đó chọn hộp kiểm 'Bảng hệ thống' để xem dữ liệu bạn muốn truy vấn.
Tola Odejayi

11

Hỗ trợ câu trả lời được chấp nhận. Tôi chỉ muốn nhấn mạnh vào "chọn cột (nếu bạn không thấy bất kỳ danh sách cột nào, hãy đảm bảo kiểm tra Tùy chọn> Bảng hệ thống)"

Khi bạn chọn tệp excel, rất có thể bạn sẽ thấy this data source contains no visible tablesdấu nhắc và các tab và cột có sẵn là không có. Microsoft thừa nhận rằng đó là một lỗi mà các tab trong tệp excel được coi là "Bảng hệ thống" và tùy chọn cho "Bảng hệ thống" không được chọn theo mặc định. Vì vậy, đừng hoảng sợ ở bước này, bạn chỉ cần nhấp vào "tùy chọn" và kiểm tra "Bảng hệ thống", sau đó bạn thấy các cột có sẵn.


8

VLOOKUP và HLOOKUP có thể được sử dụng để tìm kiếm các khóa chính phù hợp (được lưu trữ theo chiều dọc hoặc chiều ngang) và trả về các giá trị từ các cột / hàng của 'thuộc tính'.


rất hữu ích cho tấm trên cùng một workbook (nhưng tôi thấy INDEX + Đội hình thi đấu các chức năng hữu ích thậm chí nhiều hơn), phức tạp hơn một chút khi cập nhật dữ liệu từ workbook bên ngoài khép kín ...
Aprillion

7

Bạn có thể sử dụng Microsoft Power Query, có sẵn cho các phiên bản Excel mới hơn (tương tự như câu trả lời được chấp nhận, nhưng đơn giản và dễ dàng hơn nhiều). Các cuộc gọi Power Query tham gia 'hợp nhất'.

Cách dễ nhất là có 2 bảng Excel của bạn dưới dạng bảng Excel. Sau đó, trong Excel, chuyển đến tab dải băng Truy vấn Power và nhấp vào nút 'Từ Excel'. Khi bạn đã nhập cả hai bảng vào Power Query, chọn một bảng và nhấp vào 'Hợp nhất'.


3
Vì vậy, dễ dàng hơn nhiều so với bất kỳ tùy chọn đề xuất khác. Đây nên là câu trả lời! Power Query hiện được bao gồm trong Excel 2016 trong tab Dữ liệu .
SliverNinja - MSFT

1
Một tính năng khác dường như không tồn tại trên Mac
juandesant

4

Mặc dù tôi nghĩ rằng câu trả lời của Aprillion bằng Microsoft Query là tuyệt vời, nhưng nó đã truyền cảm hứng cho tôi sử dụng Microsoft Access để tham gia vào bảng dữ liệu mà tôi thấy dễ dàng hơn nhiều.

Tất nhiên bạn cần cài đặt MS Access.

Các bước:

  • Tạo cơ sở dữ liệu Access mới (hoặc sử dụng DB đầu).
  • Sử dụng Get External Datađể nhập dữ liệu Excel của bạn dưới dạng bảng mới.
  • Sử dụng Relationshipsđể hiển thị cách các bảng của bạn được tham gia.
  • Đặt loại Mối quan hệ để khớp với những gì bạn muốn (đại diện cho tham gia bên trái, v.v.)
  • Tạo một truy vấn mới tham gia các bảng của bạn.
  • Sử dụng External Data->Export to Excelđể tạo kết quả của bạn.

Tôi thực sự không thể làm điều đó mà không có câu trả lời tuyệt vời của Aprillion.


Tôi chưa bao giờ sử dụng quyền truy cập trước ngày hôm nay, nhưng điều này chỉ mất 10 phút. Tôi sao chép / dán các cột excel vào 2 bảng thay vì nhập.
jiggunjer

3

Bạn không thể tạo mẫu SQL tham gia trên các bảng Excel từ trong Excel. Điều đó nói rằng, có nhiều cách để thực hiện những gì bạn đang cố gắng làm.

Trong Excel, như Reuben nói, các công thức có thể sẽ hoạt động tốt nhất là VLOOKUPHLOOKUP. Trong cả hai trường hợp, bạn khớp trên một hàng duy nhất và nó trả về giá trị của cột đã cho \ hàng bên trái \ xuống từ id tìm thấy.

Nếu bạn chỉ muốn thêm một vài trường vào danh sách thứ hai, thì hãy thêm các công thức vào danh sách thứ hai. Nếu bạn muốn có một bảng kiểu "tham gia ngoài", sau đó thêm VLOOKUPcông thức vào danh sách đầu tiên ISNAđể kiểm tra xem có tìm được không. Nếu Trợ giúp của Excel không cung cấp cho bạn đủ chi tiết về cách sử dụng chúng trong trường hợp cụ thể của bạn, hãy cho chúng tôi biết.

Nếu bạn thích sử dụng SQL, sau đó liên kết dữ liệu vào chương trình cơ sở dữ liệu của bạn, tạo truy vấn của bạn và xuất kết quả trở lại Excel. (Trong Access, bạn có thể nhập Bảng tính Excel hoặc Phạm vi được đặt tên dưới dạng Bảng được liên kết.)


12
trên thực tế, bạn có thể - nó được gọi là Microsoft Query
Aprillion

3

Tại XLTools.net, chúng tôi đã tạo ra một giải pháp thay thế tốt để MS Query hoạt động, đặc biệt là với Truy vấn SQL đối với các bảng Excel. Nó được gọi là Truy vấn SQL XLTools . Nó dễ sử dụng hơn nhiều so với MS Query và hoạt động thực sự tốt nếu bạn chỉ cần tạo và chạy SQL - không có VBA, không có thao tác phức tạp với MS Query ...

Với công cụ này, bạn có thể tạo bất kỳ truy vấn SQL nào đối với các bảng trong sổ làm việc Excel bằng cách sử dụng trình soạn thảo SQL nhúng và chạy nó ngay lập tức với tùy chọn để đưa kết quả lên một bảng tính mới hoặc bất kỳ.

Bạn có thể sử dụng hầu hết mọi loại hình tham gia bao gồm cả LEFT OUTER THAM GIA (chỉ hỗ trợ RIGHT OUTER THAM GIA và FULL OUTER THAM GIA).

Đây là một ví dụ:

Truy vấn SQL XLTools - Trình tạo truy vấn


2

Đối với người dùng Excel 2007: Dữ liệu> Từ các nguồn khác> Từ Microsoft Query> duyệt đến tệp Excel

Theo bài viết này , truy vấn từ XLS phiên bản 2003 có thể dẫn đến "Nguồn dữ liệu này không chứa bảng hiển thị." lỗi vì bảng tính của bạn được coi là bảng HỆ THỐNG. Vì vậy, hãy kiểm tra các tùy chọn "Bảng hệ thống" trong hộp thoại "Trình hướng dẫn truy vấn - Chọn cột" khi bạn tạo truy vấn sẽ hoạt động.

Để xác định tham gia của bạn: Hộp thoại Microsoft Query> Menu bảng> Tham gia ...

Để trả lại dữ liệu về trang tính Excel ban đầu của bạn, chọn "Trả lại dữ liệu cho Bảng Excel" từ hộp thoại Microsoft Query> Menu tệp.


0

Nếu bạn đủ quen thuộc với cơ sở dữ liệu, bạn có thể sử dụng SQL Server để kết nối cả hai trang tính dưới dạng Máy chủ được liên kết và sau đó sử dụng T-SQL để thực hiện công việc dữ liệu phụ trợ của bạn. Sau đó kết thúc bằng cách kết nối Excel trở lại SQL và kéo dữ liệu vào một bảng (thông thường hoặc trục). Bạn cũng có thể xem xét sử dụng PowerpOLL; nó sẽ cho phép nối giữa bất kỳ nguồn cơ sở dữ liệu nào - bao gồm Excel được sử dụng làm cơ sở dữ liệu phẳng.


2
Bạn đúng, nhưng câu hỏi ban đầu dựa trên việc sử dụng bảng tính (hoặc hai) để thực hiện chức năng cơ sở dữ liệu, vì vậy tôi không chắc chắn về bất kỳ cách nào thực sự hiệu quả để thực hiện nhiệm vụ.
DAV

0

Tìm kiếm cùng một vấn đề tôi đã gặp RDBMerge , mà tôi nghĩ là một cách thân thiện với người dùng để Hợp nhất dữ liệu từ nhiều sổ làm việc Excel, các tệp csv và xml vào Sổ làm việc tóm tắt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.