The check engine light only comes on when the on-board computer detects a fault in engine driveability or performance, emissions system, or transmission. There are literally hundreds of possible causes ranging from a vacuum leak, engine misfire, faulty sensor or solenoid, faulty control module, open short in wiring harness, internal transmission problem,etc.
Without knowing the exact fault codes stored in the computer it is impossible to tell you exactly what needs to be fixed. Based upon your description of the symptoms it could be a transmission shift solenoid, gear ratio error, tp sensor, open/short in wiring
Here is method to retreive fault codes yourself without a scanner:
The codes will be 2 digits - example: 2 long flashes, pause, 2 short flashes would be code 22.
Record the codes and let me know what they are and we can go from there