Страницы: 1
RSS
Заполнение данных в двух карточках по дате накладной
 
Добрый день!

Прошу у Вас помощи,

Имеется таблица в которой содержится лист с Накладной и две точки для отгрузки продукции.
Возможно ли сделать автоматическое заполнение данных на карточке каждой точки в зависимости от формирования накладной для конкретной точки и даты выставления накладной.

Условие в том, что после каждого заполнения "накладной" она будет очищаться и заполнятся заново на новый день и новую точку.
Возможно сделать как-то функцией или макросом, по нажатию кнопки "выгрузить данные" после полного заполнения накладной.

Может будут другие варианты заполнения, заранее благодарю за помощь!
 
Цитата
Плюшкин написал:
Возможно сделать как-то функцией или макросом, по нажатию кнопки "выгрузить данные" после полного заполнения накладной.
Можно.
Вариант с формулами. Наверняка можно проще или изящнее , или и то и другое)
Изменено: Anchoret - 19.12.2018 20:49:11
 
Anchoret, Вы получается сделали на листе с накладной отображение необходимых позиций по складу на точке для заполнения накладной, а необходимо наоборот заполняя накладную вносить автоматом данные по учёту оборота  с учётом даты и точки поставки  в накладной
 
Плюшкин, получается так... Сорри. Значит формулами это дело не победить) А макрос писать лень.
Передумал, вот:
Код
Sub aaa()
Dim aa As Range, bb As Range, cc As Range, sh As Worksheet, a&, dt1$, mm, arr()
With Sheets(1)
  dt1 = .[C1]: mm = .[C3]
  Set aa = .[B7:G13]: arr = aa.Value 'диапазон с данными в накладной
End With
On Error Resume Next
mm = CDate(mm)
If Err.Number <> 0 Then Err.Clear: MsgBox "В ячейке [C3] не дата!", vbInformation: Exit Sub
For Each sh In ThisWorkbook.Worksheets
  If InStr(1, sh.Name, dt1, 1) > 0 Or InStr(1, dt1, sh.Name, 1) > 0 Then Exit For
Next
If sh Is Nothing Then MsgBox "В книге нет листа с введенной торговой точкой!", vbCritical: Exit Sub
For Each bb In sh.UsedRange.EntireRow.Rows(1).Columns("G:BP")
  If bb.Value = mm Then Exit For
Next
If bb Is Nothing Then MsgBox "Нет такой даты на листе!", vbCritical: Exit Sub
For a = 1 To UBound(arr, 1)
  If Len(arr(a, 1)) > 0 Then
    Set cc = sh.UsedRange.EntireColumn(1).Find(arr(a, 1), , xlValues, xlByColumns, xlPrevious, False)
    If Not cc Is Nothing Then
      Intersect(cc.EntireRow, bb.EntireColumn).Value = Intersect(cc.EntireRow, bb.EntireColumn).Value + arr(a, 2)
      Intersect(cc.EntireRow, bb.EntireColumn).Offset(, 1).Value = Intersect(cc.EntireRow, bb.EntireColumn).Offset(, 1).Value + arr(a, 5)
    End If
  End If
Next
Union(Intersect(aa, Sheets(1).Columns("C")), Intersect(aa, Sheets(1).Columns("F"))).ClearContents
End Sub
В макросе прописан фиксированный диапазон в "накладной".
Изменено: Anchoret - 21.12.2018 20:43:18
 
Цитата
Anchoret написал:
А макрос писать лень
И это понятно почему  :)
Плюшкин, есть более лучшие способы организации данных, чем каждая торговая точка на новом листе. Пока не поздно поинтересуйтесь в интернете о базах данных (в приемлемых объемах это в Excel можно делать, и примеры есть на этом сайте), а при нынешнем Вашем подходе в дальнейшем можете столкнуться с большими проблемами. Сейчас у Вас 8 наименований в накладной, а если организация раскрутится и нужно будет 20 или 2000? Снова на форум идти, переделайте с 8 на 20?  Как добавить 2 или 20 строк в накладную? Походите по разделу "Приемы" на этом же сайте, найдете очень много полезного, и сами тогда сможете многие задачи решать без форумов. Из Вашего примера видно, что логично сделаны некоторые таблицы, а вот некоторые...  Ну на фига в одном столбце делать и заголовки и наименования? (это про "хлеба" и "батоны"). Чтобы потом их по жирному шрифту вычислять? Можно, но потом Вы или кто-то решит, что нужно не жирным, а зеленым... Гораздо важнее сами данные и способы их внесения, хранения и обработки, а не внешнее оформление
 
Anchoret, Благодарю! Именно то, что представлял в голове.

_Igor_61, Позиций много, сделал просто наглядную таблицу для понимания из 8 позиций. С жирными и зелеными шрифтами пока как черновой вариант, взято из текущего варианта где все вносится в ручную.

С наименованиями с Вами согласен, уже появилась проблема с идентичным названием, необходимо будет изменить наименование чтобы макрос не путался.
 
Цитата
_Igor_61 написал:
Чтобы потом их по жирному шрифту вычислять?
Зачем? По отсутствию цены. Но в общем Вы всё правильно говорите...
Цитата
Плюшкин написал:
уже появилась проблема с идентичным названием, необходимо будет изменить наименование чтобы макрос не путался.
Вот как раз проверка введённого нового наименования на уникальность — три строчки кода...
Изменено: StoTisteg - 24.12.2018 10:26:16
 
С наступившим Новым Годом, друзья!

Появился еще один вопрос касаемо данной таблицы:

На вкладке "накладные" при выборе в столбце "наименование продукции" из выпадающего списка есть возможность уменьшить весь список путем ввода некоторых значений,
например, вводя в ячейку "капуст" то весь список будет уменьшаться до всех позиций товара содержащих в своем названии капуста:
пирожок с капустой
кулебяка с капустой

Возможно ли делать такой поиск по выпадающему списку?
 
Цитата
Плюшкин написал:
Возможно ли делать такой поиск по выпадающему списку?
Возможно.
 
Юрий М, я так понял для этого необходимо создать выпадающий список элементом ActiveX, но не могу сообразить как добавить в каждую строку такой элемент.
в одну ячейку работает, а как распространить на несколько?

пользовался этой статьей https://www.planetaexcel.ru/techniques/1/40/
 
Цитата
Плюшкин написал: Появился еще один вопрос касаемо данной таблицы
Этот вопрос не касается заявленной ТЕМЫ.
ПОИСК
Согласие есть продукт при полном непротивлении сторон
 
И ещё одна ссылка.
Страницы: 1
Наверх