Задача состоит в том чтобы сообразить отчетик в нужном формате. Данные для отчетика могут браться из учета поступлений товара и учета накладных.
Я могу и ошибаться и возможно есть и другие варианты решения, но мне кажется что один из вариантов это выделение фрагмента с исходными данными и формирование отчета макросом. Что подскажите по этой теме ?
В примере все столбцы которые должны взаимодействовать пометил одинаковыми цветами. (один двойной столбец это когда ожидается исправленная накладная. когда расходятся фактический вес товара и указанный в накладной. в отчете должна фигурировать цифра фактической приемки товара.)
Спасибо.
Здравствуйте.
Задача состоит в том чтобы сообразить отчетик в нужном формате. Данные для отчетика могут браться из учета поступлений товара и учета накладных.
Я могу и ошибаться и возможно есть и другие варианты решения, но мне кажется что один из вариантов это выделение фрагмента с исходными данными и формирование отчета макросом. Что подскажите по этой теме ?
В примере все столбцы которые должны взаимодействовать пометил одинаковыми цветами. (один двойной столбец это когда ожидается исправленная накладная. когда расходятся фактический вес товара и указанный в накладной. в отчете должна фигурировать цифра фактической приемки товара.)
Думаю с таким расположением данных макрос будет не просто написать. Если упорядочить дополнительные столбцы, то можно попробовать сводной таблицей.
Здравствуйте.
Цитата
формирование отчета макросом.
Думаю с таким расположением данных макрос будет не просто написать. Если упорядочить дополнительные столбцы, то можно попробовать сводной таблицей.gling
gling, Спасибо за предложение. Такой вариант почти ничего не дает. хотя если других вариантов нет то наверно это проще чем руками делать. но из сводной прийдется всеравно желаемую таблицу руками делать.
gling, Спасибо за предложение. Такой вариант почти ничего не дает. хотя если других вариантов нет то наверно это проще чем руками делать. но из сводной прийдется всеравно желаемую таблицу руками делать.koyaanisqatsi
sboy, Я руками все вношу. сначала ввожу цену из прайса и указываю сколько товара заказал по этой цене. Когда приходит товар и накладная ввожу цифры из накладной сколько пришло и какая цена в накладной. Таким образом я сразу понимаю не прислали ли нам меньше чем заказывал и верна ли цена. Если при перевесе товара есть расхождение с накладной ввожу цифру фактически сколько пришло товара. собственно все это есть в листе "исходные данные" Примерно 5 фирм от кого получаем соответственно около пяти таких исходных данных два раза в неделю вводятся в ручную. ну от трех до пяти на самом деле. Такие дела. На самом деле наверняка как-то можно оптимизировать чтобы итоговый результат делался автоматом или полуавтоматом. Но я не знаю каким образом надо исходные данные формировать чтобы было удобно делать из них финальные. Надо же чтобы еще и удобно было следить за накладными и приходом товара. Пока только это можно сказать удобно.
sboy, Я руками все вношу. сначала ввожу цену из прайса и указываю сколько товара заказал по этой цене. Когда приходит товар и накладная ввожу цифры из накладной сколько пришло и какая цена в накладной. Таким образом я сразу понимаю не прислали ли нам меньше чем заказывал и верна ли цена. Если при перевесе товара есть расхождение с накладной ввожу цифру фактически сколько пришло товара. собственно все это есть в листе "исходные данные" Примерно 5 фирм от кого получаем соответственно около пяти таких исходных данных два раза в неделю вводятся в ручную. ну от трех до пяти на самом деле. Такие дела. На самом деле наверняка как-то можно оптимизировать чтобы итоговый результат делался автоматом или полуавтоматом. Но я не знаю каким образом надо исходные данные формировать чтобы было удобно делать из них финальные. Надо же чтобы еще и удобно было следить за накладными и приходом товара. Пока только это можно сказать удобно.koyaanisqatsi
я не знаю каким образом надо исходные данные формировать чтобы было удобно делать из них финальные
Общий принцип таков чтоб структура строк в таблице была по возможности однотипной. В Вашем случае в строке должны быть все данные присущие одной позиции продукта. Дата заказа Поставщик Продукт Количество Цена Дата поставки Накладная № Количество в поставке цена единицы продукта НДС сумма оплата ну и тд... Тогда можно будет пользоваться автофильтром для выборок данных и по дате и по поставщику и по продукту, и по оплате. Ну и простые макросы делать для автоматизации создания различного рода отчётов." По Вашему листу с исходными данными как минимум несколько предложений есть: 1. столбец с датами. Каждая строка в вашем исходном листе должна быть помечена датой для этого используем например столбец "В" (это можно макросом "вставить новую строку с датой в столбце "B") 2. НДС. Параметр НДС нужно вносить в каждую строку полученного продукта например столбец "I" (тут выбор из выпадающего списка подойдёт) 3. Желательно еще ввести столбец где указан поставщик Например "С" (тут выпадающим списком удобно будет)
я не знаю каким образом надо исходные данные формировать чтобы было удобно делать из них финальные
Общий принцип таков чтоб структура строк в таблице была по возможности однотипной. В Вашем случае в строке должны быть все данные присущие одной позиции продукта. Дата заказа Поставщик Продукт Количество Цена Дата поставки Накладная № Количество в поставке цена единицы продукта НДС сумма оплата ну и тд... Тогда можно будет пользоваться автофильтром для выборок данных и по дате и по поставщику и по продукту, и по оплате. Ну и простые макросы делать для автоматизации создания различного рода отчётов." По Вашему листу с исходными данными как минимум несколько предложений есть: 1. столбец с датами. Каждая строка в вашем исходном листе должна быть помечена датой для этого используем например столбец "В" (это можно макросом "вставить новую строку с датой в столбце "B") 2. НДС. Параметр НДС нужно вносить в каждую строку полученного продукта например столбец "I" (тут выбор из выпадающего списка подойдёт) 3. Желательно еще ввести столбец где указан поставщик Например "С" (тут выпадающим списком удобно будет)al-Ex
pechkin, Похоже что то что нужно. Спасибо огромное буду разбираться. Скорее всего будет работать как и хотелось. Если все работает как надо то спасет от бестолковой рутинной работы переставления цифр из одной ячейки в другую )))) PS: Нашел одну штуку. В отчете важно финальная чистая накладная. Это значит что ждем исправленную накладную сколько пришло на склад. Добавлю тогда столбец который будет в себя вбирать либо что пришло на склад по факту либо аутентичные данные из накладной. Тогда ваш отчет наверняка будет работать как надо. А так выглядит прям как надо.
pechkin, Похоже что то что нужно. Спасибо огромное буду разбираться. Скорее всего будет работать как и хотелось. Если все работает как надо то спасет от бестолковой рутинной работы переставления цифр из одной ячейки в другую )))) PS: Нашел одну штуку. В отчете важно финальная чистая накладная. Это значит что ждем исправленную накладную сколько пришло на склад. Добавлю тогда столбец который будет в себя вбирать либо что пришло на склад по факту либо аутентичные данные из накладной. Тогда ваш отчет наверняка будет работать как надо. А так выглядит прям как надо.koyaanisqatsi
Сообщение отредактировал koyaanisqatsi - Суббота, 04.06.2016, 20:50
pechkin, Здравствуйте. Подскажите пожалуйста какой ключ надо поменять чтобы сместить на одну колонку вправо диапазон просматриваемых исходных данных.
вставил столбец "Пришло на склад по факту"
Сначала искал в коде где указан этот ключ, но не нашел. Потом подумал что можно через двуссыл написать копию листа под ваш макрос с выбором нужной страницы но тоже не пошло не нашел в инете информации как это делается. (Хотел выбирать лист через выпадающий список.) Пока что в ступоре...
[vba]
Код
Sub ОТЧЕТИК() Dim iLastRow As Long Dim x As Integer iLastRow = Cells(Rows.Count, 3).End(xlUp).Row
Range("A2").Value = Range("B1").Value Rows(1).ClearContents Range(Cells(2, 9), Cells(iLastRow, 9)).FormulaLocal = "=D2*E2" For i = 2 To iLastRow Cells(i, 7) = Round(Cells(i, 9) / 1.1, 2) Next Range(Cells(2, 8), Cells(iLastRow, 8)).FormulaLocal = "=ОКРУГЛ(I2-G2;2)"
For i = 2 To iLastRow Cells(i, 7) = Round(Cells(i, 9) / 1.18, 2) If Cells(i, 3) = "НДС 10%" Then Cells(i, 3).Font.Bold = True Cells(iLastRow + 1, 10) = WorksheetFunction.Sum(Range(Cells(2, 9), Cells(iLastRow, 9))) Cells(iLastRow + 1, 11) = WorksheetFunction.Sum(Range(Cells(2, 8), Cells(iLastRow, 8))) Exit Sub End If Next
End Sub
Sub ОТЧЕТИК3() Dim iLastRow As Long Dim z As Integer Sheets("Лист1").Cells.ClearContents Sheets("Лист1").Cells.Font.Bold = False Sheets("Лист1").Cells(1, 2).Resize(41, 6).Value = Selection.Resize(41, 6).Value Sheets("Лист1").Select Range("D:D,F:F").Delete iLastRow = Cells(Rows.Count, 3).End(xlUp).Row
For i = 1 To iLastRow
If Cells(i, 4) = "" And Cells(i, 3) <> "НДС 10%" Then If i = z + 1 Then Call ОТЧЕТИК Exit Sub
End If Rows(i).Delete i = i - 1 End If iLastRow = Cells(Rows.Count, 3).End(xlUp).Row z = iLastRow
Next
End Sub
[/vba]
PS: Спасибо разобрался. Надо было удалить ненужные столбцы и добавить 1 в строке : [vba]
pechkin, Здравствуйте. Подскажите пожалуйста какой ключ надо поменять чтобы сместить на одну колонку вправо диапазон просматриваемых исходных данных.
вставил столбец "Пришло на склад по факту"
Сначала искал в коде где указан этот ключ, но не нашел. Потом подумал что можно через двуссыл написать копию листа под ваш макрос с выбором нужной страницы но тоже не пошло не нашел в инете информации как это делается. (Хотел выбирать лист через выпадающий список.) Пока что в ступоре...
[vba]
Код
Sub ОТЧЕТИК() Dim iLastRow As Long Dim x As Integer iLastRow = Cells(Rows.Count, 3).End(xlUp).Row
Range("A2").Value = Range("B1").Value Rows(1).ClearContents Range(Cells(2, 9), Cells(iLastRow, 9)).FormulaLocal = "=D2*E2" For i = 2 To iLastRow Cells(i, 7) = Round(Cells(i, 9) / 1.1, 2) Next Range(Cells(2, 8), Cells(iLastRow, 8)).FormulaLocal = "=ОКРУГЛ(I2-G2;2)"
For i = 2 To iLastRow Cells(i, 7) = Round(Cells(i, 9) / 1.18, 2) If Cells(i, 3) = "НДС 10%" Then Cells(i, 3).Font.Bold = True Cells(iLastRow + 1, 10) = WorksheetFunction.Sum(Range(Cells(2, 9), Cells(iLastRow, 9))) Cells(iLastRow + 1, 11) = WorksheetFunction.Sum(Range(Cells(2, 8), Cells(iLastRow, 8))) Exit Sub End If Next
End Sub
Sub ОТЧЕТИК3() Dim iLastRow As Long Dim z As Integer Sheets("Лист1").Cells.ClearContents Sheets("Лист1").Cells.Font.Bold = False Sheets("Лист1").Cells(1, 2).Resize(41, 6).Value = Selection.Resize(41, 6).Value Sheets("Лист1").Select Range("D:D,F:F").Delete iLastRow = Cells(Rows.Count, 3).End(xlUp).Row
For i = 1 To iLastRow
If Cells(i, 4) = "" And Cells(i, 3) <> "НДС 10%" Then If i = z + 1 Then Call ОТЧЕТИК Exit Sub
End If Rows(i).Delete i = i - 1 End If iLastRow = Cells(Rows.Count, 3).End(xlUp).Row z = iLastRow
Next
End Sub
[/vba]
PS: Спасибо разобрался. Надо было удалить ненужные столбцы и добавить 1 в строке : [vba]
какой ключ надо поменять чтобы сместить на одну колонку вправо диапазон просматриваемых исходных данных.
Диапазон исходных данных определяется в макросе от выделенной даты (Selection.Resize(41, 6).Value) 41 строка и 6 столбцов и переносится на лист1 в ячейку В1 [vba]
[/vba] Попробуйте пройтись по макросу в пошаговом режиме (F8) и посмотреть результат его действия.
Цитата
какой ключ надо поменять чтобы сместить на одну колонку вправо диапазон просматриваемых исходных данных.
Диапазон исходных данных определяется в макросе от выделенной даты (Selection.Resize(41, 6).Value) 41 строка и 6 столбцов и переносится на лист1 в ячейку В1 [vba]
Kuzmich, Да спасибо я с этим уже разобрался. Вылезла другая проблема. После переноса макроса в аналогичную книгу почему-то с такими же столбцами и ячейками отчетик перестал удалять строки с нулевыми значениями.
Kuzmich, Да спасибо я с этим уже разобрался. Вылезла другая проблема. После переноса макроса в аналогичную книгу почему-то с такими же столбцами и ячейками отчетик перестал удалять строки с нулевыми значениями.koyaanisqatsi
_Boroda_, Спасибо. Все заработало. В обоих макросах добавил эту строку прироста скорости не заметил. но это не критично. [moder]Это потому, что массивы маленькие и файлы открыты легкие[/moder]
_Boroda_, Спасибо. Все заработало. В обоих макросах добавил эту строку прироста скорости не заметил. но это не критично. [moder]Это потому, что массивы маленькие и файлы открыты легкие[/moder]koyaanisqatsi