Страницы: 1
RSS
Несколько рецептов с ингридиентами соединить в 1 список
 
Добрый еднь.
Подскажите как можно данные из нескольких таблиц объединить в одну
Есть несколько рецептов с ингридиентами, нужно все их соединить в 1 список закупщику и просчитать количество необходимого товара на закупку. В зависимоти от того сколько рецептов заказано.
 
Emelion,а расположение ваших "пирогов" на листе рецепты всегда так хаотично разбросаны?
Не бойтесь совершенства. Вам его не достичь.
 
Да. Как пример я сделал на 1 листе, они еще могут быть на разных вкладках.

Если это слишком критично и важно, давайте упорядочим...
 
Emelion,
еще и это...
если изменить и нормально вводить то возможно что-то придумать, но для такого варианта и еще с учетом
Цитата
Emelion написал:
они еще могут быть на разных вкладках.
я лично пасс...может кто поможет..подождите.
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Emelion написал: Если это слишком критично и важно, давайте упорядочим...
Если автоматизировать бардак, получится автоматизированный бардак.
Как лучше искать: когда все в шкафу по полочкам или когда один носок в спальне, второй под столом на кухне, а на галстуке мышь в кладовке повесилась? )

Делайте выводы
 
Emelion, как вариант короче самое просто если рецепты привести например в такой вид как в файле:
Код
Sub ddsdd()
Dim i As Long, k As Long
Dim RowDel As Range, Radd As Range
Dim shRec As Worksheet, shO As Worksheet
Set shRec = Worksheets("Рецепты")
Set shO = Worksheets("общий")
Application.ScreenUpdating = False
Lr = shRec.Cells(Rows.Count, 1).End(xlUp).Row
    shO.Range("A2:E10000").Clear
    Set rng1 = shRec.Range("A1:A" & Lr)
    Set rng2 = shRec.Range("B1:C" & Lr)
        rng1.Copy
            shO.Range("A2").PasteSpecial Paste:=xlPasteValues
        rng2.Copy
            shO.Range("D2").PasteSpecial Paste:=xlPasteValues
    For i = 2 To shO.Cells(Rows.Count, 1).End(xlUp).Row
        If shO.Cells(i, 5) = "" Then
            shO.Cells(i, 5) = shO.Cells(i - 1, 5)
            shO.Cells(i, 4) = shO.Cells(i, 4) * shO.Cells(i, 5)
        End If
    Next i
    
    For Each RowDel In shO.Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
        If RowDel.Offset(0, 3).Value = "" Then
            If Radd Is Nothing Then
                Set Radd = RowDel
            Else
                Set Radd = Union(Radd, RowDel)
            End If
        End If
    Next RowDel
If Not Radd Is Nothing Then Radd.EntireRow.Delete
shO.Columns(5).Clear
shO.Range("A2").Activate
Application.ScreenUpdating = True
End Sub
Не бойтесь совершенства. Вам его не достичь.
 
Круто! спасибо большое за помощь и за советы. Классно получилось! думал через какие то формулы, а тут - Клац и все) :)  
 
Я "поклацал", не совсем правильно считает или я не понял как считает...
на вкладке рецепты сводная, которая считает количество ингридиентов, которые нужны для приготовления всех рецептов в количестве 1 шт, как я понял. Например Силвы есть в Пирог 1 и Пирог 3, итого 109 шт.Это Ок. А как добавить еще рецепты в эту формулу? когда добавляю ниже, значения не меняются...

и второй вопрос
на вкладке общий, с теми же сливами, как в примере - заказано пирог 1 - 4 шт, и Пирог 3 - 2 шт, получается что слив нужно на 6 пирогов по 109 шт итого 654 шт. а в таблице на вкладке общий рассчитано только 80 шт
и если ставлю значение в столбец "есть на складе" - оно не сохраняется
 
Цитата
Emelion написал:
итого 109 шт.
а разе рядом с рецептом это не количество заказов?))))
если нет то тогда могу скорректировать он просто умножает на число коротая находится напротив каждого пирога
Цитата
Emelion написал:
если ставлю значение в столбец "есть на складе" - оно не сохраняетс
ну дело в том что данные всегда у вас разные на листа рецепты...если что-то не так. ТО рекомендую Сначала сделать пример нормальный  котором исходные данные покажите в нормальном виде, а так же покажите в нем ЖЕЛАЕМЫЙ РЕЗУЛЬТАТ заполненный руками...
Изменено: Mershik - 26.05.2020 21:38:55
Не бойтесь совершенства. Вам его не достичь.
 
Mershik,спасибо, Вы очень помогли, расставлю все по местам.
подскажите а как увеличить количество рецептов в расчетах? в примере их 3, а если по факту их около 50. Я же не смогу их просто в столбец добавить
 
Emelion,почему не сможете??
Цитата
Emelion написал:
около 50. Я же не смогу их просто в столбец добавить
Не бойтесь совершенства. Вам его не достичь.
 
тогда не считает таблица
 
