I don't know if this applies to you checkmate3 , but I had to deal with similar issues in some of my games where the difference between the levels was quite small code wise(in one case even layout wise) so there really was no need to make a ton of event sheets that had 90% the same code between them.
In that case what you can do(I found it a bit fiddly and annoying, but it works in the end) is to make as many things variable dependent, for example an every x seconds event, instead of having different every x seconds events and using numbers instead of the x put a variable there "Every SpawnTimer seconds" for example. And you just change that variable depending on what level the player starts.
You olso wanna use groups and subgroups. Put all your code in one event sheet, but put the parts that change into groups "Level 1 Group", "Level 2 Group", etc. and when you create the groups untick "active at start". Then again you use variable to decide which group/groups will get enabled when the layout starts depending on what level the player just clicked on for example, and so only the code from those groups will run.
If you wanna see an example of this in action, you have an android and you don't mind spending a bit of time to install a game then you can check out one of my games Kill The Blocks. If you play it, you'll notice it has about 10 different levels, and different things happen in each level, however the levels all use the same layout and the same event sheet!