Взаимное включение множеств excel


Пусть имеется несколько множеств — {A1, A2, A3, А4 …}, {B1, B2, B3, …}, {C1, C2, …}, количество элементов в которых может быть различно. Требуется составить все возможные комбинации элементов этих множеств таким образом, чтобы в комбинации присутствовал только один элемент из каждого множества: (A1, B1, C1), (A1, B2, C1), (A1, B2, C2), … Также подсчитаем в MS EXCEL количество таких комбинаций.

Начнем со множеств, состоящих из последовательностей целых чисел без повторов с шагом =1. Например, {1; 2; 3; 4} или {-1; 0; 1; 2; 3}. В

файле примера

создана форма для 4-х множеств, состоящих из 6 элементов (максимум).

В пределах одного множества все элементы должны быть разными, а элементы, принадлежащие разным множествам, могут повторяться. Количество элементов во множествах может быть различным.

Число различных комбинаций, содержащих по одному элементу из каждого множества, равно произведению количеств элементов каждого множества. Например, как следует из картинки выше, число комбинаций =6*4*3*2=144.

С помощью простых формул можно найти все эти 144 комбинации (см.

файл примера

лист

Пример Числа

)

Изменяя количество элементов во множествах, будут автоматически изменяться число комбинаций и сами комбинации (необходимо следить, чтобы количество строк с формулами было достаточным для отображения всех комбинаций).

При необходимости, в

файле примера

можно легко увеличить как количество множеств, так и количество элементов в каждом из множеств. Для этого нужно скопировать формулы в ячейки справа.


Примечание

: Если все множества идентичны (состоят из одинаковых элементов), то задача сводится к

Размещению с повторениями

. Действительно, пусть в каждом из k множеств по n элементов. Произведение количеств элементов (n) k раз, равно n^k, что равно количеству Размещений с повторениями.

Множества, состоящие из букв (символов)

Если необходимо составить комбинации нечисловых элементов, например, взяв множества {A, Б, В}; {Й, Ц, А}, то вышеуказанный подход также можно использовать. Для этого произвольным образом нужно сопоставить буквам последовательные числовые значения.

После того, как все комбинации для числовых эквивалентов будут построены, необходимо сделать обратное преобразование: каждому числу сопоставить соответствующую букву (см. лист

Пример Буквы1

).


Примечание

: Существует и прямой подход, изложенный на сайте

https://sites.google.com/site/e90e50fx/home/combinatorics-using-excel-formulas-and-examples#TOC-Combine-elements-of-different-sets

(см. лист в

файле примера

Пример Буквы2

). Правда, для этого необходимо создать зубодробительную

формулу массива

.

Например, у меня есть xls где:

  • в столбце А есть список объектов со свойством А
  • столбец B содержит список объектов со свойством B

Мне нужно следующее:

  • столбец C, представляющий собой A union B (уникальные предметы как A, так и B)
  • столбец D, который является пересечением A B (общие элементы A & B)
  • столбец E, который является A минус B (элементы в A, но не в B)
  • столбец F, который является B минус A (элементы в B, но не в A)

Операции над множествами элементов списка кажутся простыми с SQL или Python. Но как это сделать в xls?

Примечание: это должна быть автоматизация с минимальным количеством копий-вставок и кликов. Например, я не хочу копировать-вставлять A ниже B, а затем «исключать дубликаты», чтобы получить A B.

2015-07-02 13:53

5

ответов

Пересечение (в A & B): =IFNA(VLOOKUP(B2,$A$2:$B$42,1,FALSE),"")

Союз (в A или B): =IFS(A2,A2,B2,B2) Обратите внимание, что IFS только в последних (по состоянию на 2018) версиях.

A — B (только в A): =IF(NOT(IFNA(MATCH(A2,$B$2:$B$42,0),FALSE)),IF(A2,A2,""),"")

B — A (только в B): =IF(NOT(IFNA(MATCH(B2,$A$2:$A$42,0),FALSE)),IF(B2,B2,""),"") (Поменяйте местами буквы)

2018-12-29 22:39

