Переопределить ячейку разлива

Есть ли способ переопределить ячейки разгрузки без возникновения ошибки? Допустим, в столбце A ячейки содержат некоторые числа, а в B1 у меня есть «=A1:A10». Теперь я хочу иметь другое значение, которое я установил только в B7. Как я могу переопределить значение этой ячейки, не получив ошибки разлива?

Пример:

Вы не можете. Например, C1 вы можете использовать что-то вроде =IF(B1:B10 = "",A1:A10,B1:B10).

VBasic2008 08.06.2024 20:30

@VBasic2008 VBasic2008 хорошо, технически вы правы, но есть много способов получить скриншот OP, чтобы получить желаемый результат. Однако я обновил свой ответ, чтобы отразить ваше точное утверждение: ☺

pgSystemTester 08.06.2024 20:34

@pgSystemTester Ради точности я бы сказал, что пустому слову «слово VBA» нет места в «формуле Excel». «Слово Excel» пустое, AFAIK используется исключительно, иногда ошибочно, в документации Excel. Вряд ли это связано, но напоминаем: =ISBLANK(cell) проверяет, пуста ли ячейка и =COUNTA(range)=0 пустой ли диапазон. В описании функции фраза «ячейки ничего не содержат» использовалась для ячеек, которые кажутся пустыми, но не являются, например. = "", '... и те же самые, скопированные как значения. =COUNTBLANK(range) возвращает сумму этих и пустых ячеек.

VBasic2008 08.06.2024 21:49
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
2
3
89
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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)

Другие вопросы по теме