For what you want to achieve, there would be three options I can think of, but maybe I already started to think to complicated and there are easier possibilities.
One is to use references (pointers) to Data Items, stored in another Data Item.
In your case [Expression] would not contain the name or the value of [CodeX] but the internal reference.
But such Data Item type does not exist, so this won't work.
The other option is to have the content of a Data Item evaluated before BP evaluates the formular
Although there is not such a feature of evaluating Data Items to use their content to create a fomular.
The only options would be to create a collection with several lines, each having the different code.
The next step would be to retrieve the needed line based on your dynamic value / counter. This could be done by using Filter Collection but maybe someone has a better idea.