Цитата |
---|
написал: невозможно получить ни Criteria1, ни Criteria2 |
Такого "удара в псину" от мелкомягких я не ожидал. Остаётся только убеждать юзеров не пользоваться деревом выбора при фильтрации по датам.
27.06.2023 14:44:17
|
|||
|
27.06.2023 14:26:58
sokol92, ИМХО это какие-то жЫрные костыли. Вроде того, когда тебе нужно скопировать один лист, а тебе предлагают взять целую книгу.
По сути мне нужнен способ определения существования Criteria1 и Criteria2. Если знать какой из них (или оба) существует, то запомнить состояние фильтров и восстановить их дело второе. |
|
|
27.06.2023 14:00:24
irabel, гладко было на бумаге, да забыли про овраги...
Если бы всё было так просто, я бы не задавал вопрос. Суть в том, что Criteria1 и Criteria2 не всегда существуют, поэтому при попытке обратиться к ним (когда их нет) возникает ошибка. Вот примитивный пример, на котором эти функции не работают Функция так же не работает при фильтрации по цвету заливки и по отсутствию заливки. Не всё так тривиально... Тут нужна помощь больших знатоков.
Изменено: |
|
|
23.06.2023 10:34:19
Марина Русалева, некропостер детектед!
|
|
|
23.06.2023 10:25:43
Вошёл в ячейку, отредактировал ссылки -> нажми ТРИ кнопки, вместо одной! З.Ы. Внешний признак формулы массива - она в фигурных скобках, типа не просто =СУММ(А1:С1), а {=СУММ(А1:С1)}
Изменено: |
|||
|
23.06.2023 10:17:29
Почему два артикула в одной строке?
ИМХО проще делать по старинке, макросом. Взять столбец с артикулами в массив и пробегая по нему искать совпадение с данными из ячейки через instr, если совпадение есть, то возвращать значения из соответствующих столбцов с ценой, применимостью и т.д. Всё это закатать в процедуру, которая будет срабатывать при обновлении данных на листе. Это план, если обе книги открыты. Если же вторая (с артикулами) закрыта, то то-же самое, через SQL запрос и пробег по рекордсету.
Изменено: |
|
|
23.06.2023 08:57:08
kristina S, возможно я опять неясно сформулировал вопрос...
Мне надо запоминать состояние фильтров ПРОГРАММНО!!! Не руками, не путём нажатия кнопок на ленте, а программно. Пользователи в лучшем случае фильтр установить могут и то с помощью высших сил, никакие более сложные операции им недоступны. Поэтому и надо делать это программно. Сами данные меняются (таблица полностью удаляется, кроме заголовков, и загружаются новые данные), а вот состояние фильтров хотелось бы сохранять. Причём сами фильтры не всегда одинаковые, поэтому запоминать их "намертво" нет смысла. Пользователь может в любой момент установить другую фильтрацию и надо будет сохранять её. Мне бы только узнать, какой из Criteria (или оба) существует у конкретного фильтра, вот и всё. |
|
|
23.06.2023 08:27:19
Prosvetov, возможно Вы неправильно поняли вопрос.
Мне не надо устанавливать фильтр по моему желанию. Данные фильтрует конечный пользователь РУКАМИ! Мне надо программно определить настройки фильтра, которые он сделал (в том числе и по цвету заливки и по её отсутствию), запомнить эти настройки и, после того, как данные обновятся, восстановить фильтры так, как это сделал пользователь. Пользователям лень после каждого обновления данных заново устанавливать все фильтры, вот и возник вопрос сделать это программно. Но проблема в том, что я не знаю по какому принципу Ёксель использует Criteria1 и Criteria2. В приведённом примере в одном случае применяется один параметр, в другом другой, а иногда оба сразу. Мне надо как-то выяснить, какой из Criteria существует у конкретного фильтра. Вот в чём вопрос. А выставить фильтры по нужным условиям это уже детская задача. Главное выяснить КАКИЕ это условия! |
|
|
22.06.2023 16:22:57
Доброго дня всем!
Помогите разобраться с фильтрами на листе. Есть необходимость запоминать их состояние, чтобы после обновления данных в таблице восстановить фильтрацию обратно. То есть данные периодически меняются, и нужно сделать так, чтобы юзверь не фильтровал данные заново, после обновления. Была мысль собрать по всем столбцам, где Filter.On=True значения Operator, Criteria1 и Criteria2, но тут поджидала засада! Дело в том, что эти свойства не факт, что существуют. То есть Criteria1 или Criteria2 могут просто отсутствовать и при попытке сохранить их значение возникает ошибка. Какой глубокий смысл было делать эти свойства динамически появляющимися я не знаю, но глюк получился знатный. Проблема ещё в том, что я не могу понять, по какому принципу Ёксель решает, какой из Criteria он создаст, первый или второй или оба сразу. Вот что получилось из под макрокодера на разных столбцах одного листа:
Как видно, с одинаковым оператором в одном случае используется только Criteria1, в другом только Criteria2 а в третьем и то и другое. И как это понять? (и простить...) Можно просто сохранять тот параметр, который существует, не разбираясь почему именно он, но как определить, существует ли этот самый Criteria1 или Criteria2. Это главный вопрос. |
|||
|
17.02.2023 14:52:20
Вот я и ищу идею для универсальной функции, чтобы больше не возвращаться к этому вопросу. |
|||
|