РЕДАКТИРОВАТЬ: Формула Excel (или Python) для рекурсивного перечисления всех ингредиентов и субингредиентов рецепта.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 РЕДАКТИРОВАТЬ: Формула Excel (или Python) для рекурсивного перечисления всех ингредиентов и субингредиентов рецепта.

Сообщение Anonymous »

РЕДАКТИРОВАТЬ: Проблема уже решена элегантно, можно сказать, с использованием рекурсивной лямбды. Однако с тех пор, как Python стал доступен в Excel, я начал изучать Python и посещать курсы. Тем не менее, для этой конкретной проблемы я в настоящее время не могу найти способ выполнить задачу с помощью Python в Excel. Может ли кто-нибудь оказать помощь, пожалуйста 🙏
?
Мне нужна помощь в создании формулы Excel, которая может справиться с конкретной задачей, связанной с рецептами. Вот ситуация:
У меня есть список рецептов, и каждый рецепт содержит список ингредиентов. Некоторые из этих ингредиентов сами по себе являются рецептами со своими списками ингредиентов (субингредиентов). Я хочу создать формулу, которая может принимать один ингредиент в качестве входных данных и рекурсивно возвращать полный список всех необходимых ингредиентов, включая любые вложенные ингредиенты.
Например, если у меня есть следующие данные:
Рецепт А: Ингредиент 1, Ингредиент 2, Ингредиент 3
Ингредиент 1: Субингредиент 1.1, Субингредиент 1.2
Ингредиент 2: Субпродукт -ингредиент 2.1, субингредиент 2.2
Субингредиент 1.1: субсубингредиент 1.1.1, субсубингредиент 1.1.2
Если я введу «Рецепт А», я хочу получить список, который включает:
Ингредиент 1
  • Субингредиент 1.1
    • Субсубингредиент 1.1.1
    • Субсубингредиент 1.1.2
  • Субингредиент 1.2
Ингредиент 2
  • Суб-ингредиент 2.1
    • Суб-субингредиент 2.1.1
      < /ol>
    • Субингредиент 2.2
    Ингредиент 3
    Формула должна продолжать расширять все субингредиенты до тех пор, пока не останется вложенных ингредиентов.
    Я был бы признателен за любые рекомендации или примеры того, как чтобы добиться этого в Excel. В идеале я ищу решение, не требующее VBA, но я открыт для всех предложений.
    У меня есть Excel 365, и я пытался найти решение с помощью функции BYROW, но она не работает. не складываю массивы.
    Заранее спасибо за помощь!
    У меня есть Excel 365, и я пытался найти решение с помощью BYROW функция, но она не объединяет массивы.
    Я думал о рекурсивной лямбде, но застрял, моя исходная таблица расположена вот так



    Название рецепта
    Ингредиент 1< /th>
    Количество 1
    Ингредиент 2
    Количество 2
    Ингредиент 3
    Количество 3




    Рецепт A
    Ингр 1
    2
    Ингр 2
    3
    Ингр 3
    1


    Ингр. 1
    Суб-ингр. 1
    4
    Суб-ингр. 2
    5
    Суб-ингр. 3
    5


    Sub Ingr 1
    Sub Sub Ingr 1.1
    3







    Теперь, Я пытаюсь представить данные другим методом, который может упростить достижение желаемого результата или нет... :) (см. следующее):



    Название рецепта
    Ингредиент
    Количество




    Рецепт A
    Ингр 1
    2


    Рецепт A
    Ингр 2
    3


    Рецепт А
    Ингр 3
    1


    Ингр. 1
    Подп. ингр. 1
    4


    Ингр. 1
    Подп. ингр. 2
    5


    Ингр. 1
    Вторичный ингр. 3
    5


    Подпрограмма 1
    Подпрограмма 1.1
    3



    РЕДАКТИРОВАТЬ: Желаемый результат, если я поиск Рецепта A выглядит примерно так:



    Ингредиент
    Количество




    Ingr 1
    2


    < td style="text-align: center;">Ingr 2
    3


    Ингр 3
    1


    Sub Ingr 1
    8


    Sub Ingr 2
    10


    Подпункт 3
    10


    Sub Sub Ingr 1.1
    24



    Поскольку ДЛЯ РЕЦЕПТА А требуется 2 количества ингредиента 1, все субингредиенты ингредиента 1 следует умножить соответствующим образом.
  • Дополнительный элемент 1 = 4x2=8
  • Дополнительный элемент 2 = 5x2=10
  • Sub Sub Ingr 3 = 5x2=10
  • Sub Sub Ingr 1.1 = 3x8=24 ( Ingr1 содержит 3 Sub Ingr Sub Ingr 1.1 , поскольку количество Sub Ingr 1 теперь равно 8. Sub Sub Ingredient 1.1 = базовое значение x количество ингредиента 1 = 3x8=24 )


Подробнее здесь: https://stackoverflow.com/questions/786 ... nd-sub-ing
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»