Tôi có hai danh sách (bộ duy nhất) trong một bảng tính và tôi muốn có giao điểm của hai.
Có cách nào làm dễ hơn không?
Đây là một ví dụ về những gì tôi muốn đạt được:
Danh sách 1 Danh sách 2 Kết quả mong đợi 1 e b 2 f ce ngày 4 ef f 6
Tôi có hai danh sách (bộ duy nhất) trong một bảng tính và tôi muốn có giao điểm của hai.
Có cách nào làm dễ hơn không?
Đây là một ví dụ về những gì tôi muốn đạt được:
Danh sách 1 Danh sách 2 Kết quả mong đợi 1 e b 2 f ce ngày 4 ef f 6
Câu trả lời:
Không cần phải nhảy vào GAS, các chức năng bảng tính tiêu chuẩn xử lý việc này dễ dàng.
Vui lòng dán phần sau vào một ô trong ví dụ của bạn
=iferror(filter($A$2:$A, match($A$2:$A, B2:$B , false)), "no match")
Hàm so khớp tạo ra một sản phẩm cartesian của hai phạm vi đầy lỗi trừ trường hợp tìm thấy kết quả khớp. Nó trả về một chỉ số vào trong phạm vi 2 khi một trận đấu được tìm thấy.
Hàm bộ lọc sẽ loại bỏ tất cả các crap và chỉ trả về các giá trị được lập chỉ mục chính xác.
Các hàm IFERROR giúp để có được một kết quả gọn gàng nếu không có trận đấu nào cả.
Các phạm vi có thể có độ dài bất kỳ, như được biểu thị bằng thành ngữ $ A $ 2: $ A.
Kịch bản nhỏ này sẽ so sánh hai phạm vi, như một công thức:
function COMPARE(array1, array2) {
var array = [];
for(i=0; i<array1.length; i++) {
for(j=0; j<array2.length; j++) {
if(array1[i][0] == array2[j][0]) {
// the extra square brackets will make it a 2D array,
// aligning it vertically
array.push([array1[i][0]]);
}
}
}
return array;
}
Trong trang tính của bạn, bạn có thể thêm vào ô D2 công thức sau:
=COMPARE(A2:A7,B2:B7)
Thêm tập lệnh thông qua menu công cụ, trình soạn thảo tập lệnh.
Trong trường hợp bạn đang tìm cách tìm phép trừ hai phạm vi (các phần tử của phạm vi 1 không nằm trong phạm vi 2), như:
List 1 List 2 Expected result
a 1 a
b 2 b
c e c
d 4 d
e f
f 6
Đây là một công thức cho bạn:
=iferror(filter($A$2:$A, iserror(match($A$2:$A, B2:$B , false))), "no match")
Kịch bản nhỏ này sẽ so sánh hai phạm vi, như một công thức:
function intersect(array1, array2) {
var array = [];
for(i=0; i<array1.length; i++) {
for(j=0; j<array2.length; j++) {
if(array1[i][0] == array2[j][0]) {
// the extra square brackets will make it a 2D array,
// aligning it vertically
array.push([array1[i][0]]);
}
}
}
return array;
}
Thêm:
function extersect(array1, array2) {
var array = [];
var tmp = true;
for(i=0; i<array1.length; i++) {
for(j=0; j<array2.length; j++) {
if(array1[i][0] == array2[j][0]) {
// the extra square brackets will make it a 2D array,
// aligning it vertically
tmp = false;
}
}
if(tmp == true)
{
array.push([array1[i][0]]);
}
tmp = true;
}
return array;
}
Trong trang tính của bạn, bạn có thể thêm vào ô D2 công thức sau:
=intersect(A2:A7,B2:B7)
Thêm tập lệnh thông qua menu công cụ, trình soạn thảo tập lệnh.
= giao nhau (A2: A7, B2: B7) trả về các kết quả có trên cả hai mảng mảng1, mảng2.
= extersect (A2: A7, B2: B7) trả về các giá trị của mảng1 không tồn tại trong phạm vi B2: B7