Làm thế nào để mô phỏng một tham gia bên ngoài đầy đủ trong Excel?


34

Giả sử tôi có một số dữ liệu trong Excel (chứ không phải trong cơ sở dữ liệu thực). Trong một trang tính, tôi có dữ liệu, trong đó một cột hoạt động như ID và tôi đã đảm bảo rằng các giá trị trong cột này là duy nhất. Trong một trang tính khác, tôi cũng có một số dữ liệu, một lần nữa với một cột có thể được lấy làm ID và nó cũng là duy nhất. Nếu hàng N trong Bảng 1 có một số giá trị và hàng M trong Bảng 2 có cùng giá trị, tôi chắc chắn rằng hàng N và hàng M mô tả cùng một đối tượng trong thế giới thực.

Những gì tôi đang hỏi: làm thế nào tôi có thể có được tương đương với một tham gia bên ngoài đầy đủ mà không cần viết bất kỳ macro nào? Công thức và tất cả các chức năng có thể truy cập thông qua ruy băng là OK.

Một ví dụ "dữ liệu phát" nhỏ:

Tờ 1:

Dostoyevski    Russia
Pushkin        Russia
Shelley        England
Flaubert       France
Hugo           France
Eichendorff    Germany
Byron          England
Zola           France

Tờ 2:

Shelley        Percy Bysshe
Eichendorff    Josef Freiherr Von
Flaubert       Gustave
Byron          Lord
Keller         Gottfried
Dostoyevski    Fyodor
Zola           Emile
Balzac         Honoré de

Đầu ra mong muốn (sắp xếp không quan trọng):

Dostoyevski    Russia   Fyodor
Pushkin        Russia
Shelley        England  Percy Bysshe
Flaubert       France   Gustave
Hugo           France
Eichendorff    Germany  Josef Freiherr von
Byron          England  Lord
Zola           France   Emile
Keller                  Gottfried
Balzac                  Honoré de

Đối với tất cả những người kinh hoàng bởi kịch bản này: Tôi biết rằng đây là cách sai để làm điều đó. Nếu tôi có bất kỳ lựa chọn nào, tôi sẽ không sử dụng Excel cho việc này. Tuy nhiên, có đủ tình huống ngoài kia, nơi cần một giải pháp thực dụng, không thể áp dụng giải pháp tốt hơn (theo quan điểm CNTT).


Nếu bạn sắp xếp cả hai danh sách và đặt chúng cạnh nhau, việc kết hợp thủ công cột mong muốn sẽ khá dễ dàng. Nếu bạn có nhiều dữ liệu, bạn có thể viết một hàm có hai phạm vi và thực hiện điều này cho bạn.
Dan

@Dan như tôi đã nói, tôi đang yêu cầu làm điều này mà không cần viết một chức năng . Trong những tình huống tôi có thể viết nó, giải pháp là tầm thường (ít nhất là đối với tôi, vì tôi đã viết VBA trước đó)
rumtscho

Excel hỗ trợ các truy vấn SQL thông qua các kết nối Dữ liệu. Tôi rất kinh khủng về điều đó vì vậy tôi rất tiếc không thể cung cấp nhiều lời khuyên hơn nhưng nó có thể đáng để xem xét cho bạn.
Kyle

@Kyle Tôi đã thêm tùy chọn đó vào câu trả lời của mình. Nó không dành cho người yếu tim và vì điều này có thể là một mớ hỗn độn để chơi và / hoặc hoàn toàn quá mức với nhưng hey, tại sao không!
thúc vào

Câu trả lời:


43

Cách tiếp cận dễ dàng - thao tác Excel chuẩn

Đầu tiên, sao chép / dán cả hai cột chính từ cả hai bảng vào một bảng mới, dưới dạng một cột.

Sử dụng "Xóa bản sao" nhận danh sách duy nhất của tất cả các khóa duy nhất của bạn.

Sau đó, thêm hai cột (trong trường hợp này), một cột cho mỗi cột dữ liệu của bạn trong mỗi bảng. Tôi khuyên bạn nên sử dụng định dạng dưới dạng tùy chọn bảng vì nó làm cho công thức của bạn trông đẹp hơn nhiều. Sử dụng vlookup, sử dụng công thức sau:

=IFERROR(VLOOKUP([@ID],Sheet4!A:B,2,FALSE),"")

Trường hợp Sheet4!A:Bđại diện cho bất cứ điều gì bảng dữ liệu bảng nguồn cho mỗi giá trị tương ứng. IFERROR ngăn kết quả # N / A xấu xí xuất hiện khi vlookup không thành công và trong trường hợp này trả về một ô trống.

