## The solution ``` array_sum( array_foreach( string_to_array ( "list of polygons" , ','), attribute (get_feature (@layer, 'name', @element), 'area') ) ) ``` ## Explanation The error in your expression is that you use the funtion `area()` with the argument `@element`, but `@element` returns the **name** of a polygon, whereas `area()` expects a polygon's **geometry** as input. The functions `area()` as well as `$area` calculate the area from the geometry. You, however, just want to add values that already exist in an attribute called `area`. ## How to implement 1. So inside the `array_foreach()` function, you get the name of one of the polygons. You then must identify the feature (line in your attribute table) of this element - like line 2 for feature B in your example. Use `get_feature()` for that. 2. Than for this feature, get the value of the attribute named `area`, using the function `attribute()`. As you remarked in your comment, be aware where to use double quotes `"` and where to use single quotes `'`. Best see [help for QGIS expression functions][1]. A field name in single quotes returns the name of the field, a field name in double quotes returns the value stored in that field for the current feature. [1]: https://docs.qgis.org/3.22/en/docs/user_manual/expressions/functions_list.html