У меня есть два списка (уникальных набора) в электронной таблице, и я хочу, чтобы пересечение этих двух.
Есть простой способ сделать это?
Вот пример того, чего я хочу достичь:
Список 1 Список 2 Ожидаемый результат 1 е б 2 ф в.п. д 4 эф f 6
У меня есть два списка (уникальных набора) в электронной таблице, и я хочу, чтобы пересечение этих двух.
Есть простой способ сделать это?
Вот пример того, чего я хочу достичь:
Список 1 Список 2 Ожидаемый результат 1 е б 2 ф в.п. д 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)
Добавьте скрипт через меню инструментов, редактор скриптов.
= intersect (A2: A7, B2: B7) возвращает результаты, которые присутствуют в обоих массивах array1, array2.
= extersect (A2: A7, B2: B7) возвращает значения массива1, которого нет в диапазоне B2: B7