Спасибо! Это безальтернативный подход? (а я чего-то этот вариант и не рассматривал))))
|
21.09.2023 20:42:49
натолкнул меня на интересную мысль, что я и воплотил в коде) Файл прилагаю, может кому пригодится что?) В итоге, при добавлении массива к коллекции, в этот массив первым (нулевым) значением я поставил сам ключ. Ну а роль ключа в коллекции - это для отсечки уникальных элементов. Вытащить потом ключи стало без проблем). Всем спасибо, но если есть еще мысли, буду очень рад их оценить!
|
|||
|
|
|
|
21.09.2023 19:12:08
Или отказаться от коллекции как элемента словаря вообще?) Использовать просто массив, а ключ коллекции перенести и сделать ключом словаря? Да)?
для информации: схема файла Visio (один Лист) может содержать массу шейпов (фигур) со своими атрибутами, еще есть и вложенные уровни) чтобы провести рецензию файла приходится прибегать к разным вариантам, еще и скорость выполнения задачи имеет значение!)
Изменено: - 21.09.2023 19:16:27
(Добавление сведений)
|
|
|
|
|
|
21.09.2023 18:43:09
, в основной программе эта коллекция является одним из элементов словаря, и когда я работаю с данными созданных словарей для заполнения форм или табличных данных, приходится доставать данные разными путями и выдумками)). Но тут чего-то туплю наверное, никак не пойму, массив значений вижу, а извлечь его нужно по названию фигуры...)). Программа контактирует с Visio...
|
|
|
|
|
|
21.09.2023 18:22:24
Уважаемые форумчане!
В прилагаемом файле представленной таблице есть список фигур и какие-то данные в соответвующих 1-3 столбцах. В редакторе VBE, в Module1, я написал макрос "test1", в котором данные из диапазона собираются по определенным правилам (разделителям) в массив. Затем массив разбирается как бы по строкам таблицы, и формируется коллекция "colShapes" с ключами-названиями фигур!!. Также, в случае обнаружения дубля записи, формируется переменная aMistake, с перечнем дублированных названий фигур. Вопрос заключается в том, каким образом в массив "arrKeysCol" разместить все ключи коллекции и далее, по работе цикла ключей массива, искать уже соответствующие им элементы коллекции? |
|
|
|
|
|
15.09.2023 11:53:57
Уважаемые форумчане, в прилагаемом файле:
Сверху слева таблица со значениями в зависимости от интервала температур и номера Варианта. В ячейке рядом с "Температура:" вручную вписывается значение температуры; В ячейке рядом с "Вариант:" в выпадающем списке выбирается номер Варианта; Под таблицей, с помощью формул я извлек интервалы температур "От" и "До"; В ячейке рядом с "ИСКОМОЕ ЗНАЧЕНИЕ:" выводится результат поиска нужного значения по критериям Температуры и номера Варианта; В ячейках рядом с "Строка:" и "Столбец:" - вспомогательные формулы поиска строки и столбца с нужным значением. Не получается скомпоновать формулу ИСКОМОГО ЗНАЧЕНИЯ из всех вспомогательных формул. Кроме того, здесь представлена скромная таблица всего из 4-х вариантов и 3-х диапазонов температур (а и тех и других значений может быть очень много). Просьба: Помогите с формулой (вероятно с помощью применения массивов можно решить, но я не понимаю как)). Макросами это очень просто делается, но задача - обойтись без них(( |
|
|
|
|
|
26.02.2023 13:46:42
acer8743, спасибо за пояснение и макрос, огромное спасибо!
Я опробовал применение Вашего, кода: всё в 5 раз быстрее закачалось в Visio, однако на Листе "Material_V" в 1-м столбце в ячейке "А2" есть наименование "Units". Оно не отображается в списке импортированной таблицы в Visio. Также, не будут отображаться данные, если, например, изменить 2000 на 2000-1 и т.д. В моем решении выше, которое выполняется подольше, такого дефекта нет, и все данные импортируются отлично. Видимо, проблема кроется в методе импорта внешних данных (т.е. в параметре "connectionIDORString" при добавлении объекта DataRecordsets). В моем примере решения, с помощью макро рекордера я использовал настраиваемый импорт из файла Excel. В Вашем коде dataConnection.ConnectionString содержит запись импорта из "Другого источника данных OLEDB или ODBC", как я понял. Но всё равно еще раз благодарю за полезный отклик!
Изменено: - 26.02.2023 21:10:54
|
|
|
|
|
|
18.02.2023 13:09:34
Уважаемые профессионалы, прошу помощи в решении вопроса импорта таблиц из файла Excel в файл Visio, с помощью VBA!
Прилагаемый файл "Связать_с_Visio.xlsm" содержит процедуру выбора файла Excel (выбираю файл "Тест_Для_Visio.xlsx"), где содержатся 2 таблицы как именованные диапазоны. Производится считывание наименований Листов и диапазонов таблиц в них: эти данные помещаются во вспомогательную таблицу Листа "Spiski" файла "Связать_с_Visio.xlsm". Далее в диалоговом окно выбирается файл Visio ("Рабочий.vsdx"), в который предполагается вставить связь с этими таблицами Excel. С помощью макро рекордера в Visio я записал процесс создания связи с файлом Excel, попытался реализовать код в файле "Связать_с_Visio.xlsm", но, к сожалению, задача не решается. Буду очень признателен в указании на ошибку/ошибки, допущенные мной, а также в помощи решения задачи. Не могу загрузить в тему файл Visio "Рабочий" по правилам форума, но он совершенно пустой, создан и сохранен для задачи на компьютере. Благодарю заранее всех, кто откликнется! |
|
|
|
|
|
15.07.2021 15:37:06
|
|||
|
|
|
|
16.03.2021 20:02:47
Уважаемые профессионалы, прошу ответить на такой вопрос:
В прилагаемом файле, на Листе размещены 4 текстбокса (элементы ActiveX). После ввода Слагаемых 1-3 в соответствующие 3 текстбокса (целые числа), в 4-м появляется их сумма. Вопрос: возможно ли после ввода значения в любой текстбокс, после нажатия на Enter или Tab, обеспечить аналогию применения табуляции (TabOrder), как это делается в UserForm??? Или же это просто невозможно в моем случае? Спасибо заранее за добрые советы и ответы. |
|
|
|
|
|
27.04.2020 22:58:30
Спасибо всем еще раз! Отдельным кодом у меня в основной программе написано, так как в процессе работы к нему часто идет обращение при обновлении данных, а также при загрузке формы. Но главное - это вами предложенное решение: реально я притупился за день работы: в карантине день не нормирован))).
|
|
|
|
|
|
27.04.2020 21:35:09
Уважаемые знатоки VBA!
В моём файле есть Data Table, в которой столбцы 4 и 5 имеют числовой формат с 2-мя десятичными знаками после запятой. Нажатием на кнопку "Показать свободную площадь" загружается форма UserForm1, в которой Листбокс заполняется именами компаний и разностью значений Общих и Задействованных площадей этих компаний. Я попал в тупик: ну никак не могу понять, почему при вычитании из 10,00 значения 9,95 я не могу получить в листбоксе заветное 0,5, а получается абракадабра! объявлял переменные a и b как Double, затем пытался присвоить из разницу при заполнении листбокса, но результат тот же(( Чего-то не так, а понять не могу. Уже и через String делал, и менял запятые на точки, с помощью функции преобразовывал и вычитал: всё равно не получается. Туплю, а где - не пойму... Помогите решить и подскажите, что с форматированием (или ещё с чем) не так? Заранее благодарен! |
|
|
|
|
|
19.09.2019 14:22:25
В 17 столбце всё нормально! Вам надо чтобы в самой таблице текст артикула менялся? Тогда вот так Я бы еще в конце добавил очистку столбца 17 файл удален по просьбе автора темы [МОДЕРАТОР]
Изменено: - 20.09.2019 11:18:58
(Добавление комментария)
|
|||
|
|
|
|
19.09.2019 14:01:32
Изменено: - 20.09.2019 11:19:09
(Добавление файла)
|
|||
|
|
|
|
18.09.2019 16:15:16
Уважаемые специалисты! Данный файл содержит 25 Листов: из них Лист "Объекты" - видимый; остальные 24 Листа - xlSheetVeryHidden. На этих 24 Листах есть таблицы с данными, с разным кол-вом строк; кроме того Листы 2-13 содержат таблицы из 2-х столбцов (нам нужен столбец 2), а Листы 14-25 содержат таблицы из 5-ти столбцов (нам нужен столбец 5): эти нужные столбцы и содержат текст, который надо проверить и (возможно) заменить на другой текст.
На Листе "Объекты", в 1-м столбце таблицы красным шрифтом представлены все встречающиеся в таблицах Листов 2-25, в столбцах 2 и 5, тексты. Во 2-м столбце черным шрифтом указаны названия, на которые надо поменять значения столбца 1, в случае их присутствия в Листах 2-25.
В книге содержится макрос на основе работы циклов For...Next. Но когда уникальных названий не 6 (как в данном примере), а 500-800, когда в таблицах Листов строк не 10-30, а 1500 например; да и Листов может быть чуть больше - то мой макрос будет год решать задачу)))) если вообще не зависнет всё. С массивами не очень разобрался пока, но знаю, что с их помощью данная задача решается очень быстро. Поэтому, прошу помочь в решении вопроса поиска и замены по сценарию этой задачи. Спасибо! На текущий момент макрос протестирован на том же количестве Листов, но в каждом Листе записей от 100 до 250, а проверяемых на совпадение строк с текстом - 1834. Скорость выполнения макроса составила - 18 секунд.
Изменено: - 19.09.2019 12:54:01
(Добавление комментария о проверке существующего в файле макроса)
|
|
|
|
|
|
01.08.2019 22:27:00
, спасибо! Я в Power Query вообще ничего не смыслю)) Однако, просьба в макросе и функции не просто так обращена: я использую выборку данных из другого файла, где необходимо из большой (не сводной) таблицы выдернуть значения. Просто мой пример имеет примитивный вид для решения конкретной задачи.
Изменено: - 01.08.2019 22:30:44
(Добавление комментария)
|
|||
|
|
|