Microsoft Excel — как автоматически заполнить формулу в столбце?

Долголетие, EmployeeID, StartDate, EndDate

Я вставляю кучу данных в рабочий лист (ячейки B1-Dn), и мне нужна формула для A1-An (долголетие), чтобы автоматически вычислить результат для каждого введенного сотрудника.

Я использую Microsoft Excel 2010.

В настоящее время формула, которую я использую:

=IF ( C1 , IF ( D1 , D1-C1 , TODAY()-C1 ) , "")

Это прекрасно работает, за исключением того, что мне нужно вручную добавлять/удалять ячейки с этой формулой в столбце A, чтобы соответствовать количеству строк, которые вводятся в любой момент времени. Это отнимает очень много времени, и руководству трудно разобраться с этим отчетом. :)

Есть ли способ сказать: «Каждая строка с данными в ней получает ЭТУ формулу в столбце A»?

Я исследовал это в Интернете и нашел разные ответы. Наиболее известным ответом было использование раскрывающегося списка со значением по умолчанию, но я не думаю, что это сработает для формулы по умолчанию.


person Giffyguy    schedule 25.10.2011    source источник
comment
Просто из любопытства, сколько времени занимает заполнение-копирование новых строк в столбце A при добавлении данных в другие столбцы? Это должно занять несколько секунд.   -  person LowTechGeek    schedule 26.10.2011
comment
лол, эй, это отнимает много времени, когда вам приходится делать это несколько раз в день для нескольких разных типов отчетов. Настоящая проблема заключается в том, что никто в здравом уме не верит, что руководство сможет справиться даже с простой операцией копирования/вставки, и руководство не поверит, что отчет действителен, если он не автоматизирован.   -  person Giffyguy    schedule 26.10.2011
comment
Как C1 и D1 работают в качестве первого аргумента в ваших формулах IF()? Вы имели в виду C1<>"" вместо этого?   -  person Excellll    schedule 26.10.2011
comment
Вы можете просто заполнить-копировать столбец A намного больше, чем количество строк, которые вы заполнили в других столбцах. При том, как вы написали эту формулу, ничего не будет отображаться в столбце A, если в столбце C нет данных, но формула все равно будет там, и значение появится после заполнения других столбцов.   -  person LowTechGeek    schedule 26.10.2011
comment
@Excellll, если ячейка содержит данные, она возвращает TRUE   -  person LowTechGeek    schedule 26.10.2011
comment
@LowTechGeek, единственная проблема с заполнением-копированием столбца с дополнительной передышкой, заключается в том, что это потенциально очень большой набор данных (десятки тысяч строк), который постоянно расширяется с большой непредсказуемостью. Чтобы быть эффективными, нам нужно было бы предварительно заполнить столбец на столько строк вперед, что таблица сильно увеличилась бы в размере файла. Автоматизация может быть немного головной болью в краткосрочной перспективе, но облегчает долгосрочную боль и гарантирует, что руководство всегда будет доволен результатом.   -  person Giffyguy    schedule 26.10.2011


Ответы (2)


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

Шаг первый:

Вставьте свои данные (без формул)

Шаг второй: перейдите к вставке -> таблица, вы должны получить диалоговое окно, которое выглядит примерно так

Таблица диалогового окна

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

Шаг третий:

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

Обратите внимание, что размер таблицы не изменится, если вы вставите меньший набор данных.

person Pynner    schedule 25.10.2011
comment
После того, как вы создали таблицу, вы можете воспользоваться именами столбцов в формуле =IF([@StartDate],IF([@EndDate],[@EndDate]-[@StartDate],TODAY()-[@StartDate]),""),""). - person chris neilsen; 26.10.2011

Если я правильно понимаю, что вам нужно, то, возможно, вам стоит попробовать это. В каждой ячейке столбца A (где вам нужна формула, если другие столбцы содержат данные) добавьте эту формулу:

=IF( AND( NOT(ISBLANK(B:B)),NOT(ISBLANK(C:C)),NOT(ISBLANK(D:D)) ),
     IF ( $C1 , IF ( $D1 , $D1-$C1 , TODAY()-$C1 ) , ""),"" )

Чтобы быть более точным, вы должны добавить эту формулу в ячейку A1, а затем автоматически заполнить всю колонку A.

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

=IF( AND( NOT(ISBLANK(B1)),NOT(ISBLANK(C1)),NOT(ISBLANK(D1)) ),
     IF ( $C1 , IF ( $D1 , $D1-$C1 , TODAY()-$C1 ) , ""),"" )
person deAngel    schedule 25.10.2011