Я думаю перед применением формулы Павла таблицу нужно сортировать по увеличению Продаж, иначе просто получите первое что превышает критерий при совпадении остальных условий.
Я ведь написал - год учитывается. Только нужно доработать как будете брать другой год для таблицы где закрашиваете. Сейчас это $H$3 И закрасит всё если даты 10.10.2023 03.03.2026
- на копии столбца инструментом "удалить дубликаты", далее формулы как в примере выше. Или PQ кто-то напишет. Если прямо по месту нужно из одного получить другое - писать макрос.
UDF можно написать, а проще макрос для выделенных ячеек - сплит по двоеточию, обработка, джойн назад
Код
Sub tt()
Dim c As Range, a
For Each c In Selection.Cells
If InStr(c, ":") Then
a = Split(c, ":")
If UBound(a) = 3 Then
a(3) = --a(3)
c.Value = Join(a, ":")
End If
End If
Next
End Sub
Если это число использовать в ИНДЕКС() - получите что закажете из этой строки - например то же значение "да" что и проверяете в данном случае, что и так понятно. Файл выше приложил.
Формула ищет по всему массиву совпадение проверки логических условий. В старых версиях ввод завершить одновременным нажатием Ctrl+Shift+Enter (CSE) Например для этого свет не находит, потому что там только тепло имеет "да":
Добрый день. ВПР тут не подойдёт. Но можно например массивно применить
Код
=ПОИСКПОЗ(1;(Лист1!F:F=A2)*(Лист1!J:J="да");0)
Там где числа - там да за свет, можно доработать чтоб так и писало. Для других данных сменить J:J на нужное. P.S. Но конечно если не курите - измените диапазоны на ограниченные, а не на весть миллион строк. Потому что если курите - можно выйти покурить ))
Для облегчения с этими минимальными (для МИН(формула, константа)) 1/2/3 - я бы использовал допсписок, можно даже на все варианты город+магазин прописать минимальное значение и его подставлять в МИН() используя ВПР(0, будет проще менять если что.
Я когда писал про словарь предполагал так - в коллекцию заносим что-то с ключами, и тут же это что-то кладём как ключ в словарь, а ключ коллекции как итем. Тогда при запросе ключа для этого чего-то получаем его не из коллекции, а из словаря. Только если эти значения будут дублироваться (а могут судя по логике процесса) - то и ключей/итемов будет несколько, это может обеспечить словарь создавая итем как массив, коллекцию или строку с разделителем.
Делали тут давно UDF (есть в копилке) - добавить чуть ручного труда и счётесли() - и задача решена. Но теперь есть объединить() для этой задачи. Ещё есть сводные, PQ и макросы как процедура. Вам какой способ больше по душе? P.S. сделал руки+счётесли+UDF
Function kirtxt(s As String)
Dim v
Const PTRN = "[А-ЯЁ]{1,10}"
With CreateObject("vbscript.regexp")
.Pattern = PTRN
.Global = True
.IgnoreCase = True
Set v = .Execute(s)
End With
kirtxt = v(0).Value
End Function
для кириллицы, от начала кириллицы, 10 символов или до символа не в списке [А-ЯЁ]
Если нужно удалить - только макрос. Ну или пометить эти строки формулой, затем удалить вручную, на 5 слитных строк вполне рабочий вариант. Если в ВПР использовать счётесли() & "чёрный" то вполне можно пометить.