An EtherChannel can be configured as Trunk, which means that you can transport different VLANs through the channel. That is equivalent to what you want to achieve with sub-interfaces.
To add to this, if you want to terminate the vlans on the switch, you can create SVIs (switched virtual interfaces), give them an ip, and they will work similar to a sub-interface.
Make the port channel a trunk, create the SVIs, and you basically have sub-interfaces (but slightly different).
Yes, this is an example:
no ip address
encapsulation dot1Q 200
ip address 192.168.1.1 255.255.255.0
The Port Channel 10 has a sub interface 200 ables to handle tagged frames with vlan 200.