Ігор Гончаренко, здравствуйте!
Да, это именно то, что нужно. Просто прекрасно!
Спасибо Вам огромное!!!
Да, это именно то, что нужно. Просто прекрасно!
Спасибо Вам огромное!!!
|
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 10:31:53
|
|
|
|
|
|
17.01.2022 17:52:42
Jack Famous, благодарю Вас за ссылку!
Изучил, вот что получается, например (может кому пригодится):
В случае нажатия кнопки Отмена макрос перестает выполняться с выводом соответствующего сообщения. Jack Famous,может Вы еще подскажите, как быть в этих случаях - чтобы при отмене также выводилось сообщение, а при нажатии кнопки Ок без ввода текста снова сообщение (другое) о необходимости ввести наименование и возврат на форму ввода??? Пошел путем, как МатросНаЗебре предлагал. Здесь все работает как надо:
Если честно, совсем не понимаю, в чем тут нестыковка.
Изменено: - 17.01.2022 17:57:20
|
|||||||
|
|
|
|
17.01.2022 17:40:30
МатросНаЗебре, в последней версии Вашего кода Вы поменяли местами условия. В таком случае при нажатии на кнопку Отмена макрос да прекращает работу, сообщение при этом выводится.
При нажатии на Ок (неважно - при незаполненной (пустой) или заполненной строке) появляется ошибка "Несоответствие типов". Вот в этом-то вся и проблема и в другим решениях, которые пробовал. Тестировал уже только эту часть в отдельном макросе.
Изменено: - 17.01.2022 17:57:56
|
|
|
|
|
|
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)) независимо от того, ввожу я наименование или нажимаю "Отмена", выдается сообщение и макрос закрывается. Однако в случае ввода наименования все должно корректно работать, и начинаться процесс преобразования. Вот в этом и состоит проблема, может есть возможность ее решить? Так же еще не получается сделать (как я думаю здесь нужен цикл) проверку на то, что пользователь не вводит наименования столбца и далее столбца со значением. Вот, например, здесь
Изменено: - 17.01.2022 11:46:03
|
|||||
|
|
|
|
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!
Попробовал Ваш файл, вроде то, что надо. Единственно, можно ли, чтобы товар также в выпадающем поле надо было вводить? Соответственно если такого товара не будет (ошибка при вводе), выдавалось сообщение, что такого товара в списке нет. А пока пошел разбираться в коде... |
|||
|
|
|
|
14.05.2020 23:22:20
Всем доброго времени суток!
Возникла вот такая вот интересная задача: по проданной позиции (например, ящик) в количестве 35 шт. отразить покупателя по строкам. Принцип, как делается это вручную: отфильтровать товар (ящик), далее еще отфильтровать по Покупателю со значением "пусто", далее (для макроса: по внесенному пользователем значению покупателя (в поле ввода значения) в столбце "Покупатель") вносится его наименование с первой пустой строки для соответствующего товара в каждую последующую пустую до тех пор, пока кол-во остатков со внесенным покупателем не превысит кол-во проданного товара. Здесь однозначно нужен макрос, но вот собственных знаний для его написания не хватает. Может кто сможет помочь. Файл с примером прилагается. |
|
|
|
|
|
02.02.2019 23:03:30
Из знатоков форума так толкового ответа и не дождался.
В итоге пошел на хитрость, что название столбца G сначала удаляется, а затем обратно прописывается. В итоге получилась такая вещь, где работает все так, как надо (для архива, да и может кому на будущее пригодится):
Изменено: - 02.02.2019 23:04:05
|
|||
|
|
|
|
25.01.2019 10:43:04
Ігор Гончаренко, работает почти так, как надо. Только заметил, что если удалить первый месяц из ячейки B1, то при отработки макроса, месяц проставляется не в B1, а снова в ячейку H1. Такое ощущение, что не воспринимаются пустые ячейки, и надо отталкиваться не от ячейки A1, а как бы от какой-то нулевой позиции. Можно как-то исправить, чтобы месяц записывался в B1 сначала, и так далее?
Пока получается так.
Изменено: - 25.01.2019 12:36:45
|
|||
|
|
|
|
24.01.2019 16:18:33
Ігор Гончаренко, спасибо!
Но по сути осталось все без изменений. Может я, конечно, не так написал. У меня в коде и в Вашем месяц проставляется в ячейку H1, а надо в ячейку C1. Потом планирую еще под месяц вставлять макросом значения из листа2 согласно позициям.
Изменено: - 24.01.2019 16:19:18
|
|
|
|
|
|
24.01.2019 15:10:43
Доброго времени суток!
Я не особо знаток макросов, но иногда их использую их на простом уровне. Подскажите, пожалуйста, как можно записать месяц в ячейку B1, если имеется такая простая таблица (см. пример во вложении)? Много времени искал, смог смастерить только, что просматривается вся строка, и уже после нее в последний столбец вставляются данные. А вот как надо, не получается. Подскажите, пожалуйста, что изменить в коде? Пока есть такой код.
|
|||
|
|
|
|
10.05.2018 10:18:17
Добрый день, Sanja!
|
|||||||
|
|
|
|
10.05.2018 02:20:20
Доброго времени суток, товарищи!
Подскажите, пожалуйста, макрос по копированию листа и переименованию его в требуемом формате с проверкой на наличие уже имеющего листа с таким названием. Суть: - имеется лист "оборот_апр.18"; - его необходимо скопировать с новым названием "оборот_май.18", т.е. изменив только месяц и год и предварительно проверив, нет ли уже листа с аналогичным названием. В случае ошибки выдавать сообщение, что такой лист уже есть, и выходить из макроса; Доп условия: - множественное количество листов (ручное их переименование не подходит); - нужна форма для ввода названия месяца в формате МММ.ГГ (например, авг.18). Для примера добавил файл. |
|
|
|
|
|
17.02.2018 20:30:00
Bema, где вы ответили на вопрос? :-)
|
|
|
|
|
|
17.02.2018 20:10:00
Bema, прикрепил файл для примера. Здесь даже больше вопрос, как избавиться от " ".
Изменено: - 17.02.2018 20:11:28
|
|
|
|
|
|
17.02.2018 20:00:42
Bema, уже пробовал, не получается, т.к. появляется ошибка #ССЫЛКА!.
В том то и дело, что после отработки формулы получается "Лист1:Лист3!N5". Вся проблема в " ", если бы их не было, формула СУММ работала бы. |
|
|
|
|
|
22.02.2017 02:30:45
Как таким образом определить входящий остаток самому или почему тогда он не считается? |
|||
|
|
|
|
21.02.2017 23:45:44
Valera2, в таком формате выгружаются данные и не подразумевается их дальнейшее форматирование. Опять же, если периодически будут добавлять данные, этого никто делать не будет (постоянно форматировать и приводить в нужный вид).
Попробую воспользоваться Вашими советами и выводить остатки на отдельном листе, пока не знаю, что получится. В вашем файле нигде не отображается входящий остаток, так и должно быть? А также есть ли возможность отображать повторяющиеся строки в реестре, чтобы избежать случайных задвоений? |
|
|
|
|
|
21.02.2017 17:17:35
Vik_tor, на самом деле даже не понял, как у Вас формула работает. Еще раз посмотрел, и какие-то непонятные цифры в остатках получаются.
Последовательность операций в один день не имеет значение. Хотя вот тут и посетила мысль, что выводить остаток по каждой строчке тоже не совсем верно. Может есть возможность выводить остаток в столбце Остатки за одну дату только напротив одной (последней) из этих дат? То есть так:
|
|||||||||||||||||||||||||||||
|
|
|