JeyCi, я с Вашей помощью и помощью форума только-только пытаюсь освоить словари, но по крайней мере дальнейшее использование данных, полученных словарем, мне более-менее понятно (в плане необходимости и синтакиса строк кода), а предложение использовать ADO (т.е. как я понял фактически варианта базы данных) для меня слишком сложно и непонятно, а тупо копировать код не хочется
. И к тому же предложеный код, как я писал, почему-то не запускался с кнопки (запускаясь при этом из VBA)
Поиск по части значения
Поиск по части значения
Поиск по части значения
|
20.01.2016 07:34:36
Проверив предложение Андрея, получилось следующее (большая просьба не использовать тяжелые тапки
|
|||
|
|
|
Поиск по части значения
Поиск по части значения
|
19.01.2016 20:13:16
Андрей, честное слово, я понимаю, что это небольшой перебор по наглости, но.. , учитывая мои первые шаги по использованию словаря, не могли ли бы Вы показать как вышеописанное будет выглядеть в коде? Вы пишете о получении уникальных значений. Я так понимаю, что за это отвечают строки:
|
|||
|
|
|
Поиск по части значения
|
19.01.2016 19:17:10
Спасибо за Ваш вариант. Скажите, пожалуйста, а на основании словаря нельзя соорудить подобное? Не подумайте, что критикую Ваш проект, но просто я и словари только-только начинаю осваивать, а Вы еще более новую и непонятную для меня фишку предлагаете ...
P.S. И еще, странно конечно но обе формы (и Ваша и моя старая) почему-то не запускаются с кнопки, хотя команды на это на листе прописаны, при этом из VBA по F5 формы стартуют и работает правильно
Изменено: - 19.01.2016 19:24:15
|
|
|
|
|
Поиск по части значения
Поиск по части значения
Поиск по части значения
|
19.01.2016 17:08:57
Никак пока не получается, в примерах почему-то всегда в качестве диапазона для поиска указывается диапазон на листе, а ведь у меня массив уже сформирован, ведь его надо будет как-то запоминать, правильно? Ведь в работающем варианте фильтр работает и в обратную сторону (я имею ввиду что, если введя несколько букв и получив отфильтрованный список из например 5 позиций, мы уберем последнюю букву, то получим результат более грубого фильтрования)
|
|
|
|
|
Поиск по части значения
Поиск по части значения
Поиск по части значения
|
19.01.2016 14:57:27
Уважаемые профи форума. Подскажите как можно доработать мое творение. Ситуация такая. На листе имеется форма FindPasteForm, предназначенная для поиска/вставки информации. Источником данных для листбокса этой формы является указанный диапазон на скрытом листе. Данные на этот скрытый лист попадают при активации листа Приход, в результате работы простейшего макроса:
Я попытался избавиться от скрытого листа и, соответственно, макроса копирования информации, использовав для этого словарь:
|
|||||
|
|
|
Данные из словаря в Listbox, Поместить данные, рассчитанные с помощью словаря, в Listbox
Данные из словаря в Listbox, Поместить данные, рассчитанные с помощью словаря, в Listbox
Данные из словаря в Listbox, Поместить данные, рассчитанные с помощью словаря, в Listbox
Данные из словаря в Listbox, Поместить данные, рассчитанные с помощью словаря, в Listbox
Данные из словаря в Listbox, Поместить данные, рассчитанные с помощью словаря, в Listbox
|
17.01.2016 14:06:18
|
|||
|
|
|
Данные из словаря в Listbox, Поместить данные, рассчитанные с помощью словаря, в Listbox
|
17.01.2016 13:57:53
, когда я упоминал Вашу помощь в написании моего кода, я имел ввиду ту его часть, которая формирует массив. По поводу оптимальности моего алгоритма - давайте попробуем вынести это за скобки. Сейчас мой код формирует массив и может выгрузить его на лист. Как выгружать этот массив на лист Вы показали ранее. Если нетрудно, покажите как поместить этот массив в listbox, именно поместить и все (по крайней мере я надеюсь
Изменено: - 17.01.2016 13:59:41
|
|
|
|
|
Данные из словаря в Listbox, Поместить данные, рассчитанные с помощью словаря, в Listbox
|
17.01.2016 12:31:35
, возможно мы пока не поняли друг друга. Сейчас данные для listbox на форме правильно формируются на основе данных из 15 столбца листа Приход, представляющие собой уникальные сцепки из соответствующих данных (номера реестра, даты, номера документа и поставщика). Все отбирается верно, я просто хочу избавиться от этапа формирования этих уникальных данных из сцепленных значений и формировать массив с помощью словаря. И это у меня получается - на листе Тест (можете убедиться). У меня не получается просто поместить полученный массив в listbox. А что касается дальнейшего использования данных из listbox, то тут совсем просто: пользователь отмечает необходимые, указывает кол-во и по нажатию кнопки получает нужные реестры (этого механизма сейчас нет в коде, пришлось вырезать из-за ограничений файла по объему, но в реальном файле это все реализовано)
|
|
|
|
|
Данные из словаря в Listbox, Поместить данные, рассчитанные с помощью словаря, в Listbox
|
17.01.2016 12:21:10
, вообще-то мой код основан на Вашей помощи, которую Вы оказали раннее в другой теме. По поводу невычисления - странно, у меня на листе Тест все вычисляется как надо. В ячейке А1 находится название месяца в В1 - год (сделано так по аналогии с формой). Затем отбор по принципу: если номер месяца & год = номеру месяца & год в дате документа, то данные отбираются. Такой отбор (месяц & год) сделан с целью возможности отбора и по варианту месяц & год и только по году. Еще раз повторюсь, сейчас правильно вычисленные данные и в правильной последовательности выгружаются на лист Тест. Вопрос в том как эти вычисленные данные поместить в listbox.
|
|
|
|
|
Данные из словаря в Listbox, Поместить данные, рассчитанные с помощью словаря, в Listbox
|
17.01.2016 10:23:31
|
|||
|
|
|
Данные из словаря в Listbox, Поместить данные, рассчитанные с помощью словаря, в Listbox
|
17.01.2016 07:57:07
Что-то пока не выходит никак, listbox остается пустым.
|
|||
|
|
|
Данные из словаря в Listbox, Поместить данные, рассчитанные с помощью словаря, в Listbox
|
16.01.2016 21:17:37
Уважаемые профи форума. С Вашей помощью я смог немного освоить использование словаря, НО вылез следующий вопрос. Сейчас для формирования данных для listbox, находящегося на UserForm6, используется столбец 15 на листе "Приход". Данные в этот столбец попадают в результате работы макроса (также предложенного на этом уважаемом мною форуме
|
|||
|
|
|
Делим "слипшийся" текст в массиве на части, модернизировать функцию пользователя
Делим "слипшийся" текст в массиве на части, модернизировать функцию пользователя
|
13.01.2016 19:17:24
Мотя, ситуация в реале намного проще. Повторюсь, задача сейчас имеет формульное решение (используются разные разделители и вышеназванные функции), если я решу переделать формульный вариант на VBA, то благодаря помощи форума в том числе и Вашей, надеюсь смогу это сделать. Просто встретив, по ходу решения предыдущих задач функцию Split и восхитившись краткостью кода при ее применении в сравнении с громоздкостью формул, я решил попробовать найти аналог Split в формулах. В ходе поисков натолкнулся на функцию пользователя из Примеров. Функция очень понравилась своей лаконичностью, но для моей задачи она подходила не полностью. Вот и поднял я эту тему, предполагая, модернизация это реальное дело для профи. Я писал еще в самом первом посте о том, что если модернизация нереальна или очень затруднена, то ничего страшного, просто останется все как есть. Интересовала именно возможность модернизации функции с предполагаемым использованием ее как я описал в посте №11
|
|
|
|
|
Делим "слипшийся" текст в массиве на части, модернизировать функцию пользователя
Делим "слипшийся" текст в массиве на части, модернизировать функцию пользователя
Делим "слипшийся" текст в массиве на части, модернизировать функцию пользователя
|
13.01.2016 17:32:26
Результат, в прилагаемом в посте №5 файле, хотелось бы следующий. Выделяем диапазон, скажем D1:D3, вставляем в него формулу массива, использующую модернизированную функцию и в 2 из 3 ячеек получаем ответ январь (2 из 3, т.к. условие выполняется в 2 из 3 ячейках указанного диапазона А1:А3.
Изменено: - 13.01.2016 19:05:43
|
|||
|
|
|
Делим "слипшийся" текст в массиве на части, модернизировать функцию пользователя
|
13.01.2016 17:11:13
Уважаемые форумчане, не могли ли бы Вы использовать для проверки мой файл из поста №5. Там ситуация максимально приближенная к оригинальной задаче, сразу и видно будет получилось или нет. Повторюсь, сейчас решение стандартными формулами имеется, вариант с "чистым" VBA смогу сваять и сам, благо помощь на форуме уже оказана, хотелось бы использовать именно модернизированную функцию с возможностью указания диапазона.
|
|
|
|
|
Делим "слипшийся" текст в массиве на части, модернизировать функцию пользователя
|
13.01.2016 14:15:40
Что касается названия, то может быть "Делим слипшийся текст в массиве на части"? А по-поводу необходимости, изложу лично свою точку зрения. При работе приходится сцеплять данные в ячейках для отбора уникальных (например имеется 100 строк поставки (дата, номер поставки, поставщик и пр) от одного поставщика и 250 строк от второго. В отчет разумеется должны попасть только 2 строки с данными по поставкам. Сцепляем вышеуказанные данные, сравниваем их на уникальность и, готово). Но полученные уникальные склеенные строки необходимо расцепить. Можно использовать различные разделители и функции ЛЕВСИМВ, ПСТР, ПРАВСИМВ, сталкиваясь с большой длиной формулы и необходимостью использовать символы-разделители, заведомо не встречающиеся в данных пользователя (при этом можно и ошибиться, вдруг поставщик использует в номере документа знак тильды). А можно было бы, при успешной модернизации функции пользователя, использовать 1 символ-разделитель и гораздо более короткую и понятную формулу типа "если 3 порядковый номер вложения равен чему-то, то ...". Разумеется, вышеописанную задачу можно решить целиком на VBA, но ведь и это не панацея, в любом случае для пользователя код много сложнее указания нужного диапазона и др. необходимых данных. Да и структура файла может изменится, добавит/удалит пользователь несколько строк/столбцов (по незнанию) и код сработает некорректно или вообще не сработает. Поэтому по моему личному мнению, использование МОДЕРНИЗИРОВАННОЙ (при реальности этого) функции поможет в таких или похожих случаях.
|
|
|
|
|