I assume that all information is somewhere in the filename, right (why isn't it in the tags straight away? Filenames are only for dumb players that do not look at the tags).
Also I fear that you first name the files and then extract the information to fill the tags. I would recommend to do it the other way round.
Now, down to the other business.
I think that an action of the type "Guess value" would cater for most of your steps in one go:
Create a new action group for the standalone books
select the field %_filename%
enter as mask
%track% - %Artist% - %Title%
Format tag field: Title
do a similar thing for the books of a series.
First action like the first above but with a modified mask:
%track% - %Artist% - %album% - %Title%
or if you want to have series and title in the same field then the mask looks just like this:
%track% - %Artist% - %Title% - %Title%
second action like the second action for standalone books.
Is this, what you wanted?
Another general note: data structures that use implicit fields coded by their position always collapse if that position is not filled.
In your case a structure
1: Number 1: Number
2: Artist 2: Artist
4: Title 3: Title
falls one piece of the data short if position 3 is not filled.
So you either have to fill this position or treat the structure with a different procedure.