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

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

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

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?

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.

  • Странный остаток на ячейке с проверкой данных при использовании Excel VBA
  • Excel автоматически добавляет дополнительную строку с формулами для введенного количества лет
  • Кнопка добавления / вычитания Excel VBA
  • VBA делает ячейки обязательными на основе предыдущей записи ячейки
  • Код VBA для скрытия или отображения строк на основе значения ячейки
  • Как скопировать только гиперссылку (а не текст) в другую ячейку?
  • Excel vba: копировать строки, если данные соответствуют значениям в столбце на другом листе
  • Как я могу записать переход от 0 до 1 в столбце Excel?
  • Excel исчерпал ресурсы, пытаясь вычислить одну или несколько формул
  • Excel. Создайте текстовый файл, названный по имени ячейки, содержащей другие данные ячейки.
  • Outlook: применить правила к текущему сообщению?
  • Как перенастроить базу данных Excel с 1 длинной строки, на 3 короткие строки и автоматически повторить процесс?
  • Interesting Posts

    Как установить приоритет загрузки на cd?

    Fedora 19 не запускается

    Tar – исключить определенные файлы

    Windows действуют так, как будто они «всегда на высоте»,

    Почему Google называет Thunderbird «менее безопасным»?

    Что такое кнопка безопасности Windows?

    Компьютер загрузится, но монитор не включится до блокировки экрана

    Как открыть страницу в Chrome из командной строки, на новой вкладке или уже существующей вкладке?

    7-Zip не запрашивает у меня пароль для ZIP-файла, который я зашифровал, дважды щелкнув его

    Событие Windows 7 для подключения USB-клавиатуры

    Могу ли я установить UEFI Windows 8 через DVD-диск или USB-порт?

    Как посещение веб-страницы может заразить ваш компьютер?

    Можно ли все сделать в Telnet?

    Создание настраиваемых односимвольных сопоставлений каталогов, таких как ~> $ HOME

    Можно ли установить 32-битные программы в «Program Files» в 64-битных окнах вместо «Program Files (x86)?

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