Ігор Гончаренко, здравствуйте!
Да, это именно то, что нужно. Просто прекрасно!
Спасибо Вам огромное!!!
Да, это именно то, что нужно. Просто прекрасно!
Спасибо Вам огромное!!!

16.06.2022 00:27:05
Ігор Гончаренко, здравствуйте!
Да, это именно то, что нужно. Просто прекрасно! Спасибо Вам огромное!!! ![]() |
|
|
10.06.2022 11:26:14
Ігор Гончаренко, т.е. нет вариантов сделать так, как я описал и без указанных моментов (форматирование, очистка листа)?
|
|
|
10.06.2022 11:13:18
Ігор Гончаренко, ведь по сути все то же и осталось, разве что теперь просто через окно нужно тыкнуть на ячейку. На таблице, скажем из 50 тыс. строк, очень затруднительно листать до нужной ячейки и тыкать в нее.
Притом также остались 2 другие обозначенные проблемы с таким кодом: 2. копирование диапазона происходит с исходным форматированием, в должно быть только в качестве значений; 3. очищаются все данные на листе, кроме 1-й строки с заголовками. Нельзя этот лист очищать, нужно только копирование выбранного диапазона в/с ячейки А2. ![]() |
|
|
10.06.2022 10:35:10
Jack Famous, Добрый день!
Свое предыдущее сообщение подредактировал и постарался пояснить, почему такой вариант реализации не подходит. |
|
|
10.06.2022 10:14:55
Ігор Гончаренко, добрый день!
С первого взгляда можно сказать почти то, что нужно. Только есть очень важные моменты: 1. эти действия должны происходить именно после введения ключа пользователем; 2. копирование диапазона должно быть только в качестве значений (без исходного форматирования); 3. не должны очищаться все остальные данные (ячейки) на листе "Лист1", куда происходит копирование диапазона (в текущей реализации в Вашем коде так и происходит). Это для примера сделана маленькая таблица, но на самом деля она подразумевает десятки тысяч строк и значительно больше столбцов, и это только часть из того, что должно происходить с данными. Т.е. данный действия будут выполняться посередине макроса, притом при переносе диапазона с исходным форматированием портится вся та форма, куда эта запись происходит (да и по сути очищается весь лист с данными, т.к. просто с него все удаляется при копировании диапазона, кроме 1-й строки). Вот из-за этого такой вариант не подходит, к сожалению.
Изменено: |
|
|
10.06.2022 01:11:21
Здравствуйте!
Есть такая задачка, знаний по макросам для решения которой пока не хватает, к сожалению. Поиск на просторах интернета также не дал каких-то вменяемых результатов. Суть задачки в следующем - необходимо, чтобы по введенному пользователем ключу с листа «табл» на лист «Лист1» восстанавливался весь диапазон ячеек для соответствующего ключа. На «Лист1» запись всегда происходит с ячейки A2 (без копирования заголовков, в самой ячейке А2 не важно что, данные перезаписываются). Например, если ввести «Ключ 3», то на «Лист1» должна произойти запись диапазона ячеек А9:C12 с листа «табл» (выделено желтым). Далее, после записи на «Лист1», этот же диапазон должен удалится с листа «табл» со сдвигом ниже расположенных строк наверх соответственно на количество удаленных строк (это же кол-во строк в диапазоне). Набросал файл с примером для макроса, сделал кнопку, также есть наметки скрипта. Пока только получается найти код по столбцу и соответствующую ему ячейку из другого столбца, записать ее. Это все далеко от того, что требуется. Очень надеюсь на помощь знатоков данного форума. Если есть вопросы, готов пояснить.
Изменено: |
|
|
17.01.2022 18:24:11
Дмитрий(The_Prist) Щербаков, сравнение срабатывает при заключении False в кавычки, т.е.
Еще раз большое спасибо всем за отзывчивость и помощь! ![]() Успехов всем! ![]()
Изменено: |
|||
|
17.01.2022 17:52:42
Jack Famous, благодарю Вас за ссылку!
Изучил, вот что получается, например (может кому пригодится):
В случае нажатия кнопки Отмена макрос перестает выполняться с выводом соответствующего сообщения. Jack Famous,может Вы еще подскажите, как быть в этих случаях - чтобы при отмене также выводилось сообщение, а при нажатии кнопки Ок без ввода текста снова сообщение (другое) о необходимости ввести наименование и возврат на форму ввода??? Пошел путем, как МатросНаЗебре предлагал. Здесь все работает как надо:
Если честно, совсем не понимаю, в чем тут нестыковка. ![]()
Изменено: |
|||||||
|
17.01.2022 17:40:30
МатросНаЗебре, в последней версии Вашего кода Вы поменяли местами условия. В таком случае при нажатии на кнопку Отмена макрос да прекращает работу, сообщение при этом выводится.
При нажатии на Ок (неважно - при незаполненной (пустой) или заполненной строке) появляется ошибка "Несоответствие типов". Вот в этом-то вся и проблема и в другим решениях, которые пробовал. Тестировал уже только эту часть в отдельном макросе.
Изменено: |
|
|
17.01.2022 11:42:59
Здравствуйте!
Пробую написать макрос (см. ниже) для преобразования таблицы в нужный вид, но столкнулся с 2 проблемами. Уже 2 дня потратил на поиски решения здесь на форуме и в принципе на просторах интернета. Порядок макроса такой, что: 1. определяются переменные; 2. активизируется диалоговое окно для выбора файла (с нужной таблицей для преобразования) пользователем; 3. далее пользователь должен указать диапазон таблицы, с которым работать; 4. ... указывается ячейка, кол-во столбцов, наименование для каждого столбца и наименование столбца со значением (каждый раз через InputBox); 5. далее идет процесс преобразования диапазона согласно заданным условиям (его уже в коде не указывал). Так вот, при 1-м InputBox для указания диапазона, если пользователь нажимает кнопка "Отмена" макрос прерывается и выдает ошибку, аналогично для 2-го InputBox для выбора ячейки. Для последующих InputBox, т.к. они не объекты, а значения, то просто использую проверку на False с If (эквивалентно нажатию на кнопку "Отмена"). Все работает корректно. Чтобы при нажатии на кнопку "Отмена" в 1-м и 2-м InputBox макрос выдавал сообщение и заканчивал работу попробовал использовать On Error GoTo. Однако все бы ничего, но теперь при последнем InputBox (str2 = Application.InputBox(Prompt:="наименование столбца со значением", Title:="Укажите...", Type:=2)) независимо от того, ввожу я наименование или нажимаю "Отмена", выдается сообщение и макрос закрывается. Однако в случае ввода наименования все должно корректно работать, и начинаться процесс преобразования. Вот в этом и состоит проблема, может есть возможность ее решить? Так же еще не получается сделать (как я думаю здесь нужен цикл) проверку на то, что пользователь не вводит наименования столбца и далее столбца со значением. Вот, например, здесь
Изменено: |
|||||
|
15.05.2020 20:05:45
_Igor_61, позвольте еще вопрос.
Т.к. массив у меня большой и не отсортированный (и записи постоянно добавляются, сортировать каждый раз не вариант), есть ли возможность каким-то образом перебирать значения и определять их сумму, как наиболее подходящую под указанное пользователем значение (так сказать с наименьшей разницей между указанным значением и подобранной суммой)? Или это уже утопия? ))) Пример. Есть значения (их последовательность): 9, 1, 2, 6, 3, 7, 4, 5, 8. Продано 20 шт. Если смотреть массив по указанному порядку, то используются значения 9, 1, 2, 6, 3 (сумма 21). А лучшем сочетанием было бы 9, 8, 3. Вот как-то так, если есть, конечно, такая возможность это сделать. ![]() |
|
|
15.05.2020 12:11:54
В принципе согласен с Вашими доводами. Только вот когда в писке штук 100 уникальных позиций, не очень удобно выбирать из выпадающего списка, но зато исключаются ошибки.
Попробую тогда у себя по Вашему принципу "запилить". Большое Вам спасибо, _Igor_61!!! И отдельная благодарность за оперативность! |
|
|
15.05.2020 10:47:51
Добрый день, _Igor_61!
Попробовал Ваш файл, вроде то, что надо. Единственно, можно ли, чтобы товар также в выпадающем поле надо было вводить? Соответственно если такого товара не будет (ошибка при вводе), выдавалось сообщение, что такого товара в списке нет. А пока пошел разбираться в коде... ![]() |
|||
|
02.02.2019 23:03:30
Из знатоков форума так толкового ответа и не дождался.
![]() В итоге пошел на хитрость, что название столбца G сначала удаляется, а затем обратно прописывается. В итоге получилась такая вещь, где работает все так, как надо (для архива, да и может кому на будущее пригодится):
Изменено: |
|||
|
25.01.2019 10:43:04
Ігор Гончаренко, работает почти так, как надо. Только заметил, что если удалить первый месяц из ячейки B1, то при отработки макроса, месяц проставляется не в B1, а снова в ячейку H1. Такое ощущение, что не воспринимаются пустые ячейки, и надо отталкиваться не от ячейки A1, а как бы от какой-то нулевой позиции. Можно как-то исправить, чтобы месяц записывался в B1 сначала, и так далее?
Пока получается так.
Изменено: |
|||
|
24.01.2019 16:18:33
Ігор Гончаренко, спасибо!
Но по сути осталось все без изменений. Может я, конечно, не так написал. У меня в коде и в Вашем месяц проставляется в ячейку H1, а надо в ячейку C1. Потом планирую еще под месяц вставлять макросом значения из листа2 согласно позициям.
Изменено: |
|
|
10.05.2018 10:18:17
Добрый день, Sanja!
|
|||||||
|
10.05.2018 02:20:20
Доброго времени суток, товарищи!
Подскажите, пожалуйста, макрос по копированию листа и переименованию его в требуемом формате с проверкой на наличие уже имеющего листа с таким названием. Суть: - имеется лист "оборот_апр.18"; - его необходимо скопировать с новым названием "оборот_май.18", т.е. изменив только месяц и год и предварительно проверив, нет ли уже листа с аналогичным названием. В случае ошибки выдавать сообщение, что такой лист уже есть, и выходить из макроса; Доп условия: - множественное количество листов (ручное их переименование не подходит); - нужна форма для ввода названия месяца в формате МММ.ГГ (например, авг.18). Для примера добавил файл. |
|
|
22.02.2017 02:30:45
Как таким образом определить входящий остаток самому или почему тогда он не считается? |
|||
|
21.02.2017 23:45:44
Valera2, в таком формате выгружаются данные и не подразумевается их дальнейшее форматирование. Опять же, если периодически будут добавлять данные, этого никто делать не будет (постоянно форматировать и приводить в нужный вид).
Попробую воспользоваться Вашими советами и выводить остатки на отдельном листе, пока не знаю, что получится. В вашем файле нигде не отображается входящий остаток, так и должно быть? А также есть ли возможность отображать повторяющиеся строки в реестре, чтобы избежать случайных задвоений? |
|
|
21.02.2017 17:17:35
Vik_tor, на самом деле даже не понял, как у Вас формула работает. Еще раз посмотрел, и какие-то непонятные цифры в остатках получаются.
Последовательность операций в один день не имеет значение. Хотя вот тут и посетила мысль, что выводить остаток по каждой строчке тоже не совсем верно. ![]() Может есть возможность выводить остаток в столбце Остатки за одну дату только напротив одной (последней) из этих дат? То есть так:
|
|||||||||||||||||||||||||||||
|