Макрос для выборочного переноса данных между листами Excel

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Макрос для выборочного переноса данных между листами Excel

Re: Макрос для выборочного переноса данных между листами Excel

Лекс » 18 апр 2017, 23:42

Добрый день,парни!Необходима Ваша помощь!!!Задача следующая:1.На первом листе таблица :номер магазина,код товара,наименование.2.На втором листе продажи по каждому магазину (магазины вертикально продажи по дням горизонтально)3.На третьем листе остатки товара по каждому магазину.Вопрос:Как прописать макрос чтобы первый лист заполнялся автоматически и уходил на почту каждого отдельного магазина с задачей отработать данный файл.Второй и третий лист формируются из сапа.На первом листе должна получится таблица номер магазина,код товара,наименование товара,дата последний продажи(из второго листа) каждого товара по каждому магазину,остаток данного товара по каждому магазину.Можнт все описал сумбурно,не ругайтесь)))Заранее спасибо!

Re: Макрос для выборочного переноса данных между листами Excel

reseter » 19 авг 2010, 09:11

Здраствуйте!
Так уж сложилось, что я не владею языками (программирования), но хорошо разбираюсь в MS Office.
Прошу помощи у Вас, так как понимаю, что без макросов тут не обойтись.
Ситуация: даны фирмы, ассортимент, их планируемые дни отгрузки. В одной вкладке я ввожу план отгрузок (под каждой фирмой свои даты).
Необходимо: отгрузки каждой фирмы должны распределиться по датам во втором листе.
Т.е. они должны не просто суммироваться по дате, а сложиться в любом порядке под датой.
Файл с исходными данными на первом листе и как это хотелось бы видеть на втором листе - во вложении.

Ручками корректировать оченно громоздко при увеличении ассортимента и количества фирм.
Заранее загадать количество ячеек под фирму или под дату - нельзя, так как смещаются выходные, застолбить ячейки с запасом не получится - кол-во столбцов ограничено 256 штуками, как вы прекрасно знаете.
Жду помощи или подсказок.

Дмит » 21 дек 2004, 23:27

Пиши. Адрес - dimit@pochta.ru

Дмит

terminator » 21 дек 2004, 16:51

О , ЧУДО ! О , МУДРЫЙ ДМИТ ! ТЫ - ГЕНИЙ !
ВСЯ СЛАВА МИСТИЧЕСКИМ КОДАМ , ПОРАЖДАЮШИМ ЭЛЕКТРОННЫЙ МИР !
ВСЯ СЛАВА МОГУЩЕСТВЕННЫМ КИБЕРНЕТИЧЕСКИМ ПОЛУБОГАМ !
ВСЯ СЛАВА ТЕБЕ МУДРЫЙ ДМИТ , И КОДЕРАМ ПОДОБНЫМ ТЕБЕ , ВПРАВЛЯЮЩИМ ЭТИ КОДЫ НАМ ,
НЕСПОСОБНЫМ МЫСЛИТЬ , ТЕРМИНАТОРАМ. :roll:

А если серьёзно , то мне даже немного грустно стало. :cry: То над чем я думал целый месяц ты решил за один день.
Я конечно не кодер, но понимаю , и сам видел , как в СИ или ДЕЛФИ кодеры могут делать такое , что
потом заснуть трудно , потому что мысль "А как это он сделал…" не даёт покоя.
Да , не судьба , вот я и загрустил, не смог я. А так хотелось , прям счас слезу на клаву уроню…
:cry: Дмит если ты не против , я с тобой был бы рад иногда писаться по мылу.
А также всем советую посетить его личную страничку
http://dimit.pochta.ru
Если кому интересно раньше я для этих целей использовал только формулы, без кодов VBA. Но только если инфы не очень много.
Образец можно скачать от сюда -
http://webfile.ru/131354
webfile.ru/131354 в течение 7 дней до 16:33 28.12.2004.
Для вычисления текущей даты необходимо включить итерации.
В Сервис, Параметры , Вычисления, галочку на окошко итерации.

Дмит » 20 дек 2004, 17:48

Всё это иожно решить массой способов. Но смысл один - сохрани информацию (номер строки) с которой в следующий раз начнётся цикл. Как сохранить дело вкуса. Для простоты я советовал бы на общем листе (в какой-либо ячейке). Можно и в реестре, можно выбирать ячейки каждый раз в ручную и т.д и т.п.
Доработанный файл - адрес тот же.

uhm57 » 20 дек 2004, 11:42