Один Excel, кажется, не в состоянии выполнить эту работу. Тем не менее, есть надстройки. Возможно, вы захотите протестировать бесплатную Power Analytics для Excel с открытым исходным кодом . Он поставляется с некоторыми функциями, точно выполняющими то, что вы просили:

Использование в Excel 365

В Excel 365 Power Analytics для Excel можно использовать динамические массивы. Эта функция включена исключительно в Excel 365 и недоступна в Excel 2019, 2016 и т. д.

В следующем примере мы просто пишем =PA_Sets_And(A2:A11;B2:B6) в одну ячейку D2, а затем, как по волшебству, формула расширяется до необходимой длины в три строки.

Использование в Excel 2019, 2016,…

Здесь мы используем метод PA_Sets_And, чтобы узнать, содержится ли ячейка (B2) в диапазоне всего набора (A2:A11). Не так круто, как для Excel 365, но немного лучше, чем ВПР :-)

2021-01-23 14:18

Ну, Microsoft Excel не обрабатывает встроенные операции над множествами. Но вы можете эмулировать VBA, используя функцию MATCH и обработку ошибок.

Вот код, который работал для меня (я предполагаю, что у вас заголовок в первой строке):

Sub set_operations()
    Dim i, j, rangeA, rangeB, rowC, rowD, rowE, rowF As Long
    Dim test1, test2 As Boolean

    rangeA = ActiveSheet.Range("A" & CStr(ActiveSheet.Rows.Count)).End(xlUp).Row()
    rangeB = ActiveSheet.Range("B" & CStr(ActiveSheet.Rows.Count)).End(xlUp).Row()
    rowC = 2
    rowD = 2
    rowE = 2
    rowF = 2
    test1 = False
    test2 = False
    test2 = False

    'A union B
    On Error GoTo errHandler1
    For i = 2 To rangeA
        If Application.Match(ActiveSheet.Cells(i, 1), ActiveSheet.Range("C:C"), 0) > 0 Then
            If test1 = True Then
                ActiveSheet.Cells(rowC, 3) = ActiveSheet.Cells(i, 1)
                rowC = rowC + 1
            End If
        End If
        test1 = False
    Next i
    For j = 2 To rangeB
        If Application.Match(ActiveSheet.Cells(j, 2), ActiveSheet.Range("C:C"), 0) > 0 Then
            If test1 = True Then
                ActiveSheet.Cells(rowC, 3) = ActiveSheet.Cells(j, 2)
                rowC = rowC + 1
            End If
        End If
        test1 = False
    Next j

    'A intersection B
    For i = 2 To rangeA
        On Error GoTo errHandler2
        If Application.Match(ActiveSheet.Cells(i, 1), ActiveSheet.Range("B:B"), 0) > 0 Then
            On Error GoTo errHandler1
            If Application.Match(ActiveSheet.Cells(i, 1), ActiveSheet.Range("D:D"), 0) > 0 Then
                If test1 = True And test2 = False Then
                    ActiveSheet.Cells(rowD, 4) = ActiveSheet.Cells(i, 1)
                    rowD = rowD + 1
                End If
            End If
        End If
        test1 = False
        test2 = False
    Next i

    'A minus B
    For i = 2 To rangeA
        On Error GoTo errHandler2
        If Application.Match(ActiveSheet.Cells(i, 1), ActiveSheet.Range("B:B"), 0) > 0 Then
            On Error GoTo errHandler1
            If Application.Match(ActiveSheet.Cells(i, 1), ActiveSheet.Range("E:E"), 0) > 0 Then
                If test1 = True And test2 = True Then
                    ActiveSheet.Cells(rowE, 5) = ActiveSheet.Cells(i, 1)
                    rowE = rowE + 1
                End If
            End If
        End If
        test1 = False
        test2 = False
    Next i

    'B minus A
    For i = 2 To rangeB
        On Error GoTo errHandler2
        If Application.Match(ActiveSheet.Cells(i, 2), ActiveSheet.Range("A:A"), 0) > 0 Then
            On Error GoTo errHandler1
            If Application.Match(ActiveSheet.Cells(i, 2), ActiveSheet.Range("F:F"), 0) > 0 Then
                If test1 = True And test2 = True Then
                    ActiveSheet.Cells(rowF, 6) = ActiveSheet.Cells(i, 2)
                    rowF = rowF + 1
                End If
            End If
        End If
        test1 = False
        test2 = False
    Next i


