2012-04-17 47 views
5

Tôi đang cố so sánh cột a trong Bảng 1 với cột a trong Bảng 2, sau đó sao chép các giá trị tương ứng trong cột b từ trang 1 sang cột b trong Bảng 2 (trong đó cột một giá trị khớp). Tôi đã cố gắng để đọc về cách làm điều này, nhưng tôi không chắc chắn nếu tôi nên cố gắng để tạo ra một vĩ mô, hoặc nếu có một cách đơn giản để làm điều này, có lẽ VLOOKUP hoặc MATCH? Tôi thực sự không quen thuộc với cách các chức năng này hoạt động.Cách so sánh hai cột trong Excel (từ các trang tính khác nhau) và sao chép các giá trị từ một cột tương ứng nếu hai cột đầu tiên khớp nhau?

Ngoài ra, nếu nó làm cho một sự khác biệt, sẽ được lặp đi lặp lại các giá trị trong cột b của Bảng 2.

Bảng 1

12AT8001 1 
12AT8002 2 
12AT8003 3 
12AT8004 4 
12AT8005 5 
12AT8006 6 

Bảng 2

12AT8001 
12AT8001 
12AT8001 
12AT8001 
12AT8001 
12AT8002 
12AT8002 
12AT8002 
12AT8002 
12AT8002 
12AT8003 
12AT8003 
12AT8003 
12AT8003 
12AT8003 

Trả lời

5

Vlookup là tốt nếu các giá trị tham chiếu (cột A, tờ 1) đang theo thứ tự tăng dần. Một lựa chọn khác là Index và Match, mà có thể được sử dụng không có vấn đề trật tự (Chừng nào các giá trị trong cột một, tấm 1 là duy nhất)

Đây là những gì bạn sẽ đặt ở cột B trên tờ 2

=INDEX(Sheet1!A$1:B$6,MATCH(A1,Sheet1!A$1:A$6),2) 

Đặt Sheet1!A$1:B$6Sheet1!A$1:A$6 làm dải ô được đặt tên giúp người dùng thân thiện hơn một chút.

+0

Khi tôi sử dụng công thức trên tập hợp con của dữ liệu (mà tôi sử dụng như là một ví dụ trong câu hỏi) nó làm việc. Tuy nhiên, khi tôi đã thử nó trên tập hợp đầy đủ của dữ liệu (600 hàng cho sheet1 và 2994 hàng cho sheet2) nó đã cho tôi lỗi # N/A. Tôi cập nhật công thức để đọc: = INDEX (Sheet1! A $ 1: B $ 600, MATCH (A1, Sheet1! A $ 1: A $ 600), 2). – kmcamara

+0

Sau đó, tôi đã thử với đầy đủ 600 hàng trên sheet1, nhưng giữ nó vào cùng một tập con kiểm tra cho sheet2 mà tôi đã sử dụng trong ví dụ. Sử dụng cùng một = INDEX (Sheet1! A $ 1: B $ 600, MATCH (A1, Sheet1! A $ 1: A $ 600), 2) công thức, nó trả về một số dường như tùy ý 276 cho tất cả các hàng. – kmcamara

+0

Có lẽ nó không hoạt động vì id của tập dữ liệu đầy đủ cho sheet2 không theo thứ tự như sheet1 (như trong ví dụ)? Tất cả những id được trộn lẫn trong tập hợp đầy đủ. . . đó là lý do tại sao tôi cần một cái gì đó nhanh hơn so với kết hợp chúng bằng tay. Tất cả các giá trị trong cột A của sheet1 là duy nhất bằng cách này. Bất kỳ ý tưởng nào về lý do tại sao nó sẽ không hoạt động trên bộ đầy đủ, hoặc có một số thứ khác để thử? – kmcamara

0

Tạo bảng chân lý và sử dụng SUMPRODUCT để nhận các giá trị. Sao chép dữ liệu này vào ô B1 trên Sheet2 và sao chép theo như bạn cần:
=SUMPRODUCT(--($A1 = Sheet1!$A:$A), Sheet1!$B:$B)
phần tạo bảng chân lý là:
--($A1 = Sheet1!$A:$A)
Điều này trả về mảng 0 và 1. 1 khi các giá trị khớp và 0 khi chúng không khớp. Sau đó, dấu phẩy sau đó về cơ bản sẽ làm những gì tôi gọi là phép nhân ma trận "vui" và sẽ trả lại kết quả. Tôi có thể đã hiểu lầm câu hỏi của bạn mặc dù, có giá trị trùng lặp trong Cột A của Sheet1?