Ты немножко непонятно объяснил сначала, я тоже не понял. Проблема, насколько я понимаю теперь, в том, чтобы при многократном запуске разносились только новые записи, а старые оставались на местах. Не знаю специфику задачи, но могу предложить такой метод: ввести еще один столбец на листе Общий и ставить в него единичку, если запись уже была обработана. Соответственно, при запуске макроса, он должен проверять - если единичка стоит, ничего не делать, если не стоит - перекидывать запись на соотв. лист и ставить эту самую единичку.

Еще можно сделать так (хотя это очень неэффективный способ) - каждый раз перед работой макроса стирать все листы, кроме Общего, и заново обрабатывать весь список.

terminator » 19 дек 2004, 22:54

Спасибо за участие.!
Однако . Если я ввёл данные , нажал кнопку OK, данные ввелись корректно. Далее я нажимаю разнести , и всё происходит просто чудестно.! Но что же делать на следующий день, когда вновь требуется ввести новые данные, ПОСЛЕ НАЖАТИЯ КНОПКИ "РАЗНЕСТИ", ДАННЫЕ С ЛИСТА "ОБЩИЙ" ДУБЛИРУЮТСЯ НА ДРУГИЕ ЛИСТЫ ,НЕ ЗАВИСИМО ОТ ТОГО СКОЛЬКО ИХ НА САМОМ ДЕЛЕ. То есть происходит ошибка.! На листе "Общий" для имени "Андрей" , допустим три записи , а на листе"Андрей", через 3 дня будет 6 записей.! Это как раз то о чём я говорил в предыдушем посте.
Посмотри Дмит , ведь если мы вводим данные через форму, после нажатия "OK", они ведь не вносятся каждый раз. Я тебя понимаю, что ты скажешь , что это очень просто - очистил форму и всё. Да в том-то и дело , что с формой всё просто. А как бы вот чтобы после нажатия кнопки "разнести" данные не переносились в "слепую." Т.е. не повторялась одна и та же информация.
Я уж сомневаться начал, понимаешь ли ты меня, может я как-то слишком заумно это объясняю.
Что-то мне начинает кажется , что это неразрешимая задача. Наверное единственное решение это написать код для формы. Пусть она сама разносит. Разнос непосредственно с листа БЕЗ ДУБЛИРОВАНИЯ И ПОВТОРОВ, мне начинает казаться волшебством.
Как напишу код для формы , так сразу выложу для критики.
Спасибо.

Дмит » 19 дек 2004, 00:14

Посмотри http://dimit.pochta.ru/excel/primer.zip

Дмит

terminator » 18 дек 2004, 19:40

Я разместил файл для всеобшего просмотра. Это маленький вырезанный кусок из большой программы. Если кто-то работает над чем либо подобным буду рад общению. Файл для просмотра и скачивания (Эксель) доступен по адресу:
webfile.ru/128304
в течение 7 дней до 19:31 25.12.2004.

terminator » 14 дек 2004, 22:10

Очень рад что не отмахнулись от меня рукой и не забыли сделать пояснение.!
Уважаемый uhm57 и находчивый Дмит ! Спасибо.!
Однако. Проблема остаётся.... Сделать проверку на пустоту листа или определить последную не пустую ячейку и затем вставить туда значение - это я могу.Проверка существования листа с определённым именем , или создание листов строго в с соответствии с именами указанными в каком-либо месте, это я тоже могу. Но я никак не могу сделать КОРРЕКТНЫЙ перенос данных!
Вы всё мне правельно советуете, но может мне стоит уточнить следующее. Каждый день в столбец А вносится цыфра "100", в столбец В левее имя "Дима". И тут необходимо перенести запись на другой лист с именем "Дима".Через час, может быть внесено десять таких записей. Корректно это значить -
1) Перенос осуществляется только на названный Лист (Это я могу)
2) Перенос осуществляется последовательно в следующую не пустую.(Это я могу)
3) Перенос осуществляется только по команде. (Это совсем просто)
4) При переносе, сколько бы раз не повторялась команда(например нажатие на кнопку) данные не должны ещё раз вносится или каким-либо образом смешиваться(Это я тоже могу)
ОДНАКО,! Моя головная боль в том что я не в состоянии объеденить это свё вместе, всегда что-то происходит не до конца или не точно.
Я конечно руки не опускаю , сейчас попробую ещё раз что-то написать...
>> uhm57 . всё работает но делает ПОВТОР.! Ведь ВСЁ зациклено.
:shock: HELP! :shock:

Вернуться к началу