Проверка любого из двух текстовых значений (Microsoft Excel)
Крис хочет подсчитать ячейки, содержащие текстовое значение 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 [Проверка любого из двух текстовых значений]
.