Очень нужна Ваша помощь! Мне необходимо автоматизировать перенос разрозненной информации из одного листа книги на другой, максимально насколько это возможно. Грубо говоря, надо из листа 1 приложенного файла получить лист 2. Основная проблема в том, как присвоить каждой строке название продукта и завода (сразу на листе 1 или уже на 2-м листе)? Может быть, есть несложный макрос который будет каждый раз проставлять, например, название продукта до слов "не распределено". Ну или что-нибудь в этом духе. Хоть какие-нибудь привязки ))
Добрый день!
Очень нужна Ваша помощь! Мне необходимо автоматизировать перенос разрозненной информации из одного листа книги на другой, максимально насколько это возможно. Грубо говоря, надо из листа 1 приложенного файла получить лист 2. Основная проблема в том, как присвоить каждой строке название продукта и завода (сразу на листе 1 или уже на 2-м листе)? Может быть, есть несложный макрос который будет каждый раз проставлять, например, название продукта до слов "не распределено". Ну или что-нибудь в этом духе. Хоть какие-нибудь привязки ))Nat
Матраскин, да, приснилось)) Я очень торопилась, когда меняла данные. Спасибо огромное, что единственный ответили!...Правда, в действительности, у меня только завод стабильно начинается как "Завод*"; направлений и продуктов оч много, это я для упрощения одинаково назвала. Поэтому условия типа like "Направление*" не работает. Может, можно видоизменить макрос так, чтобы он копировал каждый раз со строки следующей за заводом и до строки, содержащей "Не распределено"?
Матраскин, да, приснилось)) Я очень торопилась, когда меняла данные. Спасибо огромное, что единственный ответили!...Правда, в действительности, у меня только завод стабильно начинается как "Завод*"; направлений и продуктов оч много, это я для упрощения одинаково назвала. Поэтому условия типа like "Направление*" не работает. Может, можно видоизменить макрос так, чтобы он копировал каждый раз со строки следующей за заводом и до строки, содержащей "Не распределено"?Nat
Nat, можно. И ещё за заводом там в некоторых случаях пустая строка идёт. какие на неё планы? она так и будет 1 прыгать? либо там может быть и 2е В остальном файл выглядит также?
Nat, можно. И ещё за заводом там в некоторых случаях пустая строка идёт. какие на неё планы? она так и будет 1 прыгать? либо там может быть и 2е В остальном файл выглядит также?Матраскин
Матраскин, вы имели в виду пустую строку за продуктом? В оригинальном файле почему-то только после первого продукта нет пустой строки, в остальных есть (это можно и вручную вставлять перед запуском макроса, ничего страшного). В остальном, файл выглядит так...точнее как прикрепленный файл, структура та же.
Матраскин, вы имели в виду пустую строку за продуктом? В оригинальном файле почему-то только после первого продукта нет пустой строки, в остальных есть (это можно и вручную вставлять перед запуском макроса, ничего страшного). В остальном, файл выглядит так...точнее как прикрепленный файл, структура та же.Nat
Матраскин, да, был, не удалила по невнимательности. Перенесла на реальный файл - все работает! Вы гений макросов Спасибо вам огромное! Даже не представляете как выручили!
Матраскин, да, был, не удалила по невнимательности. Перенесла на реальный файл - все работает! Вы гений макросов Спасибо вам огромное! Даже не представляете как выручили!Nat
Матраскин, мне неудобно...тут прислали обычный график, вот только без первых трех пустых столбцов... и я растерялась. "Подредактировала" текст макроса, но неверно. Вероятно, дело в Offsete, я его пока не понимаю. Можете взглянуть, пож-та, где ошибка?
[vba]
Код
Sub m() Dim Zavod As String, Product As String Dim i As Long, j As Long lastUsedRow = Sheets("1").Cells(Sheets("1").Rows.Count, 4).End(xlUp).Row Zavod = Worksheets("1").Cells(6, 1) Product = Worksheets("1").Cells(7, 1) For i = 0 To lastUsedRow While Worksheets("1").Cells(ii + 8, 1) <> "Не распределено" Worksheets("3").Cells(j + 1, 1) = Zavod Worksheets("3").Cells(j + 1, 2) = Product Worksheets("3").Cells(j + 1, 3) = Worksheets("1").Cells(ii + 8, 1) Worksheets("3").Cells(j + 1, 4) = Worksheets("1").Cells(ii + 8, 2) Worksheets("3").Cells(j + 1, 5) = Worksheets("1").Cells(ii + 8, 3) Worksheets("3").Cells(j + 1, 6) = Worksheets("1").Cells(ii + 8, 4) j = j + 1 ii = ii + 1 Wend While Worksheets("1").Cells(ii + 7, 4) <> "vol." ii = ii + 1 If ii > lastUsedRow Then Exit Sub End If Wend
Product = Cells(ii + 7, 4).Offset(-1, 0) MsgBox Product If Worksheets("1").Cells(ii + 7, 4).Offset(-2, 0) Like "Завод*" Then Zavod = Worksheets("1").Cells(ii + 7, 4).Offset(-2, 0) End If i = ii - 1 Next End Sub
[/vba]
Матраскин, мне неудобно...тут прислали обычный график, вот только без первых трех пустых столбцов... и я растерялась. "Подредактировала" текст макроса, но неверно. Вероятно, дело в Offsete, я его пока не понимаю. Можете взглянуть, пож-та, где ошибка?
[vba]
Код
Sub m() Dim Zavod As String, Product As String Dim i As Long, j As Long lastUsedRow = Sheets("1").Cells(Sheets("1").Rows.Count, 4).End(xlUp).Row Zavod = Worksheets("1").Cells(6, 1) Product = Worksheets("1").Cells(7, 1) For i = 0 To lastUsedRow While Worksheets("1").Cells(ii + 8, 1) <> "Не распределено" Worksheets("3").Cells(j + 1, 1) = Zavod Worksheets("3").Cells(j + 1, 2) = Product Worksheets("3").Cells(j + 1, 3) = Worksheets("1").Cells(ii + 8, 1) Worksheets("3").Cells(j + 1, 4) = Worksheets("1").Cells(ii + 8, 2) Worksheets("3").Cells(j + 1, 5) = Worksheets("1").Cells(ii + 8, 3) Worksheets("3").Cells(j + 1, 6) = Worksheets("1").Cells(ii + 8, 4) j = j + 1 ii = ii + 1 Wend While Worksheets("1").Cells(ii + 7, 4) <> "vol." ii = ii + 1 If ii > lastUsedRow Then Exit Sub End If Wend
Product = Cells(ii + 7, 4).Offset(-1, 0) MsgBox Product If Worksheets("1").Cells(ii + 7, 4).Offset(-2, 0) Like "Завод*" Then Zavod = Worksheets("1").Cells(ii + 7, 4).Offset(-2, 0) End If i = ii - 1 Next End Sub
Nat, как же я найду ошибку без данных? если они поменялись как вы сказали то см. файл. Переменная С теперь будет репером так сказать...для наложения моего макроса)) если опять все поедет куда то, например переедет во вторую колонку, то просто поменяйте с=1 на с=2 и больше ничего не надо будет менять. офсет - это смещение относительно ячейки)
Nat, как же я найду ошибку без данных? если они поменялись как вы сказали то см. файл. Переменная С теперь будет репером так сказать...для наложения моего макроса)) если опять все поедет куда то, например переедет во вторую колонку, то просто поменяйте с=1 на с=2 и больше ничего не надо будет менять. офсет - это смещение относительно ячейки)Матраскин