It would be much better if your form & your Excel had some unique identifier for the items.
That way you could use that to filter the Excel table.
If you can’t set that up, then you can still pull in all the Excel values in the List rows present in table action.
Then in a loop for each item in the donation, you could use a Filter array action on the Excel List rows output to filter to any rows where the Excel item column values contain certain words in the Item description from the form response. So you’ll probably split the Item description content on spaces, then take the 1st 2 words or the 1st & last word for the right-side of the Filter array conditional against the Excel Item column in the left side of the conditional.
Then you can check if it returned a single row (probably your result) or multiple rows (you’ll need to set it to notify someone to review the entry).
Once you have a single result, you can then use certain expression notation like
first(body(Filter_array))?[‘InsertPriceColumnName’]
to get the price value for that row it filtered to.
Once each form response item has a price associated to it, you should be able to figure out how to add them in a loop pretty easily, maybe with an increment variable action with the increment amount set to the mul(quantity, price) of each response item or something.