Điều này cung cấp cho bạn bảng kết quả của bạn.


Tờ 3:

nhập mô tả hình ảnh ở đây

Tờ 4:

nhập mô tả hình ảnh ở đây

Dữ liệu kết quả:

nhập mô tả hình ảnh ở đây

Công thức kết quả ( Ctrl+ ~sẽ chuyển đổi này):

nhập mô tả hình ảnh ở đây


Được xây dựng trong SQL Query

Bạn cũng có thể làm điều này với truy vấn SQL tích hợp. Nó ... ít thân thiện với người dùng hơn, nhưng có lẽ sẽ là trường hợp sử dụng tốt hơn. Điều này có thể sẽ yêu cầu bạn phải định dạng dữ liệu "nguồn" của mình dưới dạng bảng.

  1. Bấm vào một ô trong một trang tính mới
  2. Chuyển đến Dữ liệu -> Từ các nguồn khác -> Từ Microsoft Query
  3. Chọn Tệp Excel * trong tab Cơ sở dữ liệu và nhấn ok
  4. Chọn sổ làm việc của bạn
  5. Chọn bốn trường sau:
    • nhập mô tả hình ảnh ở đây
  6. Nhấp vào "tiếp theo" và "ok" tại cảnh báo được định dạng vào những năm 1990 mà bạn thấy
  7. Thực hiện theo các hướng dẫn này để tạo Tham gia ngoài trái đầu tiên. Trong trường hợp của tôi, tôi đang sử dụng bảng "quốc gia" làm nguồn bên trái và "tên" làm bên phải.
    • nhập mô tả hình ảnh ở đây
    • Điều này chỉ cung cấp một số hàng (kể từ khi bạn tham gia trên ID)
  8. Phần "tạo một phép trừ trừ tham gia và sau đó thêm nó dưới dạng liên kết" phức tạp hơn ..

    • Dưới đây là các cấu hình tham gia trừ: nhập mô tả hình ảnh ở đây
    • Sao chép SQL của phép nối này từ nút SQL:
    • CHỌN countries$.id countries$.Val1, names$.id names$. Val2 TỪ {oj C:\Users\Username\Desktop\Book2.xlsx. countries$ countries$TRÁI CÂY THAM GIA C:\Users\Username\Desktop\Book2.xlsx. names$ names$ON countries$.ID = names$.ID} WHERE ( names$.ID là không)

  9. Quay trở lại tham gia bên ngoài đầu tiên bạn tạo ra. Chỉnh sửa thủ công SQL và

    • thêm Unionvào dưới cùng
    • Thêm văn bản trừ ở trên vào dưới cùng của tham gia
  10. Nhấn nút "Trả lại dữ liệu" ngay bên trái nút SQL
    • Bạn có thể muốn chỉnh sửa SQL để chỉ chọn dữ liệu cụ thể mà bạn muốn tại thời điểm này. Tôi thấy dễ dàng hơn để ẩn các cột trong kết quả.
  11. Đặt Truy vấn ở đâu đó và xác nhận vị trí của nó
    • nhập mô tả hình ảnh ở đây

Không dành cho người yếu tim. Nhưng nếu bạn muốn có một cơ hội tuyệt vời để xem một số phần không được cập nhật lâu như bạn có thể còn tồn tại của Office thì đó là một cơ hội tuyệt vời.


1
Bạn có tham chiếu cho ký hiệu [@ID] không? Tôi không nghi ngờ rằng nó hoạt động, nhưng tôi chưa bao giờ thấy nó trước đây và tôi làm rất nhiều việc trong Excel.
TJL

1
@TJL nếu bạn định dạng bảng dưới dạng bảng, nó sẽ sử dụng loại ký hiệu đó để tham chiếu các cột khác. Rõ ràng hơn nhiều so với tài liệu tham khảo tế bào. Nó có thể là một tính năng 2010+? Tôi không chắc. Tôi đã không sử dụng phép thuật định dạng như bảng đủ trước năm 2010 ..
thúc vào


Bạn có thể thay đổi từ TRÁI thành từ ĐẦY ĐỦ trong truy vấn ban đầu không? Tôi chắc chắn rằng nó chỉ sử dụng trình điều khiển ACE OLEDB để chạy truy vấn đó, hỗ trợ cú pháp FULL THAM GIA.
Kyle Hale

14

Là một giải pháp thay thế, tôi có thể đề xuất Power Query không? Đây là một bổ trợ Excel miễn phí từ Microsoft để cơ bản thực hiện chính xác loại điều này. Chức năng của nó thực sự cũng sẽ được đưa trực tiếp vào Excel 2016, do đó, nó tương lai.