errHandler1:
    test1 = True
    Resume Next

errHandler2:
    test2 = True
    Resume Next
End Sub

2015-07-02 19:39

Вы можете просто использовать формулу ниже, чтобы получить результат

= ЕСЛИ (НИЖНИЙ (A4)= НИЖНИЙ (B4); «»; A4)

2019-10-23 15:28

Я удивлен на нескольких уровнях:
(1) 2020 год… и все еще нет установленных функций в Excel
(2) Ответ, получивший наибольшее количество голосов (с 2018 года), очень непрактичен: в реальном времени наборы данных не поступают аккуратно со вставленными пустыми строками, в которых отсутствует значение, по сравнению с другим набором данных; что является предварительным условием для этого решения.

Наиболее практичным решением (хотя до сих пор неловко, ты слышишь нас, Microsoft???) является работа вокруг с помощью сводной таблицы:

  • Добавьте столбец в набор A, с именем столбца «set_name» и всеми значениями в столбце, установленными на «A» -> поворотный ввод A
  • Добавьте столбец в набор B, с именем столбца «set_name» и всеми значениями в столбце, установленными на «B» -> поворотный ввод B
  • скопировать сводный вход B (без имен столбцов;-)) под сводный вход A, чтобы сформировать объединенный диапазон -> объединенный диапазон
  • создать сводную таблицу из объединенного диапазона с
    — «имена наборов», используемые для формирования столбцов сводной таблицы
    — функция сводной таблицы установлена ​​на «count()»

Результатом является своего рода сводная таблица с горячим кодированием:

  • 1-й столбец: объединенный набор A и B (также известный как ВСЕ возникающие значения)
  • 2-й столбец: 1-значения только для элементов, входящих в набор A
    (предостережение: предполагается, что A содержит только УНИКАЛЬНЫЕ элементы. В противном случае возможны
    значения> 1)
  • 3-й столбец: 1-значения только для элементов, входящих в набор B
    (применяется то же предостережение, что и для набора A)
  • Столбец «Итого»: значения, показывающие «2», существуют в обоих наборах

Результирующую сводную таблицу можно легко отфильтровать по различным наборам и пересечениям с помощью значений в столбцах 2 (он же «набор A»),3 (он же «набор B») и 4 (он же «Набор A И набор B»).

2020-09-28 09:48

У элемента R1 в строке а1 смотрим, в каких столбцах b есть единицы (b1 и b5). Далее в элементе R2 смотрим строки b1 и b5. У b1 единицы в с1, с2 и с4. У b5 единицы в с4, с4, с5. Следовательно, в таблицу R1 o R2 в строку а1 вносим в с1, с2, с4 и с5 единицы. Во вложении таблица с результатом и примерная картинка, какая связь между элементами. Формулу в экселе нужно составить с учетом универсального применения, к примеру, если множества будут размером, к примеру, миллион на миллион

Миниатюры

Композиция множеств
 

Вложения

Тип файла: xlsx Книга2.xlsx (9.7 Кб, 7 просмотров)



0



Оператор пересечения – один из основных операторов в Microsoft Excel, однако знаком он только небольшому количеству пользователей. В данной статье я исправлю эту ситуацию и детально расскажу о том, что это за оператор и в каких ситуациях может использоваться.

Для чего нужен оператор пересечения

Обратите внимание на следующий скриншот. На нем вы видите таблицу со столбцами и строками. Выделен столбец со строкой, и есть ячейка, в которой они пересекаются. Оператор пересечения и нужен для поиска этой ячейки. По умолчанию он выведет как раз значение, которое находится в этом месте.

Пример таблицы для использования оператора пересечения в Microsoft Excel

Стандартное использование оператора пересечения

