Формула Excel для сравнения одного значения в одной ячейке с несколькими значениями в другой ячейке

У меня есть значение в столбце A, которое я хочу сравнить с несколькими значениями в столбце B, и в зависимости от этого значения поставьте ответ в столбец C.

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

  • Excel SUMIFS на основе двух критериев
  • Большая функция Excel с дубликатами
  • Как определить, какие значения в заданном наборе ячеек будут содержать числовой диапазон
  • Использование функции Excel Linest без диапазонов
  • SUMIF с несколькими критериями соответствия в Excel
  • Как скрыть результаты формулы до тех пор, пока не будут выполнены условия
  • Column A Column B Column C 12 0,12,13,14 Yes, Yes, No, No 101 101,102,103,104 Yes, No, No, No 

    Как это сделать в Excel?

  • Нужно объединить строки в excel, учитывая три идентификатора без ущерба исходным данным
  • Можно ли разбить таблицу на несколько файлов на основе столбца в Excel 2007?
  • Как настроить Excel для импорта всех столбцов CSV-файлов в виде текста?
  • Сравнение таблиц Excel
  • Как предотвратить печать ячеек в Excel
  • Время слияния Excel
  • 3 Solutions collect form web for “Формула Excel для сравнения одного значения в одной ячейке с несколькими значениями в другой ячейке”

    Это делает именно то, что вы хотите.

     Option Explicit Sub DoTheThing() Dim row As Integer row = 1 ' WHAT IS THE STARTING ROW Do While (Range("A" & row).Value <> "") Dim vals() As String vals = Split(Range("B" & row).Value, ",") Dim lookUpValue As String lookUpValue = Range("A" & row).Value Dim result As String result = "" Dim i As Integer For i = 0 To UBound(vals) If CSng(lookUpValue) >= CSng(vals(i)) Then result = result & "Yes, " Else result = result & "No, " End If Next i result = Trim(result) result = Left(result, Len(result) - 1) Range("C" & row).Value = result row = row + 1 Loop End Sub 

    Мой рабочий лист выглядел так:

    Введите описание изображения здесь

    И после того, как я запустил VBa

    Введите описание изображения здесь

    Excel сохранил форматирование столбцов как number . Он должен оставаться в виде Text !

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

      ABCDEFGHIJKLMN 1 12 0,12,13,14 2 5 8 0 12 13 14 Yes Yes No No Yes, Yes, No, No 2 101 101,102,103,104 4 8 12 101 102 103 104 Yes No No No Yes, No, No, No 

    Это выражения для C1-N1:

     C1 =FIND(",",B1) D1 =FIND(",",B1,C1+1) E1 =FIND(",",B1,D1+1) F1 =LEFT(B1,C1-1)+0 G1 =MID(B1,C1+1,D1-C1-1)+0 H1 =MID(B1,D1+1,E1-D1-1)+0 I1 =RIGHT(B1,LEN(B1)-E1)+0 J1 =IF(F1<=$A1,"Yes","No") K1, L1, M1 (copy from J1) N1 =J1&", "&K1&", "&L1&", "&M1 

    В случае, если это не очевидно, «+0» – это удобный способ принудительно ввести текстовое значение в число, так что сравнения в I, J, K и L выполняются как числовые сравнения, а не как текст.

    Для C2-N2, скопируйте с C1 на N1.

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

     F =LEFT(B1,FIND(",",B1)-1)+0 G =MID(B1,FIND(",",B1)+1,FIND(",",B1,FIND(",",B1)+1)-FIND(",",B1)-1)+0 H =MID(B1,FIND(",",B1,FIND(",",B1)+1)+1,FIND(",",B1,FIND(",",B1,FIND(",",B1)+1)+1)-FIND(",",B1,FIND(",",B1)+1)-1)+0 I =RIGHT(B1,LEN(B1)-FIND(",",B1,FIND(",",B1,FIND(",",B1)+1)+1))+0 

    Это довольно отвратительно, потому что использование E использует D, в котором используется C, и они используются несколько раз G, H и I. Ввод всех промежуточных результатов в скрытые столбцы позволяет сэкономить много дублированных выражений.

    Все становится хуже, если вы хотите выйти за пределы четырех разделенных запятыми чисел в столбце B, но способ добавления столбцов должен быть довольно очевиден.

    Разрешить B иметь переменное число разделенных запятыми чисел не так очевидно. Хитрость заключается в том, чтобы добавить некоторые инструкции IF, тестируя условия ошибок. Это поднимает один последний момент, что это не включает проверку ошибок, отличную от встроенной в Excel. Прочная таблица должна включать, по крайней мере, некоторую проверку ошибок.

    Для этого я бы использовал надстройку Power Query. Он имеет команды Split и Combine, которые могут преобразовывать разделительный текст, например 0,12,13,14, в список и обратно.

    Я создал прототип, который вы можете просмотреть или загрузить – его «Power Query demo» – сравнить одно значение в одной ячейке с несколькими значениями в другом cell.xlsx »в моем One Drive:

    https://onedrive.live.com/redir?resid=4FA287BBC10EC562%21398

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

    Для этого требуется несколько шагов запроса, и для некоторых шагов сгенерированный код необходимо отредактировать. Но для 90% шагов вы просто щелкаете в пользовательском интерфейсе Power Query.

    Давайте будем гением компьютера.