ok, so, an xsl that says ( I know it’s not exactly as your above post requested, but bear with me)
ROOM_1 | ItemID_A | ItemName_A
ROOM_1 | ItemID_B | ItemName_B
ROOM_2 | ItemID_A | ItemName_A
[…]
I believe you already have everything you need; from your second post, I see you have a list of list, representing items by rooms and before that, you have a list of rooms
From the ITEMS’ list, go off two branches and GetParameterValueByName to get you ID and Name as strings. They should have the same list order as your item list.
Then, from your Item list, start a COUNT node at LVL2, it will tell you how long each sublist is. We need this because next, you will feed your ROOMS’ list into a CYCLE node, giving it the result of the COUNT. This should out you a list of rooms with the same format and lenght of your item list! So if your Item list looks like this: [ [ i, i, i ], [ i ,i ] ] and room list like this [ r1, r2 ], the output should be [ [ r1, r1, 1r ], [ r2 ,r2 ] ], finally, get the rooms’ names.
So, three lists of strings (text) of equal lenght and form. Run each of them in a FLATTEN node, this will lose the whole “sublist” thing while keeping it in the same order.
I’m going from memory here but, excel has a scpecial way of wanting data input, it want it line by line. So we want to feed him something like [ROOM, ID, NAME] to make a full line. Feed your 3 new lists in a LIST CREATE, wich will out you a single list containing your three lists. Feed that in a LIST.TRANSPOSE, to get the form I explained earlier.
Fill out whatever info the excel node need and give him your data. Keep that raw data as is, and make a cross dynamic table on a new sheet, filter it as you like. ( because with the CDT you could also sort it by item or ID instead of rooms, a bit like a revit schedule.
However, if you really want the form you posted last, I invite you to play around with the lists-making and figuring it out. It’s part of the fun