Thanks for the ideas so far - keep them coming ...
Tomb - I have a work around just now using this sort of idea, but it requires looping through each unit in turn and checking its type. If it is the correct type then I assign it to a new array that I can countenemy with.
Chris - Unfortunately the countenemy/type doesnt return an array - just a number - so no dice
Cheers
PS. Heres my work-around solution, I really hope there is a better way to do this:
_enemy = _this select 0 {this comes from thislist on an enemy present trigger}
_armour = []
_i = (count _enemy) - 1
#count_armour
;select the next unit
_unit = _enemy select _i
;add the unit to the armour array if it is a tank, APC or ship
? ("tank" CountType [_unit] == 1) : _armour = _armour + [_unit]
? ("APC" CountType [_unit] == 1) : _armour = _armour + [_unit]
? ("ship" CountType [_unit] == 1) : _armour = _armour + [_unit]
;select the next enemy unit
_i = _i - 1
? (_i >= 0) : goto "count_armour"
#main
;how many armoured units does _bloke perceive as a threat
_howmany = _bloke countenemy _armour