Для начала давайте разберемся с тем, как просто использовать оператор пересечения и вывести в пустой ячейке то самое искомое значение. Вам понадобится любая таблица, состоящая из нескольких столбцов и строк с заполненными данными. Далее остается выполнить следующие действия:

  1. Выделите пустую ячейку для вывода результата, в ней добавьте знак = и выделите левой кнопкой мыши всю строку.Начало записи формулы с оператором пересечения в Microsoft Excel

  2. После этого поставьте пробел. Этот знак и является оператором пересечения.Добавление знака оператора пересечения в Microsoft Excel

  3. После пробела укажите диапазон столбца, точно так же выделив его левой кнопкой мыши.Выделение столбца для оператора пересечения в Microsoft Excel

  4. Нажмите клавишу Enter, чтобы ознакомиться с результатом. Как видно, оператор узнал, какая ячейка есть как в столбце, так и в строке, отобразив ее значение в клетке.Просмотр результата с использованием оператора пересечения в Microsoft Excel

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Использование оператора пересечения в формулах

Описанная выше формула с применением оператора пересечения хоть и кажется интересной, но в чистом виде практически не используется, поскольку и внешне понятно, какое значение есть в столбце и строке. Чаще этот оператор используют вместе с разными функциями при расчетах. Вы можете сделать строку по примеру =СУММ(A3:E3 C1:C5)+500, чтобы оператором пересечения найти ячейку и добавить к ней еще 500. Это довольно простая и стандартная операция. 

Использование оператора пересечения при суммировании в Microsoft Excel

Примерно то же самое можно сделать и с функцией ЕСЛИ. Для логического значения используется оператор пересечения и срабатывает определенный результат лжи или истины, который вы настраиваете самостоятельно при помощи аргументов функции.

Использование оператора пересечения в логических операциях в Microsoft Excel

Дополнительные сведения про оператор пересечения

В завершение давайте рассмотрим еще несколько интересных моментов работы с оператором, которые могут оказаться полезными при проведении расчетов в электронной таблице. Например, вы можете взять диапазон, состоящий не только из одного столбца и строки, но и из нескольких, последовательно выделив все ячейки примерно так, как это показано на скриншоте.

Выделение нескольких столбцов для оператора пересечения в Microsoft Excel

По умолчанию оператор пересечения не сможет вывести два или более значений, поэтому такое выделение диапазонов используется исключительно с другими функциями. Например, вы можете суммировать все значения, подходящие под пересечение.

Модернизирование формулы с оператором пересечения в Microsoft Excel

Вместе с этим можно найти минимальное значение среди них, применив знакомую всем формулу МИН. Не забывайте только ставить пробел между столбцами и строками, поскольку это и есть знак оператора пересечения.

Определение минимального значения с оператором пересечения в Microsoft Excel

Если вы используете умную таблицу или для каждого столбца со строками задали свои названия, то при выделении с использованием оператора вместо стандартных обозначений ячеек вы можете вводить целые названия диапазонов. Тогда вид формулы будет примерно такой, как это показано на следующем изображении.

Другое отображение названий строк и столбцов в Microsoft Excel

В заключение

На этом все, и базовые принципы работы с оператором пересечения мы рассмотрели. Надеюсь, вы сможете применить эти навыки в будущих расчетах, чтобы упростить процесс работы с электронными таблицами.

Читайте также

  1. Как включить калькулятор в Microsoft Excel.
  2. Как работать с шаблонами в Microsoft Excel.
  3. Как защитить диапазон, лист и книгу в Microsoft Excel.

Это глава из книги Билла Джелена Гуру Excel расширяют горизонты: делайте невозможное с Microsoft Excel.

Всем известно, что формула =СУММ(А2:А10) суммирует диапазон из девяти ячеек с A2 по A10, а =СУММ(А1;А3;А5;А7;А9) – суммирует значение в пяти, указанных ячейках. Тем не менее, очень немногие понимают, что пробел внутри функции СУММ – это, на самом деле, оператор пересечения. Рассмотрим типичную коммерческую таблицу (рис. 1). Для начала присвоим имена строкам и столбцам:

  1. Выделите диапазон ячеек A1:F
  2. Пройдите по меню ФОРМУЛЫ –> Создать из выделенного.
  3. В окне Создание имени из выделенного диапазона выберите в строке выше и в столбце слева. Нажмите Оk.

Рис. 1. Создание имен диапазонов на основе таблицы с заголовками строк и столбцов

Рис. 1. Создание имен диапазонов на основе таблицы с заголовками строк и столбцов