Emelion, я видел снежного человека... файл пример приложите с рецептами и когда не работает
Не бойтесь совершенства. Вам его не достичь.
 
в итоге всего этого процесса, попробую сформировать мысль, которую хотел донести. не судите строго)
Планирую доставку еды, пока нет возможности покупки программы учета, хотел реализовать с помощью ексель.
Делаю вкладку с списком всех блюд, которые есть в ассортименте с перечнем ингридиентов.
Когда приходят заказы - ставлю количество необходимых блюд, и автоматически рассчитывается количество продуктов, которые нужно купить.
идеальный варинат - это чтоб еще учитывался остаток продуктов на складе - отнимать от необходимого к закупки.
Как то так...

В любом случае - помогли приблизится к решению. Спасибо
 
Вот как пример - добавил еще 3 рецепта в столбец
Сводная таблица - значения не изменились
и на вкладке "общая" - ингредиенты не просуммировались, а добавились ниже в список
 
А вы макрос запустили ? Я понял что вы имеете ввиду но в названии темы вы конкретно пишите « ми соединить в 1 список»
вот и добавляет в один список ...вы так и не показали каким должен быть результат, за вас изменили данные для корректной работы макроса И придумали результат, а теперь оказалось что не так )
что бы было вот это
Цитата
идеальный варинат - это чтоб еще учитывался остаток продуктов на складе - отнимать от необходимого к закупки.
как и говорил выше - нужен пример и данные откуда брать и куда подставлять....
с учетом
Цитата
на вкладке "общая" - ингредиенты не просуммировались, а добавились ниже в список
берите этот макрос (в замен выше приведенного)
Код
Sub ddsdd()
Dim i As Long, k As Long
Dim RowDel As Range, Radd As Range
Dim shRec As Worksheet, shO As Worksheet
Dim Meval As Range
Set shRec = Worksheets("Рецепты")
Set shO = Worksheets("общий")
Application.ScreenUpdating = False
Lr = shRec.Cells(Rows.Count, 1).End(xlUp).Row
    shO.Range("A2:E10000").Clear
    Set rng1 = shRec.Range("A1:A" & Lr)
    Set rng2 = shRec.Range("B1:C" & Lr)
        rng1.Copy
            shO.Range("A2").PasteSpecial Paste:=xlPasteValues
        rng2.Copy
            shO.Range("D2").PasteSpecial Paste:=xlPasteValues
    For i = 2 To shO.Cells(Rows.Count, 1).End(xlUp).Row
        If shO.Cells(i, 5) = "" Then
            shO.Cells(i, 5) = shO.Cells(i - 1, 5)
            shO.Cells(i, 4) = shO.Cells(i, 4) * shO.Cells(i, 5)
        End If
    Next i
    
    For Each RowDel In shO.Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
        If RowDel.Offset(0, 3).Value = "" Or _
        Application.WorksheetFunction.CountIf(shO.Range(shO.Cells(1, 1), shO.Cells(RowDel.Row, 1)), RowDel.Value) > 1 Then
        Set Myval = shO.Range(shO.Cells(1, 1), shO.Cells(RowDel.Row, 1)).Find(RowDel)
        shO.Cells(Myval.Row, 4) = shO.Cells(Myval.Row, 4) + shO.Cells(RowDel.Row, 4)
            If Radd Is Nothing Then
                Set Radd = RowDel
            Else
                Set Radd = Union(Radd, RowDel)
            End If
        End If
    Next RowDel
If Not Radd Is Nothing Then Radd.EntireRow.Delete
shO.Columns(5).Clear
shO.Range("A2").Activate
Application.ScreenUpdating = True
End Sub
Изменено: Mershik - 27.05.2020 13:54:08
Не бойтесь совершенства. Вам его не достичь.
 
Добрый день.
Добрался снова до файла. Попробую более понятно объяснить какой результат хотел бы получить в итоге.
На вкладке "Рецепты" - в столбик я добавляю рецепты блюд, которые есть в меню. Их может быть много 50-100 шт. (забегу наперед - если понадобится для решения, то в столбик не обязательно)
Когда я получаю заказ на какое то блюдо - я ввожу количество необходимых блюд на вкладке с рецептами (отметил желтым ячейки)
Исходя из количества полученных рецептов на вкладке "Общий" формируется общий список необходимых ингредиентов для приготовления всех заказанных блюд.
Объединяются все повторяющие продукты с общим количеством по весу (то есть если морковь встречается в 5 рецептах по 100 грамм, то на общей вкладке морковь - 500 грамм).
Закупщик берет этот список и делает заказ поставщику.
В идеале конечно было бы хорошо, если есть возможность устанавливать цену продукта и количество на складе (остаток).

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

Цитата
Emelion написал:
В идеале конечно было бы хорошо, если есть возможность устанавливать цену продукта и количество на складе (остаток).
ну для этого нужно перечень того что есть в наличии на складе и формулами потягивать тем же ВПР к сводной...  
Изменено: Mershik - 13.06.2020 09:29:37
Не бойтесь совершенства. Вам его не достичь.
Страницы: 1
Наверх