Есть ли способ переопределить ячейки разгрузки без возникновения ошибки? Допустим, в столбце A ячейки содержат некоторые числа, а в B1 у меня есть «=A1:A10». Теперь я хочу иметь другое значение, которое я установил только в B7. Как я могу переопределить значение этой ячейки, не получив ошибки разлива?
Пример:
@VBasic2008 VBasic2008 хорошо, технически вы правы, но есть много способов получить скриншот OP, чтобы получить желаемый результат. Однако я обновил свой ответ, чтобы отразить ваше точное утверждение: ☺
@pgSystemTester Ради точности я бы сказал, что пустому слову «слово VBA» нет места в «формуле Excel». «Слово Excel» пустое, AFAIK используется исключительно, иногда ошибочно, в документации Excel. Вряд ли это связано, но напоминаем: =ISBLANK(cell) проверяет, пуста ли ячейка и =COUNTA(range)=0 пустой ли диапазон. В описании функции фраза «ячейки ничего не содержат» использовалась для ячеек, которые кажутся пустыми, но не являются, например. = "", '... и те же самые, скопированные как значения. =COUNTBLANK(range) возвращает сумму этих и пустых ячеек.


SpillRange будет разливаться только в том случае, если весь диапазон, в который он расширяется, пуст - обойти это невозможно. Однако существует множество способов добиться одного и того же функционального результата, изменив формулу так, чтобы она по-разному работала в этой конкретной ячейке.
Вот несколько идей:
=IF(ROW(A1:A10)=7,"Something Else",A1:A10)`
Я предпочитаю использовать функцию LET, чтобы уменьшить количество адресных ссылок в формуле, даже если это делает ее длиннее, поэтому я бы использовал:
=LET(zRange,A1:A10,IF(ROW(zRange)=7,"Let version Something Else",zRange))`
В целом что-то вроде Функция карты кажется наиболее полезным. Мне нравится включать вспомогательные массивы следующим образом:
=LET(keyRng, A1:A10, iRng, SEQUENCE(ROWS(keyRng),1),gResult,
MAP(keyRng,iRng, LAMBDA(kVal,iVal,IF(iVal=7,"oh NO!!", iVal))),gResult)
Следующее будет переопределяться и передаваться в несколько ячеек, однако решение, опубликованное выше Стивеном Сэр, должно работать для вашего контекста в ОП, но вот еще одна альтернатива:
=LET(α, A1:A10, IFERROR(MAP(IFNA(XMATCH(ROW(α),D2:D4),""),LAMBDA(r, CHOOSEROWS(E2:E4,r))),α))
Другим альтернативным способом может быть использование VLOOKUP() или XLOOKUP().
=IFERROR(VLOOKUP(A1:A10,D2:E4,2,0),A1:A10)
Еще пара вариантов, ради интереса:
=LAMBDA(src,
IFS(
src = 9,
90,
src = 3,
30,
TRUE,
src
)
)(A1:A10)
или
=LAMBDA(src,
IFNA(
XLOOKUP(
src,
{3, 9},
{30, 90}
),
src
)
)(A1:A10)
Вы не можете. Например,
C1вы можете использовать что-то вроде=IF(B1:B10 = "",A1:A10,B1:B10).