Крис хочет подсчитать ячейки, содержащие текстовое значение A или текстовое значение B, в любом месте текста ячейки. Если в ячейке есть и A, и B, она хочет посчитать их, но только один раз. Например, у Криса есть три ячейки, содержащие «семя яблока», «яблоню» и «семечко персика», и она хочет знать количество ячеек, содержащих «яблоко» или «семя». (Правильный ответ, который должен быть возвращен — 3.)

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

=COUNTIF(A1:A9,"apple")+COUNTIF(A1:A9,"seed")

-COUNTIF(A1:A9,"seedapple")-COUNTIF(A1:A9,"appleseed")

Формула считает все ячейки, содержащие «яблоко» или «семя»

а затем вычитает все ячейки, содержащие «семя», за которым следует «яблоко»

(оба слова находятся в ячейке) или «яблоко», за которым следует «семя» (те же слова в обратном порядке).

Другое решение, это немного короче, основано на функциях COUNTA и FIND, как показано здесь:

=COUNTA(A1:A9)-SUMPRODUCT(--(ISERROR(FIND("apple",A1:A9)))

* --ISERROR(FIND("seed",A1:A9)))

Формула считает ячейки, содержащие значения, а затем вычитает все ячейки, которые не содержат ни «яблоко», ни «семя».

Вы также можете, если хотите, использовать одну из функций базы данных Excel.

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

apple seed

Критерии указывают, что вы хотите сопоставить все ячейки, содержащие «яблоко» или «семя» внутри ячейки. При такой настройке (я предполагаю, что вы поместили таблицу критериев в D1: D3) вы можете использовать следующую формулу:

=DCOUNTA(A1:A9,1,D1:D3)

Конечно, вы также можете использовать формулу массива (вводимую нажатием Ctrl + Shift + Enter), чтобы получить ответ. Ниже приводится одна из таких формул, которая, опять же, основана на проверяемых фразах на предмет наличия в A1: A9:

=SUM(--((ISNUMBER(FIND("apple",A1:A9))+ISNUMBER(FIND("seed",A1:A9)))>0))

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

Function FindTwoStrings(rng As Range, s1 As String, _   s2 As String) As Integer     Application.Volatile     If TypeName(rng) <> "Range" Then Exit Function     Dim cell As Range     For Each cell In rng.Cells         If (InStr(1, UCase(cell.Value), UCase(s1), _           vbTextCompare) > 0) Or (InStr(1, UCase(cell.Value), _           UCase(s2), vbTextCompare) > 0) Then _           FindTwoStrings = FindTwoStrings + 1     Next cell End Function

Чтобы использовать функцию, вы можете использовать эту формулу в ячейке:

=FindTwoStrings(A1:A9,"apple","seed")

_Примечание: _

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

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (9326) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Checking_for_Either_of_Two_Text_Values ​​[Проверка любого из двух текстовых значений].