Formula for the filtering:
WithName(
ProductionDashboard_ProductionName,
cur,
WithName(
[Productions (Now Showing / Soon) - By Venue].Filter(
[Production ID] != cur.[Production ID]
AND
(
/* --- Same or similar PRODUCTION name (text) --- */
(
Not(IsBlank(cur.Production))
AND (
Lower(Trim(Production)) = Lower(Trim(cur.Production))
OR Lower(Trim(Production)).Contains(Lower(Trim(cur.Production)))
OR Lower(Trim(cur.Production)).Contains(Lower(Trim(Production)))
)
)
OR
/* --- Same or similar PRODUCER (text) --- */
(
Not(IsBlank(cur.Producer))
AND (
Lower(Trim(Producer)) = Lower(Trim(cur.Producer))
OR Lower(Trim(Producer)).Contains(Lower(Trim(cur.Producer)))
OR Lower(Trim(cur.Producer)).Contains(Lower(Trim(Producer)))
)
)
)
),
matches,
If(
matches.Count() = 0,
/* Fallback: same venue (works if Venue is text or lookup) */
[Productions (Now Showing / Soon) - By Venue].Filter(
[Production ID] != cur.[Production ID]
AND Lower(Trim(Venue.ToText())) = Lower(Trim(cur.Venue.ToText()))
).Slice(1,6),
matches.Slice(1,6)
)
)
)