Я ведь написал - год учитывается. Только нужно доработать как будете брать другой год для таблицы где закрашиваете. Сейчас это $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 слитных строк вполне рабочий вариант. Если в ВПР использовать счётесли() & "чёрный" то вполне можно пометить.
Я там в коде чуть лишнего понаписал (хотел это использовать, но не стал) - можно не собирать строку из индексов, а просто считать повторы, и основываясь на этом удалять с 1 или с >1. Поправил в этом файле.
Ну и UDF, два варианта, раз уж написал... Первый массивный на весь диапазон, второй для одной ячейки. Можно использовать оба для обоих вариантов - последний аргумент указывает что выводить.
2002 - это для Мака? Вообще если знаете макросы - то тут проще свою UDF написать и не ломать голову, на древней версии... Но как на Маке с этим в деталях не скажу, но коллекции работают. Но тут проще юзать словарь, с чем на Маке проблема.