Assuming that KnowSpell.? is present at the timing you need you can add the following logic:
Code:
& " & !(" & hero.tagids[KnowSpell.?,"|"] & ")"
that can be added to the end of your custom expression. hero.tagids[] builds a list of all the KnowSpell ids on the hero and if multiple tags found it separates each with a | symbol which is 'OR'.
To be clear it becomes this:
Code:
eachpick.field[usrCandid1].text = "component.BaseSpell & !component.BaseWord & sClass.cHelpClr & !sClass.cHelpSha & (val:sLevel.? < " & hero.childfound[cHelpSha].field[cMaxSpLev].value & ")" & " & !(" & hero.tagids[KnowSpell.?,"|"] & ")"