my first guess would be a worn out ignition switch. you can get one for about $40 on rockauto.com and install it (very carefully), and send it back if it doesn't fix the problem. I had a similar issue, but different in that it was a crank/no-start, rather than a no-crank/no-start. replaced battery, coil packs, plugs, wires, a VERY corroded grounding wire from the negative terminal to the frame. would often start on it's own, then kill itself in the first few seconds, then crank/no-start for a while. I was thinking maybe a fuel system issue, bc when i jumped the fuel pump relay port i could get the fuel pump to run, but not with the key. also, if the fuel pump was faulty, then it would show signs while running of lack of fuel delivery...but it was normally fine once i got it running. Moving on.
Then I was thinking maybe the ignition switch was sending inconsistent signals to the computer to run or not run the fuel pump pre-start. So I bought the ignition switch. Was going to replace, but after a mechanic mentioned that it could possibly be a coolant temp sensor sending false temp readings to the computer pre-start, I pulled and cleaned that off from black as F to shiny gold and new with a wire wheel on the end of a drill...started every time. has ever since. crazy, but hey, got my money back for the ignition switch.
(braindead