I would do something on these lines.
Create a text layer, copy and paste in your 1 – 3 – 3 – 1 – 2
If it was 5×5 for example.
You’d in your opacity of each Item.
Say it’s row 2 I’d put the following expressions like so.
column 1
I = parseInt(thisComp.layer(“Text”).text.sourceText.split(“-“)[1])
if (I >= 4) {100}
else {0}
column 2
I = parseInt(thisComp.layer(“Text”).text.sourceText.split(“-“)[1])
if (I >= 2) {100}
else {0}
column 3
I = parseInt(thisComp.layer(“Text”).text.sourceText.split(“-“)[1])
if (I == 1 | I >= 3) {100}
else {0}
column 4
I = parseInt(thisComp.layer(“Text”).text.sourceText.split(“-“)[1])
if (I >= 2) {100}
else {0}
column 5
I = parseInt(thisComp.layer(“Text”).text.sourceText.split(“-“)[1])
if (I == 5) {100}
else {0}
Then if you want to centralise on if it’s 4, I’d add an expression on the position layer like this or to a null and attach 1-4 to that.
I = parseInt(thisComp.layer(“Text”).text.sourceText.split(“-“)[1])
if (I == 4) xPos = 995
else xPos = 915;
[xPos,540]
(Obviously change values to your preference)
There are some methods where you could make this easier using thisComp.layer(index+1).name, put a text layer at the bottom of them label it 2 (For row 2)
a = thisLayer.name – 1;
thisComp.layer(“Text”).text.sourceText.split(“-“)[a];
Paste this into source text, this will then use the layers name for which row you want.
Then use the above expressions still for the columns but in order
column 1
I = parseInt(thisComp.layer(index+1).text.sourceText)
column 2
I = parseInt(thisComp.layer(index+2).text.sourceText)
etc
So when you duplicate, drag them above our example of row 2, 2 should label itself as 3…Then the others should correspond. Obviously you’ll have to alter positions, but if you use a similar method to attach to null (Label it in a similar method and use the index aswell), you shouldn’t have to do much hard work.
Sorry for all the waffle, I can’t think of an easier way to explain it without sending you a built version, but I use this in building my weather projects. I had 8 to build with 8 cities, with a morning, afternoon and evening section. then also make a presenter version and a none presenter version. So this method saved me weeks worth of work. But also I can change stuff with ease and not have to rewrite my expressions.
You also can use a time remapping aswell if you are putting numbers on jerseys, then use an expression to know which jersey to use in which of the columns, but my lunch hour is over, so if you want any help with that, happy to give you that expression later.