Almost all of your model is loose geometry.
Make each separate wall into a component or group, or at the least, make all the geometry except the ceiling into a single large component.
It was then easy to select and cut to clipboard the lower part of the ceiling, as one face.
Paste it somewhere else, then make it into a component.
You have other parts of the ceiling hidden, so if you were to put it back where it came from, the geometry would merge with the hidden ceiling parts.
But when I pasted the ceiling back, it clearly isn’t all in one plane - as you say, Intersect Faces doesn’t work to split the ceiling into separate parts for each room. Using move up on blue axis on the Face selected from the ceiling leaves a lot of loose points and stray lines below it.
I’d be inclined to delete the ceiling pieces, then draw a plane on top of the walls, then trace round the walls using On Face inference to get the rectangles or lines in the plane of the tops of the walls.
I’ve started this, as an example, to get the three bottom left faces in the ceiling - two rectangular, and one L-shaped, shown selected and slightly darker shaded in this image:
Haven’t the time to complete the process, but I hope you get the idea.