Скачать заметку в формате Word или pdf, примеры в формате Excel

Excel создаст имена для 12 городов. Например, имя Атланта будет присвоено диапазону ячеек В2:F2. Excel также создаст пять имен диапазонов для заголовков в первой строке. Например, имя Себестоимость будет присвоено диапазону ячеек С2:С13 (рис. 2).

Рис. 2. Excel мгновенно создал 17 имен диапазонов

Рис. 2. Excel мгновенно создал 17 имен диапазонов

Теперь вы можете использовать формулу =СУММ(Продажи), чтобы найти общий объем продаж. У вас также появилась возможность использовать операцию пересечения – ˽ (пробел), что позволит найти значение на пересечении двух именованных диапазонов. Например, формула =СУММ(Бостон Себестоимость) позволяет найти значение себестоимости для продаж по городу Бостон (рис. 3).

Рис. 3. Оператор пересечения используется для получения значения, находящегося на пересечении двух именованных диапазонов

Рис. 3. Оператор пересечения используется для получения значения, находящегося на пересечении двух именованных диапазонов

Примечания:

  1. Используйте подсказки при наборе формул (рис. 4). Как только вы наберете букву С, появится меню с доступными именами и функциями. Для перемещения по меню используйте стрелки ↑ (вверх) и ↓ (вниз), а для выбора значения из меню подсказок – клавишу Табуляция (интуитивное использование Enter в этом случае вам не поможет, так как Enter используется для окончания ввода формулы).
  2. С этой же задачей справится формула =СУММ(3:3 C:C), которая также вернет значение на пересечении третьей строки и столбца С. Но согласитесь, использование именованных диапазонов выглядит более профессионально и облегчает понимание формул.
  3. Вы также можете найти себестоимость продаж по Бостону и Далласу одновременно при помощи формулы =СУММ((Бостон;Даллас) Себестоимость). Здесь Бостон и Даллас взяты в скобки, чтобы изменить порядок выполнения операторов. Оператор пересечения — ˽ (пробел) имеет более высокий приоритет, чем оператор объединения — ; (точка с запятой). Подробнее см. Операторы и их приоритет.

Рис. 4. Подсказки при наборе формул

Рис. 4. Подсказки при наборе формул

Неявное пересечение использовалось в Excel уже много лет, но мало кто заботился об этом. Теперь, когда это больше не поведение по умолчанию в Excel 365, возникает много вопросов. Этот учебник призван дать ответы.

У вас возникает ощущение, что вы знаете о своих книгах все, а затем в начале ваших формул из ниоткуда появляется символ @. Что это значит? И как именно это работает? В двух словах, это неявный оператор пересечения, который отключает новое поведение массива по умолчанию для формулы и сообщает Excel, что нужно вернуть одно значение. Для более подробной информации, пожалуйста, продолжайте читать.

Неявное пересечение в Excel означает сокращение нескольких значений до одного значения. Обычно это происходит, когда в формулу передается массив или диапазон, который должен выводить только одно значение в одной ячейке.

Неявное пересечение в Excel 2019 — 2000

В традиционном Excel неявное пересечение является поведением по умолчанию. Он выполняется в фоновом режиме для всех формул. Логика неявного пересечения выглядит следующим образом:

  • Если формула возвращает одно значение, верните это значение (на самом деле неявное пересечение в этом случае ничего не делает).
  • В случае диапазона используйте значение из ячейки в той же строке или столбце, что и формула.
  • В случае массива используйте верхнее левое значение.

Например, при умножении двух столбцов чисел Excel выбирает только одно число из каждого столбца в той же строке, где находится формула, и выводит результат только в одну ячейку (в нашем случае D2):

=В2:В5*С2:С5

Чтобы умножить числа в других ячейках, нужно скопировать формулу вниз.
Неявное пересечение по умолчанию в преддинамическом Excel

Чтобы отключить неявное пересечение, вы должны ввести формулу массива с помощью Ctrl + Shift + Enter (поэтому традиционные формулы массива иногда называют формулы СПП). Это четко указывает Excel на необходимость обработки нескольких входных значений в виде диапазонов или массивов.

