У таблиці я є два списки (унікальні набори), і я хочу отримати перетин двох.
Чи є простий спосіб це зробити?
Ось приклад того, що я хочу досягти:
Список 1 Список 2 Очікуваний результат a 1 е b 2 f се d 4 еф f 6
У таблиці я є два списки (унікальні набори), і я хочу отримати перетин двох.
Чи є простий спосіб це зробити?
Ось приклад того, що я хочу досягти:
Список 1 Список 2 Очікуваний результат a 1 е b 2 f се d 4 еф f 6
Відповіді:
Не потрібно стрибати в GAS, стандартні функції електронних таблиць легко справляються з цим.
Будь ласка, вставте наступне у комірку у своєму прикладі
=iferror(filter($A$2:$A, match($A$2:$A, B2:$B , false)), "no match")
Функція відповідності генерує декартовий добуток із двох діапазонів, повних помилок, за винятком випадків, коли зустрічається відповідність. Він повертає індекс в діапазоні 2 , коли матч буде знайдений.
Функція фільтра викидає всі лайно і повертає лише правильно індексовані значення.
ЕСЛІОШІБКА допомагає отримати акуратний результат , якщо немає посилань на все.
Діапазони можуть бути будь-якої довжини, як зазначено в ідіомі $ A $ 2: $ A.
Цей маленький сценарій порівняє два діапазони як формулу:
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;
}
У свій аркуш можна додати в комірку D2 таку формулу:
=COMPARE(A2:A7,B2:B7)
Додайте скрипт через меню інструментів, редактор сценаріїв.
Якщо ви шукаєте, як знайти віднімання двох діапазонів (елементи діапазону 1, які не знаходяться в діапазоні 2), наприклад:
List 1 List 2 Expected result
a 1 a
b 2 b
c e c
d 4 d
e f
f 6
Ось формула для вас:
=iferror(filter($A$2:$A, iserror(match($A$2:$A, B2:$B , false))), "no match")
Цей маленький сценарій порівняє два діапазони як формулу:
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;
}
Додатково:
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;
}
У свій аркуш можна додати в комірку D2 таку формулу:
=intersect(A2:A7,B2:B7)
Додайте скрипт через меню інструментів, редактор сценаріїв.
= перетинається (A2: A7, B2: B7) повертає результати, які є в обох масивах array1, array2.
= extersect (A2: A7, B2: B7) повертає значення масиву1, що не існує в діапазоні B2: B7