+0

Tôi không tuân theo giải pháp của bạn :(nhưng không có bản sao nào trong cột A của Sheet1. – kmcamara

+0

Hãy thử chỉ cần sao chép và dán công thức đầu tiên tôi đã cho bạn vào ô B1 trên Sheet2 và điền vào như xa như bạn cần.B giả sử các bảng tính của bạn được thiết lập như thế nào bạn đã đề cập trong bài viết của bạn nó sẽ cung cấp cho các giá trị chính xác.Nó về cơ bản nhân 1 * giá trị trong cột B của Bảng 1 bất cứ khi nào cột A của Bảng 1 khớp với giá trị trong Cột A của S heet 2. – deusxmach1na

-1

Hãy thử:

sheet 2 a1 =vlookup(sheet2a1,sheet1$a$1:$b$6,2) 

Sau đó kéo nó xuống.

Nó sẽ hoạt động.

3

Khi phát hiện kmcamara, đây chính là loại vấn đề mà VLOOKUP có ý định giải quyết và việc sử dụng vlookup được cho là cách đơn giản nhất để thực hiện công việc. Ngoài các tham số cho lookup_value, table_range được tìm kiếm và column_index cho các giá trị trả về, VLOOKUP nhận một tham số thứ tư tùy chọn mà tài liệu Excel gọi là "range_lookup".

Mở rộng khi chếtGiới thiệu của giải thích, nếu đối số này được đặt thành TRUE (hoặc 1) hoặc bị bỏ qua, phạm vi bảng phải được sắp xếp theo thứ tự tăng dần của các giá trị trong cột đầu tiên của phạm vi cho hàm để trả về thông thường được hiểu là giá trị "chính xác". Theo hành vi mặc định này, hàm sẽ trả về một giá trị dựa trên kết hợp chính xác, nếu có, hoặc một kết quả gần đúng nếu không tìm thấy kết hợp chính xác.

Nếu đối sánh là gần đúng, giá trị được hàm trả về sẽ dựa trên giá trị lớn nhất tiếp theo nhỏ hơn giá trị tra cứu.Ví dụ: nếu "12AT8003" bị thiếu trong bảng trong Trang tính 1, thì các công thức tra cứu cho giá trị đó trong Trang 2 sẽ trả về '2', vì "12AT8002" là giá trị lớn nhất trong cột tra cứu của phạm vi bảng ít hơn hơn "12AT8003". (Hành vi mặc định của VLOOKUP có ý nghĩa hoàn hảo nếu, ví dụ: mục tiêu là tìm kiếm tỷ lệ trong bảng thuế.)

Tuy nhiên, nếu đối số thứ tư được đặt thành FALSE (hoặc 0), VLOOKUP sẽ trả về giá trị nhìn lên chỉ có giá trị nếu có kết quả khớp chính xác và giá trị lỗi là # N/A nếu không có. Bây giờ thực hành thông thường là bao bọc một hàm VLOOKUP chính xác trong một hàm IFERROR để nắm bắt không phù hợp một cách duyên dáng. Trước khi giới thiệu IFERROR, không có kết quả nào được kiểm tra với hàm IF bằng cách sử dụng công thức VLOOKUP một lần để kiểm tra xem có khớp hay không và một lần để trả về giá trị khớp thực tế. Mặc dù ban đầu khó hơn để làm chủ, giải pháp đề xuất của deusxmach1na là một biến thể trên một tập hợp thay thế mạnh mẽ cho VLOOKUP có thể được sử dụng để trả về giá trị cho cột hoặc danh sách sang số bên trái của cột tra cứu, mở rộng để xử lý các trường hợp nơi cần có kết hợp chính xác trên nhiều tiêu chí hoặc được sửa đổi để kết hợp HOẶC cũng như VÀ khớp với các điều kiện trong nhiều tiêu chí.

giải pháp Lặp lại kcamara của lựa chọn, công thức VLOOKUP cho vấn đề này sẽ là:

=VLOOKUP(A1,Sheet1!A$1:B$600,2,FALSE) 
Các vấn đề liên quan