Как я могу сохранить ту же ссылку на ячейку в функции if, пока функция if не станет true / false? - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть следующая функция в Excel:

INDIRECT (CHAR (COLUMN () + 53) & O1 + 1)

Эта функция должна быть результатом оператора if, когдаутверждение верно.Я не хочу, чтобы O1 изменился на O2, O3 и т. Д., Когда я перетаскиваю функцию вниз, пока утверждение не станет истинным.Оттуда я хочу, чтобы функция изменила эту ссылку на ячейку в порядке возрастания.Таким образом, до тех пор, пока оператор if ложен, ссылка должна быть O1.

Я знаю, что абсолютная ссылка может использоваться для сохранения той же ссылки на ячейку ($ O $ 1), но тогда ссылка на ячейку нетакже не изменится, если утверждение верно.

Мои данные выглядят так: введите описание изображения здесь

Моя полная формула выглядит следующим образом: введите изображениеописание здесь = IF (P2 = НЕПРЯМОЙ (CHAR (КОЛОНКА () + 51) & O1 + 1); IF (НЕПРАВИЛЬНЫЙ (CHAR (COLUMN () + 51) & O2 + 1) = ""; НЕПРЯМОЙ (CHAR (COLUMN)() +53) & О1 + 1); ДВССЫЛ (СИМ (колонка () + 51) & О2 + 1)); ЕСЛИ (ДВССЫЛ (СИМ (колонка () + 53) & О2 + 1) = ""; ""; КОСВЕННАЯ(CHAR (COLUMN () + 51) & O2 + 1)))

Я хочу заполнить столбец значениями первого столбца в данных, пока ячейки не станут пустыми.Затем я хочу заполнить столбец данными из столбца i + 2 (поэтому из столбца CI перейдите к столбцу E).Чтобы это произошло, я хочу, чтобы первая ячейка (в данном случае столбец E) оставалась неизменной до тех пор, пока столбец C не станет пустым и столбец не начнет принимать значения из столбца E.

Я надеюсь, что этоописание дает четкое представление о том, что я хочу сделать.

Заранее спасибо.

1 Ответ

0 голосов
/ 20 февраля 2019

Я хочу заполнить столбец значениями первого столбца в данных, пока ячейки не станут пустыми.Затем я хочу заполнить столбец данными из столбца i + 2 (поэтому из столбца CI перейдите к столбцу E).Чтобы это произошло, я хочу, чтобы первая ячейка (в данном случае столбец E) оставалась прежней, пока столбец C не станет пустым и столбец не начнет принимать значения из столбца E.

Этоне то же решение, но оно может удовлетворить ваши потребности лучше, чем ваша первоначальная формула:

=
IFERROR(INDEX(OFFSET($A$1,2,0,COUNTA(A:A)-1,1),ROW($A1)+0),
IFERROR(INDEX(OFFSET($B$1,2,0,COUNTA(B:B)-1,1),ROW($A1)+1-COUNTA(A:A)),
""))

Если вам нужно более 2 столбцов, просто расширьте формулу, следуя этой схеме:

=
IFERROR(INDEX(OFFSET($A$1,2,0,COUNTA(A:A)-1,1),ROW($A1)+0),
IFERROR(INDEX(OFFSET($B$1,2,0,COUNTA(B:B)-1,1),ROW($A1)+1-COUNTA(A:A)),
IFERROR(INDEX(OFFSET($C$1,2,0,COUNTA(C:C)-1,1),ROW($A1)+2-COUNTA(A:A)-COUNTA(B:B)),
IFERROR(INDEX(OFFSET($D$1,2,0,COUNTA(D:D)-1,1),ROW($A1)+3-COUNTA(A:A)-COUNTA(B:B)-COUNTA(C:C)),
""))))

Пример реализации: https://i.stack.imgur.com/MAtxW.png

Я рассмотрел вашу дополнительную пустую строку между заголовком и первой строкой данных.Если вы хотите использовать эту формулу без пустой строки в своем наборе данных, просто измените параметр Offset-Row с 2 на 1:

=
IFERROR(INDEX(OFFSET($A$1,1,0,COUNTA(A:A)-1,1),ROW($A1)+0),
IFERROR(INDEX(OFFSET($B$1,1,0,COUNTA(B:B)-1,1),ROW($A1)+1-COUNTA(A:A)),
""))

Вы можете вставить формулу в любое место на рабочем листе, но нене забудьте изменить буквы столбца в соответствии с расположением ваших полей.В вашем случае, вероятно:

=
IFERROR(INDEX(OFFSET($C$1,2,0,COUNTA(C:C)-1,1),ROW($C1)+0),
IFERROR(INDEX(OFFSET($E$1,2,0,COUNTA(E:E)-1,1),ROW($C1)+1-COUNTA(C:C)),
""))

Имейте в виду, что вам нужно убедиться, что ваши столбцы не содержат строк с пустыми ячейками между именами, поскольку это заставит его пропускать одинаковое количество имен внижняя часть столбца.

РЕДАКТИРОВАТЬ:

Я только что понял, что ваша система использует точки с запятой ";"для анализа формул Excel (мой использует запятые ",").Обратите внимание на это при копировании этих формул в свои таблицы.Вот снова формула, но с использованием ";" ...

=
IFERROR(INDEX(OFFSET($C$1;2;0;COUNTA(C:C)-1;1);ROW($C1)+0);
IFERROR(INDEX(OFFSET($E$1;2;0;COUNTA(E:E)-1;1);ROW($C1)+1-COUNTA(C:C));
""))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...