Исходя из вашего первого редактирования (где у вас было все выражение, а не только упрощенная версия), это, безусловно, можно улучшить.Чтобы ответить на главный вопрос - да, выражение жестко кодирует значения в выражениях in
там, где это не нужно.
Например, посмотрите на начало этого выражения:
If(
"EC - Empire Complex" in BuildingDropdown.Selected.Value &&
"Storey 1" in StoreyDropdown.Selected.Value &&
"Office" in AreaNameDropdown.Selected.Value,
Distinct(
Filter(
Area,
"1" in buildingID,
"Storey 1" in storey_x0020_,
"Office" in areaName_x0020_),
areaDescription_x0020_),
If(
"EC - Empire Complex" in BuildingDropdown.Selected.Value &&
"Storey 1" in StoreyDropdown.Selected.Value &&
"Meeting rooms" in AreaNameDropdown.Selected.Value,
Distinct(
Filter(
Area,
"1" in buildingID,
"Storey 1" in storey_x0020_,
"Meeting rooms" in areaName_x0020_),
areaDescription_x0020_),
If(
"EC - Empire Complex" in BuildingDropdown.Selected.Value &&
"Storey 1" in StoreyDropdown.Selected.Value &&
"Pantry" in AreaNameDropdown.Selected.Value,
Distinct(
Filter(
Area,
"1" in buildingID,
"Storey 1" in storey_x0020_,
"Pantry" in areaName_x0020_),
areaDescription_x0020_),
// And many more lines
Выражения в операторах Filter
, кажется, происходят непосредственно из условий в предложении If
, поэтому они могут использоваться непосредственно в них:
If(
"EC - Empire Complex" in BuildingDropdown.Selected.Value,
Distinct(
Filter(
Area,
"1" in buildingID,
StoreyDropdown.Selected.Value in storey_x0020_,
AreaNameDropdown.Selected.Value in areaName_x0020_),
areaDescription_x0020_))