В нашем случае выберите ячейки D2:D5, введите приведенную выше формулу и подтвердите ее, нажав одновременно клавиши Ctrl + Shift + Enter. Как только вы это сделаете, формула будет заключена в {фигурные скобки}, указывая на то, что это формула массива. В результате числа в каждой строке перемножаются сразу:
Традиционная формула массива (формула CSE)

Неявное пересечение в Excel 365

Внедрение динамических массивов изменило поведение по умолчанию всех формул в Excel 365. Теперь любая формула, которая потенциально может давать несколько результатов, автоматически переносит их на лист. Это делает неявное пересечение ненужным, и оно больше не запускается по умолчанию. По этой причине Excel 365 иногда называют динамический массив Excel или же ДА Excel.

Здесь все диапазоны умножаются на обычную формулу, которая вводится только в самую верхнюю ячейку (D2):

=В2:В5*С2:С5

В результате получается диапазон разливов, состоящий из 4 ячеек:
Формула динамического массива в Excel 365

Если вы хотите, чтобы формула возвращала только одно значение, вам нужно явно включить неявный перехват. Для этого они ввели специальный оператор, и в следующем разделе вы найдете полную информацию о нем.

Оператор неявного пересечения Excel — символ @

Неявный оператор пересечения был введен в Excel 365, чтобы предотвратить поведение динамического массива по умолчанию. Если вы хотите, чтобы формула возвращала только одно значение, поставьте @ перед именем функции (или перед определенным диапазоном или массивом внутри формулы), и она будет вести себя как обычная формула без массива в додинамических версиях.

Например:

=@B2:B5*@C2:C5
Неявный оператор пересечения в Excel 365

Примечание. Оператор неявного пересечения поддерживается только в подписках Microsoft 365. Если вы попытаетесь добавить знак @ в более старых версиях, он будет автоматически удален после завершения формулы.

Почему @ добавляется к старым формулам?

В Excel 365 вы можете заметить символ @, добавленный к некоторым вашим формулам при открытии книги, созданной в более старой версии. По большей части это делается для того, чтобы заставить формулу вести себя так же, как в исходной версии, в которой она была создана. Другими словами, если формула возвращала одно значение в более старой версии, но возвращала несколько результатов в Excel 365, она будет автоматически иметь префикс @, чтобы деактивировать поведение массива.

Обычно оператор пересечения вставляется перед функцией, которая может возвращать многоячеечные массивы или диапазоны, такие как OFFSET, INDEX или определяемые пользователем функции.

Например, следующая формула, созданная в предварительно динамическом Excel:

=ИНДЕКС(B2:C5,,F1)

примет следующий вид в динамическом массиве Excel:

=@ИНДЕКС(B2:C5,,F1)

Причина в том, что без оператора @ формула вернет все значения из C2:C5, потому что row_num аргумент функции ИНДЕКС опущен. Чтобы обеспечить согласованное поведение во всех версиях, становится очевидным ранее незаметное неявное пересечение. Пожалуйста, сравните результаты:
К старым формулам добавлен неявный оператор пересечения.

В случае, если функция с потенциальным многоячеечным выводом вложена в другую функцию, которая может обрабатывать массивы и выводить один результат (например, СУММ, СЧЁТ, СРЗНАЧ и т. д.), то нет причин запускать неявное пересечение, и формула переносится в динамический Excel как есть без добавления знака @. Например:

=СРЗНАЧ(ИНДЕКС(B2:C5,,F1))
Формула переносится в динамический Excel без добавления знака @.

Могу ли я удалить символ @ из своих формул?

Что вы можете. Excel выполняет преобразование формулы только один раз. Если оператор @ нарушает или негативно меняет поведение ваших формул, вы можете удалить @ вручную, и он больше не появится после сохранения книги.

Каковы последствия удаления оператора неявного пересечения? В зависимости от того, что возвращает часть формулы, следующая за знаком @, возможны три результата:

  • Если возвращается одно значение, изменений не будет.
  • Если массив возвращается, он будет распространяться на соседние ячейки.
  • Если массив возвращается, но пустых ячеек недостаточно для отображения всех значений, возникает ошибка #SPILL.

