Oh okay, got it, thank you.
Depending on how the user makes a data entry in the app, there could be different approaches,
If the user makes the entry through a form, I believe you could even have an initial value for the [Our Offer] and [Their Offer] columns something like below. This initial value will capture the latest previous value and retain it if there is no fresh entry for either the offer or counteroffer on a day.
The initial value expression can be something like below for [Our Offer]
ANY(SELECT(Table Name[Our Offer], [Offer Date]=MAX(SELECT(Table Name[Offer Date], AND([Offer Date] <[_THISROW].[Offer Date], ISNOTBLANK([Our Offer]))))))
An exact similar one can be there for [Their Offer]
The expression may need change. Currently, it assumes one offer and counteroffer entry per day.
As it is evident, this will be a sync time expensive expression. As per my understanding, since it is for the initial value, it could be okay. Also, such requirements to find different row data points in a table could be expensive.