Dù sao, với Power Query, các bước khá đơn giản:

  1. Nhập cả hai bảng dưới dạng truy vấn vào Power Query Editor.
  2. Thực hiện chuyển đổi Hợp nhất truy vấn trên chúng, đặt cột tham gia thích hợp và đặt loại tham gia là Toàn bộ bên ngoài.
  3. Tải bảng kết quả của bạn vào một bảng mới.

Điều tuyệt vời ở đây là khi bạn đã thiết lập điều này, nếu bạn thay đổi các bảng dữ liệu cơ sở, bạn chỉ cần nhấn Dữ liệu> Làm mới Tất cả và bảng kết quả Truy vấn Sức mạnh của bạn cũng được cập nhật.


Thật sự thú vị. Một người bạn của tôi sở hữu một nhà hàng đã hỏi tôi về MS Office và cho tôi xem bộ 2016 của anh ta, không bao gồm MS Access. Tôi thấy bây giờ tại sao lại như vậy. Excel có rất nhiều hạn chế. Tôi chưa bao giờ mua trên 2003 vì không có tính năng nào có giá trị và tôi cũng không thích giao diện mới; 2010 trở lên. Access thực hiện tất cả những điều này và hơn thế nữa, nó đặt ra câu hỏi, tại sao rất nhiều người cố gắng làm Cơ sở dữ liệu làm việc trong Excel khi Access là cách để đạt được điều này? Điều duy nhất tôi có thể thấy là có lẽ để một Access DB hoạt động tốt, nó cũng cần trải nghiệm VB tốt.
ejbyte

@ejbytes hầu hết mọi người đều hiểu khái niệm về bảng tính. Hầu hết không ... không hiểu khái niệm cơ sở dữ liệu. Tôi đã có một dự án chuyển đổi một dự án cơ sở dữ liệu bảng tính thành cơ sở dữ liệu và người dùng vẫn gọi nó là "bảng tính" - ngay cả sau khi giải thích sâu rộng về cách thức hoạt động của cơ sở dữ liệu!
thúc vào

@enderland Tôi nghĩ bạn đúng. Một bảng tính với các quy tắc không nghiêm ngặt và tính linh hoạt không liền kề ... và các truy vấn được ngụy trang thành các bộ lọc. Một nền tảng cho các bảng và danh sách thay đổi.
ejbyte

Phiên bản @ejbytes tldr là MS muốn thử nghiệm công cụ bộ nhớ cột trong Excel để cho nhiều hàng hơn, nó bao gồm các kết nối dữ liệu ngoài, nó đã được chứng minh rất phổ biến, vì vậy họ đã thêm vào một công cụ ETL. Bây giờ họ đã đưa tất cả các công cụ lên thành PowerBI.
Kyle Hale

@KyleHale Tôi đang sử dụng Office 2010 và đang thử thực hiện FULL OUTER THAM GIA, nhưng Power Query bỏ qua ID từ bảng thứ hai không có trong bảng đầu tiên.
GeMir

0

Một cách nhanh chóng để mô phỏng bán (nối ngoài) là lấy danh sách thứ hai của bạn và dán nó ngay bên dưới danh sách nắm tay của bạn, tức là (các khóa chính) của bạn đều nằm trong cùng một cột (chính). Sau đó Sắp xếp cột chính đó, bạn sẽ kết thúc với một danh sách xen kẽ, sau đó thực hiện một phương trình IF được chuyển đổi (siêu người dùng đang làm rối chế độ xem bố cục bảng ..):

listA listB


sam xanh tim 32874 tim đỏ mary 5710 chris xanh gustav 047 fred xanh
mary đen

sao chép / dán / sắp xếp, kết quả trông như thế này: AB chris green fred blue gustav 047 mary 5710 mary black sam blue tim 32874 tim red

thì công thức cho ô c1: (c1) = if (A1 = A2, B2)

kết quả trông như thế này:

ABC chris xanh FALSE fred xanh FALSE gustav 047 FALSE mary 5710 đen mary đen FALSE sam blue FALSE tim 32874 đỏ tim đỏ FALSE

Sắp xếp C để loại bỏ các lỗi giả v.v ... Đó là phiên bản cơ bản của ý tưởng, chỉ cần mở rộng nó nếu có thêm dữ liệu. -wag770 310


Bạn có thể định dạng này theo bất kỳ cách nào để làm cho nó dễ đọc hơn không?
davidbaumann
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.