Зачем использовать оператор @ в Excel 365?

Как уже упоминалось, Excel для Microsoft 365 по умолчанию обрабатывает все формулы как формулы массива, и вам не нужно нажимать Ctrl + Shift + Enter, как вы делали это в предыдущих версиях. Если вы хотите отключить поведение массива, вставьте неявный оператор пересечения.

Пример 1. Избавьтесь от #РАЗЛИВ! ошибка

Очень распространенный сценарий — предотвращение или исправление ошибок #SPILL. Если вам удобно ссылаться на целые столбцы (что вообще не очень хорошая идея, потому что тормозит Excel), но тем не менее такая формула будет нормально работать в преддинамических версиях:

=ВПР(А:А, Г:Д, 2, ЛОЖЬ)

В динамическом Excel это приведет к ошибке #SPILL, поскольку недостаточно места для отображения почти 1,05 миллиона результатов.

Добавление @ перед аргументом lookup_value решает проблему:

=ВПР(@А:А, Г:Д, 2, ЛОЖЬ)
Используйте неявное пересечение, чтобы предотвратить ошибки #SPILL

Когда Excel предвидит, что формула может выйти за пределы рабочего листа, он предложит исправление, и вам будет разумно его принять:
Подсказка о неявном пересечении в Excel

Пример 2. Заставьте формулу работать правильно в старых версиях Excel

Если вы используете подписку на Microsoft 365 и делитесь своими файлами с кем-то, кто использует более старую версию, важно обеспечить согласованное поведение формулы для всех.

Предположим, вы написали эту формулу динамического массива в Excel 365:

=В2:В5*С2:С5

В более старых версиях он будет преобразован в устаревшую формулу массива CSE:

{=B2:B5*C2:C5}

и вернуть диапазон значений в обоих случаях:
Формула динамического массива преобразуется в формулу массива CSE.

Если вы хотите вывести только один результат, добавьте @ перед каждым выражением, а затем скопируйте формулу в необходимое количество ячеек (чтобы сохранить диапазоны без изменений, не забудьте заблокировать их абсолютными ссылками на ячейки):

=@$B$2:$B$5*@$C$2:$C$5

В старых версиях Excel символ @ будет автоматически удален, и формула примет обычный вид:

=$B$2:$B$5*$C$2:$C$5
Формула с оператором @ преобразуется в обычную формулу без массива.

Чего не следует делать, так это смешивать в одной формуле неявное пересечение и вычисление массива! Например, если вы попытаетесь ввести что-то подобное в Excel 365:

=@B2:B5*C2:C5

Вы будете уведомлены, что такая формула не поддерживается в более старых версиях:
Формула не поддерживается в старых версиях Excel.

Если вы отклоните предложенный вариант, смешанная формула будет принята и принесет некоторые результаты (хотя они могут быть не такими, как вы ожидали). Но когда вы открываете эту формулу в предварительно динамическом Excel, функция _xlfn.SINGLE появится вместо неявного оператора пересечения:

=_xlfn.SINGLE(B2:B5)*C2:C5

Когда эта формула оценивается старой версией Excel, #ИМЯ! будет возвращена ошибка.

Неявное пересечение в таблицах Excel

Вообще говоря, поведение неявного пересечения в таблицах соответствует вашей версии Excel.

В Excel 2019 и более ранних версиях вы можете ссылаться на весь столбец, и формула будет разрешаться в одну ячейку в текущей строке.

Например, эта формула успешно умножает числа в Цена а также Кол-во столбцы:

знак равно[Price]*[Qty.]

Несмотря на то, что он относится ко всем столбцам, преддинамический Excel по-прежнему работает с отдельными значениями на уровне строки.
Неявное пересечение в таблице Excel

В Excel 365 этот подход не работает, так как неявное пересечение отключено по умолчанию. Поскольку формула возвращает несколько значений, и Excel не может поместить их все в таблицу, она предложит добавить к именам столбцов префикс с символом @:
Формулы, возвращающие несколько значений, не поддерживаются в таблицах Excel.

Если у вас есть опыт работы со ссылками на таблицы, этот синтаксис должен быть вам знаком — символ @ указывает, что формула будет обрабатывать значения из столбцов. Цена а также Кол-во в том же ряду.

