I was able to sort of solve this in an excel template by making the first sheet hold all rows, the second sheet uses excel formula to decide whether to keep an id/name. I'm not sure this is a robust solution, though, and it doesn't answer my question if my goal was to do it in one sheet, since I created a dependency on the data sheet rather than doing it in-place.
Does anyone have a suggestion for this as a single sheet only method?
here's how I did the two sheet method, note this is psuedocode since otherwise i'd need to attach the excel workbook
Dynamic List Sheet
A1.Comment = jx:each (items="data" var="row" lastCell="C2")
A2.Comment = jx:each(items="data" var="row" lastCell="C2")
A2.Value = ${row.ID}
B2.Value = ${row.NAME}
C2.Value = ${row.TERM}
Compute Sheet
A1.Comment = jx:each (items="data" var="row" lastCell="C2")
A2.Comment = jx:area(lastCell="C2")
A2.Formula=IF(COUNTIF('Dynamic list'!$A$2:A2, 'Dynamic list'!A2) > 1, "", 'Dynamic list'!A2)
B2.Formula=IF(COUNTIF('Dynamic list'!$A$2:B2, 'Dynamic list'!B2) > 1, "", 'Dynamic list'!B2)
C2.Formula='Dynamic list'!C2```