Hi @Geiras_ES
!
Maybe this (or similar) could help you here 
In the sample you’ll find below, you’ll see 3 tables :
-
[Add Recipe]: It’s just a one row helper table used to convert a commas separated list of ingredients into a list of text values Coda can use and manipulate.
-
Ingredients: To store all ingredients
-
Recipes: To store the recipes (
)
In the table [Add Recipe], you’ll see 5 fields:
-
Recipe: A simple text field to add the name of the recipe you wish to add to the table Recipes
-
Commas separated list of ingredients: A simple text field where you can paste a commas separated list of ingredients (as its name implies
)
-
Ingredients already in the table Ingredients: A lookup field from the table Ingredients. It lists all the ingredients present in the commas separated list of ingredients which are already in your table Ingredients and retrieve the rows using mostly this formula:
thisRow.[Commas separated list of ingredients].Split(",").ForEach(
CurrentValue.Trim().WithName(I,
Ingredients.Filter(Name.ContainsText(I,true,true))
)
).ListCombine()
where :
thisRow.[Commas separated list of ingredients].Split(",") splits the list by the commas, which now outputs a list of text values and each text value (ingredient) is represented as a CurrentValue.
Then, using ForEach(), each CurrentValue (so each ingredient in the previously split list of ingredients) is trimmed to avoid potential and unnecessary white spaces and given the name I with WithName().
All, that’s left here is to take the table Ingredients and keep only the rows where CurrentValue.Name contains the text currently stored within I using ContainsText().
(Note that ContainsText() take 2 interesting optional input which are both set to true here : ignoreCase and ignoreAccents. So, however an ingredient is written in the initial commas separated list of ingredients, if it exist in the table Ingredients, Filter() should find it
)
The very last step here: [ ... ].ListCombine() is just to avoid having to deal with unexpected List of Lists down the line, somewhere 
-
Missing Ingredients in the table Ingredients: It’s a simple text field which will extract, from the commas separated list of ingredients, the ingredients that don’t exist yet in the table Ingredients using this formula :
thisRow.[Commas separated list of ingredients].Split(",").ForEach(
CurrentValue.Trim().WithName(I,
If(
Ingredients.Name.ContainsText(I,true,true),
"",
I
)
)
).ListCombine()
It works mostly as the previous one does except that if the whole list of ingredients from the table Ingredients (Ingredients.Name) contains the text value currently stored within I (so if the ingredient is already in the table), it will output Blank ("") . Otherwise, it will output the text value currently stored within I. And to get rid of the Blank ("") values in the final result, the list of text values is flatten with ListCombine().
And last but not least 
-
[Add Recipe]: A 3 actions button.
The 1st of its action is to add to the table Ingredients each potentially missing ingredients (1 row, 1 ingredient) from the field [Missing Ingredients in the table Ingredients]. While this action is running, the brand new ingredients should be picked up but the lookup [Ingredients already in the table Ingredients]
.
If there’s no “missing” ingredients to add, that action won’t do anything and move to the 2nd action.
The 2nd action is to add a row in the Recipes table with the various values from the fields in the table and then open this brand new row in a modal view where the Ingredients lookup field in the table Recipes is displayed as a subtable so you could, for example, correct the names of new ingredients or add more infos …
The 3rd action then cleans up the only row in the table Add Recipe
.
The whole action formula within this button is this one :
RunActions(
// Action 1: Adds potential missing ingredients (as they are written) to the table Ingredients
If(
thisRow.[Missing Ingredients in the table Ingredients].IsNotBlank(),
thisRow.[Missing Ingredients in the table Ingredients].Filter(CurrentValue.IsNotBlank()).ForEach(
AddRow(
Ingredients,
Ingredients.Name,
CurrentValue
)
),
""
),
// Action 2: Add a recipe to the table and find the ingredients in the table Ingredients
AddRow(
Recipes,
Recipes.Name,
thisRow.Recipe,
Recipes.Ingredients,
thisRow.[Ingredients already in the table Ingredients]
).OpenRow(),
// Action 3: Clear thisRow
thisRow.ModifyRows(
thisRow.Recipe,"",thisRow.[Commas separated list of ingredients],""
)
)
This is all just an idea… Something to explore 
(Sorry for the length
)