знак равно[@Price]*[@[Qty.]]

И это будет хорошо работать во всех версиях:
Неявный оператор пересечения в ссылках на таблицы

Кончик. Если вы намерены использовать функцию динамического массива для вычисления данных таблицы, обязательно поместите формулу вне таблицы, поскольку динамические массивы внутри таблиц не поддерживаются.

Вот как работает неявное пересечение в Excel. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!

Вас также могут заинтересовать:

На чтение 1 мин Опубликовано 31.05.2015

Этот пример показывает, как получить объединение и пересечение двух диапазонов в Excel. Границы на рисунке ниже представлены только в качестве иллюстрации.

  1. Используйте запятую, чтобы получить объединение двух диапазонов.Объединение и пересечение в ExcelОбъяснение: Функция SUM (СУММ) сводится к

    = SUM(C4:D8) + SUM(D7:E11)
    = СУММ(C4:D8) + СУММ(D7:E11), т.е. 20.

  2. Используйте пробел, чтобы получить пересечение двух диапазонов.Объединение и пересечение в ExcelОбъяснение: Функция SUM (СУММ) сводится к

    = SUM(D7:D8)
    = СУММ(D7:D8), т.е. 2.

Оцените качество статьи. Нам важно ваше мнение:

Как показано на скриншоте ниже, как найти пересечение двух списков в Excel? Другими словами, как найти повторяющиеся значения в двух столбцах? В этой статье представлены два метода, которые помогут вам в этом.

Найти пересечение двух списков по формуле
Найдите пересечение двух списков с Kutools for Excel


Найти пересечение двух списков по формуле

Приведенная ниже формула может помочь вам найти пересечение двух списков в Excel. Пожалуйста, сделайте следующее.

1. Выберите пустой столбец, скопируйте формулу. =IF(ISERROR(MATCH(B2,$C$2:$C$9,0)),»»,B2) в панель формул и нажмите клавишу Enter. Смотрите скриншот:

Внимание: В формуле B2 — это первая ячейка первого списка, $ C $ 2: $ C $ 9 — это диапазон второго списка. Пожалуйста, измените их в зависимости от ваших потребностей.

2. Теперь обнаруживается первое пересечение, выберите его и перетащите маркер заливки вниз, чтобы получить все. Смотрите скриншот:


Найдите пересечение двух списков с Kutools for Excel

Если вы не хотите применять формулу, мы рекомендуем вам Выберите одинаковые и разные ячейки полезности Kutools for Excel чтобы легко найти все пересечения двух списков в Excel.

1. Нажмите Кутулс > Выберите > Выберите одинаковые и разные ячейки

2. в Выберите одинаковые и разные ячейки диалоговое окно, вам необходимо:

2.1 Выберите первый список и второй список без заголовков отдельно в Найдите значения в Согласно информации коробки;

2.2 Выберите Каждый ряд вариант в на основании раздел;

2.3 Выбрать Те же значения в Найти раздел;

2.4 Укажите цвет фона или цвет шрифта в Обработка результатов раздел для выделения перекрестков по мере необходимости;

2.5 Щелкните значок OK кнопка. Смотрите скриншот:

3. Затем появляется диалоговое окно, в котором указывается, сколько ячеек было выбрано, нажмите OK кнопка. И вы можете видеть, что все перекрестки выбраны и выделены в первом списке, как показано на скриншоте ниже:

  Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.


Демонстрация: найти пересечение двух списков с помощью Kutools for Excel


Статьи по теме:

  • Как найти и заменить все пустые ячейки на определенное число или текст в Excel?
  • Как заменить запятые на новые строки (Alt + Enter) в ячейках в Excel?
  • Как создать код макроса для поиска и замены текста в Excel?
  • Как найти и заменить названия вкладок листов в Excel?
  • Как найти значение в ячейке со списком, разделенным запятыми в Excel?

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (0)


Оценок пока нет. Оцените первым!

Понравилась статья? Поделить с друзьями:
  • Вещественный формат в excel
  • Вещественная к в word
  • Вечный производственный календарь в excel
  • Вечные календари в excel
  • Вехи на диаграмме ганта в excel