Как пропускать пустые ячейки в excel если

  • Редакция Кодкампа

17 авг. 2022 г.
читать 2 мин


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

Формула 1: игнорировать пустые ячейки в одном столбце

=IF( A2 <>"", A2 +10, "")

Эта конкретная формула добавляет 10 к значению в ячейке A2 , только если значение в ячейке A2 не является пустым.

Формула 2: игнорировать пустые ячейки в нескольких столбцах

=IF(AND( A2 <>"", B2 <>""), A2 + B2 , "")

Эта конкретная формула добавляет значения в ячейки A2 и B2 , только если обе ячейки не пусты.

В следующих примерах показано, как использовать каждую формулу на практике.

Пример 1: игнорировать пустые ячейки в одном столбце

Предположим, у нас есть следующие данные в Excel, которые показывают очки, набранные различными баскетболистами:

Теперь предположим, что мы используем следующую формулу, чтобы добавить 10 к каждому из значений в столбце A:

= A2 +10

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

Обратите внимание, что 10 добавляется к каждой ячейке в столбце А, даже если ячейка в столбце А пуста.

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

=IF( A2 <>"", A2 +10, "")

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

Обратите внимание, что 10 добавляется только к каждой ячейке в столбце A, которая не пуста.

Пример 2. Игнорирование пустых ячеек в нескольких столбцах

Предположим, у нас есть следующие данные в Excel, которые показывают набранные очки и подборы, собранные различными баскетболистами:

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

=IF(AND( A2 <>"", B2 <>""), A2 + B2 , "")

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

Обратите внимание, что значения очков и подборов добавляются только для тех строк, где оба значения не являются пустыми.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в Excel:

Как заменить значения #N/A в Excel
Как игнорировать значения #N/A при использовании формул в Excel

1 / 1 / 0

Регистрация: 09.08.2010

Сообщений: 5

1

Как формуле пропустить пустые ячейки?

09.08.2010, 20:01. Показов 22634. Ответов 2


Студворк — интернет-сервис помощи студентам

Есть столбец «А» с данными, но данные идут не подряд, а вразнобой, т.е. 1 ячека с данными следующие 4 пустые, затем опять с данными, следующие 3 пустые и т.д. закономерности нет. Нужна формула, чтобы например эти данные копировались в соседний столбец «B» и причём без пустот — друг за другом, т.е. формулой можно заполнить весь диапазон столбца «B» и когда появляется в столбце «А» следующее значение, то оно сразу копируется в «B», но только друг за другом без пустых строк.
Заранее спасибо.



0



КотЪ

219 / 219 / 60

Регистрация: 26.05.2009

Сообщений: 688

11.08.2010, 18:51

2

Непонятно, зачем. Если потом с этими данными будет работать какая-то формула, то она просто пропустит пустые ячейки.



0



1 / 1 / 0

Регистрация: 09.08.2010

Сообщений: 5

12.08.2010, 13:25

 [ТС]

3

Цитата
Сообщение от Zabiyak
Посмотреть сообщение

Непонятно, зачем. Если потом с этими данными будет работать какая-то формула, то она просто пропустит пустые ячейки.

На самом деле мне нужен был принцип, всё выглядит несколько сложнее. Я уже нашел решение более подробно это можно узнать на другом форуме:

 Комментарий администратора 
ссылки на посторонние форумы запрещены. если несложно, можно выложить саму суть решения?

Добавлено через 1 час 54 минуты

ссылки на посторонние форумы запрещены. если несложно, можно выложить саму суть решения?

Ух, я думал все форумы програмистов — братья )
Там тема растянулась на пару страничек. Суть такая, что данные в столбце, на листе1, между которыми пустые ячейки, надо чтобы переносились на лист3 подряд без этих самых пустых ячеек.
Решилось всё при помощи массива такого типа:
={ИНДЕКС($A$1:$A$1000;НАИМЕНЬШИЙ(ЕСЛИ($A$1:$A$1000 =»»;66000;СТРОКА($A$1:$A$1000));СТРОКА());1)}



1



 

Lucien

Пользователь

Сообщений: 11
Регистрация: 12.05.2015

Здравствуйте знатоки.
Как сделать столбец, с пропуском пустых ячеек? И чтобы это было через формулу. (для автоматизма, так как исходники меняются. А сам результат выводится на график.)
(так же в примере есть найденная формула, которая почему-то не работает)
P.S.Прочитал уже много форумов, но выложенные голые формулы не работают. Нужно видимо сразу в таблицу вписать.

Прикрепленные файлы

  • график.xlsx (13.27 КБ)

Изменено: Lucien13.05.2015 13:13:42

 

JeyCi

Пользователь

Сообщений: 3357
Регистрация: 27.11.2013

#2

12.05.2015 20:50:55

увеличьте диапазон до А16(весь исходник)
и введите формулу НЕ Enter, а CTRL+SHIFT+ENTER
— растяните формулу вниз…
… работает формула, представленная  в файле!

Код
=ЕСЛИОШИБКА(ДВССЫЛ("A"&НАИМЕНЬШИЙ(ЕСЛИ(ЕПУСТО($A$2:$A$16);"";СТРОКА($A$2:$A$16));СТРОКА(I1)));"")

Изменено: JeyCi12.05.2015 20:51:41

чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок — обратитесь к собеседнику на ВЫ — ответ на ваш вопрос получите — а остальное вас не касается (п.п.п. на форумах)

 

Lucien

Пользователь

Сообщений: 11
Регистрация: 12.05.2015

О, Благодарю! Теперь сработало.  Раньше через CTRL+SHIFT+ENTER пытался запустить, но не получалось. Спасибо за быстрый ответ.

 

Lucien

Пользователь

Сообщений: 11
Регистрация: 12.05.2015

И ещё вопросик. В формуле какой-то странный параметр, куда-то вбок направлен. Он нужный или его можно как-то удалить?
=ЕСЛИОШИБКА(ДВССЫЛ(«A»&НАИМЕНЬШИЙ(ЕСЛИ(ЕПУСТО($A$2:$A$16);»»;СТРОКА($A$2:$A$16));СТРОКА(F1)));»»;)

(этот вопрос решён)
После переноса формулы и создания массива, он продолжает работать только
со столбцом «А». Адрес столбца в формуле поменял на «F», но с ним
работать не хочет, а опять берёт значения из столбца «А».  На другой
лист перенёс — та же история.
Как сдвинуть эту хитрую формулу?
(этот вопрос решён) >> столбец меняется здесь >>        =ЕСЛИОШИБКА(ДВССЫЛ(«A»&НАИМЕНЬШИЙ(ЕСЛИ(ЕПУСТО($A$2:$A$16);»»;СТРОКА($A$2:$A$16));СТРОКА(F1)));»»

Изменено: Lucien13.05.2015 17:45:15

 

V

Пользователь

Сообщений: 5018
Регистрация: 22.12.2012

#5

13.05.2015 17:03:01

Цитата
Lucien написал: Адрес столбца в формуле поменял на «F»

это ни чего не даст, почитайте про ф-цию СТРОКА в справке.

 

Lucien

Пользователь

Сообщений: 11
Регистрация: 12.05.2015

Благодарю за ответ. Решение уже сам увидел. А про параметр «СТРОКА» можете сказать? Или просто исправить и всё. Спасибо.
(в справке написано очень умными словами там ничего не понял)

Изменено: Lucien13.05.2015 17:44:43

 

V

Пользователь

Сообщений: 5018
Регистрация: 22.12.2012

#7

13.05.2015 17:08:36

лучше использовать такую формулу

Код
=ЕСЛИОШИБКА(ИНДЕКС($F$2:$F$16;НАИМЕНЬШИЙ(ЕСЛИ(ЕПУСТО($F$2:$F$16);"";СТРОКА($F$1:$F$15));СТРОКА(L1)));"")

чем использовать ДВССЫЛ

 

V

Пользователь

Сообщений: 5018
Регистрация: 22.12.2012

#8

13.05.2015 17:10:35

Цитата
Lucien написал:  А про параметр «СТРОКА» можете сказать? Или просто исправить и всё.

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

 

Lucien

Пользователь

Сообщений: 11
Регистрация: 12.05.2015

Благодарю за понятные ответы. Попробую использовать рекомендованную формулу.

 

Lucien

Пользователь

Сообщений: 11
Регистрация: 12.05.2015

Оказалось что ячейка не совсем пустая, а с формулой. Как сделать чтобы массив срабатывал от значения «пусто» с формулой внутри?  
(проблема отмечена жёлтым цветом)

 

V

Пользователь

Сообщений: 5018
Регистрация: 22.12.2012

#11

13.05.2015 20:13:42

Код
=ЕСЛИОШИБКА(ИНДЕКС($F$2:$F$16;НАИМЕНЬШИЙ(ЕСЛИ($F$2:$F$16="";"";СТРОКА($F$1:$F$15));СТРОКА(L1)));"")
 

Lucien

Пользователь

Сообщений: 11
Регистрация: 12.05.2015

Спасибо Большое. Что бы я без умных людей делал…

 

farich_13

Пользователь

Сообщений: 17
Регистрация: 27.11.2017

#13

10.08.2019 11:36:38

Цитата
V написал: 1=ЕСЛИОШИБКА(ИНДЕКС($F$2:$F$16;НАИМЕНЬШИЙ(ЕСЛИ($F$2:$F$16=»»;»»;СТРОКА($F$1:$F$15));СТРОКА(L1)));»»)

всем доброе утро.
мне помогла эта формула, но мне в нее необходимо добавить еще 1 условие, наподобие ЕСЛИ($F$2:$F$16=»»;»»;

делаю вот так (в примере мои ячейки):

Цитата
=ЕСЛИОШИБКА(ИНДЕКС($E$1:$E$18;НАИМЕНЬШИЙ(ЕСЛИ($E$1:$E$18=»»;»»;ЕСЛИ($E$1:$E$18=»Иванов»;»»;СТРОКА($E$1:$E$18));СТРОКА(L1)));»»)

Что-то не так, подскажите, почему выдает ошибку:

Прикрепленные файлы

  • Снимок.PNG (14.23 КБ)

Изменено: farich_1313.08.2019 16:37:34

 

artyrH

Пользователь

Сообщений: 2054
Регистрация: 01.07.2018

farich_13, может достаточно добавить еще одну скобку в  — 18)));СТР
а лучше пример бы

 

farich_13

Пользователь

Сообщений: 17
Регистрация: 27.11.2017

#15

14.08.2019 01:03:33

спасибо. помогло.

может в продолжении темы подскажет кто-то: необходимо из столбца подтягивать значения, пропуская пустые ячейки и ячейки со значениями-исключениями. На основе этой ветки удалось сделать это с помощью массива. Но большой минус массива в том, что он долго считает и заметно уменьшает скорость работы самой программы Эксель когда значений много.

Вот, что получилось в итоге:

Код
=ЕСЛИОШИБКА(ИНДЕКС($A$1:$A$18;НАИМЕНЬШИЙ(ЕСЛИ($A$1:$A$18="";"";ЕСЛИ($A$1:$A$18=$F$2;"";ЕСЛИ($A$1:$A$18=$F$3;"";СТРОКА($A$1:$A$18))));СТРОКА(H1)));"")

Есть ли другой способ (с помощью формулы) без массива, но и не макрос, чтобы добиться желаемого результата?

Пример во вложении.

Прикрепленные файлы

  • ТЕСТ.xls (28.5 КБ)

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Добавляем формулу для отметки нужных:
=ЕСЛИ(A2<>»»;ЕСЛИ(СЧЁТЕСЛИ($E$2:$E$3;A2)=0;МАКС($B$1:B1)+1))
и подтягиваем обычной ВПР:
=ЕСЛИ(СТРОКА(A1)>$D$1;»»;ИНДЕКС(A:A;ПОИСКПОЗ(СТРОКА(A1);B:B;)))

Прикрепленные файлы

  • список.xls (29.5 КБ)

 

buchlotnik

Пользователь

Сообщений: 3863
Регистрация: 31.10.2014

Excel 365 Бета-канал

#17

14.08.2019 07:47:14

Цитата
Lucien написал:
через формулу. (для автоматизма, так как исходники меняются

а почему для автоматизма не годится PQ?

Код
let
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    iskl = Table.Column(Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],"Исключения"),
    filtr = Table.SelectRows(from, each ([Сотрудник] <> null and not List.ContainsAny(Record.ToList(_),iskl)))
in
    filtr

Прикрепленные файлы

  • список.xlsx (17.61 КБ)

Соблюдение правил форума не освобождает от модераторского произвола
<#0>

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Потому что одни забыли формулы, а другие не хотят учить PQ :)

 

buchlotnik

Пользователь

Сообщений: 3863
Регистрация: 31.10.2014

Excel 365 Бета-канал

#19

14.08.2019 10:07:46

Цитата
vikttur написал:
забыли формулы

нет ну ни фига себе — оскорбления на форуме запрещены  :cry:  :cry:  :cry:

Соблюдение правил форума не освобождает от модераторского произвола
<#0>

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Дык, о PQ — это о себе. Равенство и братство :)

 

БМВ

Модератор

Сообщений: 21383
Регистрация: 28.12.2016

Excel 2013, 2016

#21

14.08.2019 12:03:14

OFF

Цитата
vikttur написал:
Дык, о PQ — это о себе. Равенство и братство

Это я еще с SQL не подкатывал :-)

Код
SELECT Сотрудник
FROM ( SELECT T1.Сотрудник, T2.Исключения
FROM {oj [Лист1$A:A] as T1 LEFT OUTER JOIN [Лист1$E:E] as T2 ON T1.Сотрудник = T2.Исключения}
WHERE (T1.Сотрудник Is Not Null) )
WHERE (Исключения Is Null)

По вопросам из тем форума, личку не читаю.

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Еще один скоро пропадет. А если учитывать, что в самокрутке, то это «скоро» настанет еще быстрее )

 

farich_13

Пользователь

Сообщений: 17
Регистрация: 27.11.2017

#23

15.08.2019 00:22:40

vikttur, спасибо, очень крутой вариант. Значительно лучше, чем массив тормознутый.
Но мой перфекционизм и мозг, любящий все сокращать и из за этого усложнять, не дает мне покоя из за дополнительного столбца с порядковыми цифрами и ЛОЖЬю.
Можно, конечно, просто скрыть текст невидимым шрифтом. Но как план Б.
Но осмелюсь спросить, есть вариант обойтись без доп столбца?

Цитата
buchlotnik написал: а почему для автоматизма не годится PQ?

не зашел мне PQ (не отрицаю, что я в нем просто не разобрался), но я больше формулы уважаю.
Спасибо за альтернативу.

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#24

15.08.2019 02:44:38

Цитата
farich_13 написал: есть вариант обойтись без доп столбца?

Есть. Он у Вас и раньше был :)
Не всегда короче_меньше = лучше.

 

БМВ

Модератор

Сообщений: 21383
Регистрация: 28.12.2016

Excel 2013, 2016

farich_13, Подразгогнать формулу можно чуток
=IFERROR(INDEX(A:A;SMALL(IF(($A$2:$A$18<>»»)*ISERROR(MATCH($A$2:$A$18;$E$1:$E$100;));ROW($A$2:$A$18));ROW(A1)));»»)
или
=IF(ROW()<=COUNTIF(A:A;»>»»»)-SUM(COUNTIF(A:A;$E$1:$E$3));INDEX(A:A;SMALL(IF(($A$2:$A$18<>»»)*ISERROR(MATCH($A$2:$A$18;$E$1:$E$100;));ROW($A$2:$A$18));ROW(A1)));»»)
Только на больших объемах будет понятно, что из этого работает быстрее, но разница только в обработке запаса, когда формула должна вернуть пусто.

По вопросам из тем форума, личку не читаю.

 

farich_13

Пользователь

Сообщений: 17
Регистрация: 27.11.2017

Вернулись к массиву.
В общем, решений достаточно. Потестю по скорости, что меня устроит и в практику.

Всем большое спасибо.

 

Добрый день.

Есть очень похожая задача, но подтянуть нужно данные из другого столбца (находящегося слева) адаптировать вышепредложенное не удалось

Прикрепленные файлы

  • Book1.xlsx (18.5 КБ)

 

memo

Пользователь

Сообщений: 1423
Регистрация: 28.02.2018

Excel 2013/2016

#28

22.02.2021 03:36:01

Доброй ночи.

Код
=IFERROR(INDEX($B$9:$B$50;MATCH(AGGREGATE(15;6;COUNTIF($B$9:$B$50; "<"&$B$9:$B$50)/((COUNTIF(F$8:F8; $B$9:$B$50)=0)/($C$9:$C$50=F$8)/($B$9:$B$50<>"")); 1); INDEX(COUNTIF($B$9:$B$50; "<"&$B$9:$B$50);0); 0));"")

Прикрепленные файлы

  • Book1.xlsx (19.74 КБ)

 
memo

, спасибо большое!

Теперь предстоит в этом разобраться.

 

memo

Пользователь

Сообщений: 1423
Регистрация: 28.02.2018

Excel 2013/2016

#30

22.02.2021 12:57:14

Дмитрий Левин,
Та формула отсекает дубликаты и сортирует список. Если этого не требуется, то можно попроще.

Код
=IFERROR(INDEX($B$9:$B$50;AGGREGATE(15;6;ROW($A$1:$A$50)/(($C$9:$C$50=F$8)/($B$9:$B$50<>"")); ROW(A1)));"")

Прикрепленные файлы

  • Book1.xlsx (19.63 КБ)

Изменено: memo22.02.2021 12:57:30

history 24 апреля 2013 г.
    Группы статей

  • Вывод отобранных значений в отдельный диапазон
  • Отбор строк в таблице
  • Пустые ячейки


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

Пусть имеется список с

пустыми

ячейками (столбец

А

).

Задача

Убрать пустые ячейки из списка, сформировав формулами список в соседнем столбце. То есть под словом «убрать» будем понимать не удаление значения из исходного списка, а формирование еще одного списка, но уже без лишних символов. Чтобы действительно убрать значения из списка нужно использовать макросы — программу на VBA.

Решение

Для избавления от пустых ячеек запишем в ячейке

B2

формулу массива

и скопируем ее вниз (см. файл примера): =ЕСЛИОШИБКА(ДВССЫЛ(«A»&НАИМЕНЬШИЙ(ЕСЛИ(ЕПУСТО($A$2:$A$14);»»;СТРОКА($A$2:$A$14));СТРОКА(A1)));»»)

Получим в соседнем столбце

B

список со значениями из исходого, но уже без пропусков. Формула работает одинакового и для текстовых значений и для чисел. Алгоритм работы формулы следующий:

  • ЕСЛИ(ЕПУСТО($A$2:$A$14);»»;СТРОКА($A$2:$A$14)) – если ячейка не пуста, то эта часть формулы возвращает номер строки. То есть формируется массив номеров строк, НЕ содержащих пустоты {2:»»:4:5:6:»»:»»:9:10:»»:»»:13:14} На месте пустых ячеек в массиве будет символ «» (пустой текст), но можно его заменить в формуле на любую текстовую строку, например «ккк». Проверить результат можно выделив эту часть формулы и нажав

    клавишу

    F9

    ;

  • Функция НАИМЕНЬШИЙ() сортирует массив строк по возрастанию. В сортированном списке сначала будут идти номера строк затем значения «», т.к. в EXCEL считается, что любое текстовое значение больше любого числа (значение пустой текст — текстовое значение);
  • Далее для функции ДВССЫЛ() формируются адреса ячеек с непустыми значениями. Например, ДВССЫЛ(«A»&2) возвращает значение из ячейки

    А2

    . Для пустых ячеек будет формироваться ошибочные адреса ячеек, состоящие только из символа А. Это вызовет ошибку после применения функции ДВССЫЛ();
  • Функция ЕСЛИОШИБКА() вместо ошибки будет возвращать «». Этот символ не отображается в ячейке и ячейка выглядит пустой.

На самом деле в соседнем столбце

B

список будет отличаться не только тем, что в нем значения будут идти подряд без пропусков. Если в исходном списке пустые ячейки действительно не содержали ничего, то в новом списке в пустых ячейках будут значения Пустой текст «». Хотя внешний вид пустых ячеек из обоих списков будет неотличим, но формулы увидят разницу. То есть, если Вы планируете делать дальнейшие манипуляции с новым списком, то имейте ввиду, что теперь пустые ячейки в конце списка теперь не совсем пусты — они содержат текстовое значение «». Подробнее про это специфическое значение читайте

здесь

.

Изменим немного формулу: =ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ( ЕПУСТО($A$2:$A$14);»»;$A$2:$A$14);СТРОКА(A1));»»)

Получим тот же список, но еще и

сортированный

по возрастанию (работает только для чисел).

Список также можно сформировать в столбце С другой

формулой массива

:

=ЕСЛИОШИБКА(ДВССЫЛ(«A»&НАИМЕНЬШИЙ(ЕСЛИ(ЕПУСТО(СписокСпропусками);»»;СТРОКА(СписокСпропусками));СТРОКА()-СТРОКА($C$1)));»»)


СписокСпропусками

в формуле — это

динамический диапазон

, который образован формулой:

=СМЕЩ($A$2;;;ДлинаСпискаСпропусками)


Длину списка с пропусками

можно вычислить с помощью формулы:

=ПОИСКПОЗ(ПОВТОР(«я»;10);$A$2:$A$14;1)


СОВЕТ:

Для удаления и выделения пустых строк и ячеек традиционными средствами EXCEL, пользуйтесь идеями из статей

Удаляем пустые строки в таблице

и

Выделение группы ячеек

. О том, что EXCEL понимает под пустыми ячейками, читайте в статье

Подсчет пустых ячеек

.

Удаляем заданные символы из списка

Часто в списке присутствуют ненужные для дальнейшего анализа значения, например 0 (нуль).

Немного модернизировав вышеуказанную формулу получим универсальный подход для удаления вообще любого символа, числа или текстовой строки из исходного списка (см. файл примера, в котором на листе Произвольный символ приведена универсальнаяформула).

Пусть исходный список находится в диапазоне A12:A24, а в ячейке B6 содержится значение которое нужно удалить из ячеек списка.

=ЕСЛИОШИБКА(ДВССЫЛ(«A»&НАИМЕНЬШИЙ(ЕСЛИ($A$12:$A$24=$B$6;»»;СТРОКА($A$12:$A$24));СТРОКА()-СТРОКА($A$11)));»»)

Единственным отличием является выражение $A$12:$A$24=$B$6, которое заменило формулу с ЕПУСТО(…)

Теперь если значение в исходном списке не равно искомому значению, то вместо него будет выведено значение «» (в конце списка).

Есть столбец «А» с данными, но данные идут не подряд, а вразнобой, т.е. 1 ячека с данными следующие 4 пустые, затем опять с данными, следующие 3 пустые и т.д. закономерности нет. Нужна формула, чтобы например эти данные копировались в соседний столбец «B» и причём без пустот — друг за другом, т.е. формулой можно заполнить весь диапазон столбца «B» и когда появляется в столбце «А» следующее значение, то оно сразу копируется в «B», но только друг за другом без пустых строк.
Заранее спасибо.


Данные текстовые или числовые? Возможен ли перенос в отсортированном порядке (если числа)?

Webmoney: E350157549801 Z116603216205 R268084006579


Это проделать хотелось бы с датой и со значениями формул. Т.е. если точнее, то колонка с датами (они в разнобой), напротив этих дат ячейки со значениями получаемых в результате формул (они параллельны датам)

«А»        «D»
дата    формула
3 пустые строки
дата    формула
4 пустые строки
дата    формула

и т.д.

Нужно что бы они попадали на другой лист, все вместе в этом же порядке, но без пустых строк:
«А»       «B»
дата    значение взятое из формулы на первом листе
дата    значение взятое из формулы на первом листе
дата    значение взятое из формулы на первом листе



или так — ставим фильтр на колонку А раскрываем фильтр, убираем галочку «Выделить все» идем вниз списка фильтра, ставим галочку у «пустые», нажимаем OK выделяем все строки и из контекстного меню вызываем «удалить строку». Все пустые строки при этом будут удалены.


На первом листе с данными:
«А»        «D»
дата    формула
3 пустые строки
дата    формула
4 пустые строки
дата    формула

трогать и удалять пустые строки нельзя, дело в том что они не совсем пустые — между колонками «А», «D» есть ещё колонки «B» и «C», а они не пустые, ячейки которые пусты, они пусты, только в колонках «А» и «D». Фильтр тут не поможет, данные нужны на другом листе идущие без пустых ячеек не для того чтобы их лицезреть, а там будет целая таблица расчётов, колонки «А» и «С» на другом листе будут являться началом таблицы.
http://narod.ru/disk/23582366000/home.zip.html
Прилагаю файл, участвуют в выше сказанном «Лист1» и «Лист3». В этом файле много не решенных задач и вопросов куча, но этот на данный момент самый приоритетный. Решил как-то дозировано разобраться. Сразу скажу — это не для учёбы и каких-то там курсовых :)



Пытаюсь понять принцип работы формулы. Вроде прикольно, но дополнительный столбец очень не кстати, получается его ещё нужно ручками забивать числами на единицу большими предыдущей даты.
На листе3 пытался формулу распространить на весь столбец — не выходит. Не могу понять — почему? 


С помощью небольшого макроса попробуйте

Не торопись, и все успеешь намного быстрее


Я использую такую формулу массива:

={ИНДЕКС($A$1:$A$1000;НАИМЕНЬШИЙ(ЕСЛИ($A$1:$A$1000=»»;66000;СТРОКА($A$1:$A$1000));СТРОКА());1)}

На картинке видно что и где…


Да и формула выдает #ССЫЛКА!, когда заканчиваются исходные данные и далее идут одни пустые ячейки, можно в самой формуле это предусмотреть (тогда она станет больше), но мне, например, проще удалить ошибки. В пользу производительности т.с.


Цитата: lema от 10.08.2010, 10:40
Пытаюсь понять принцип работы формулы. Вроде прикольно, но дополнительный столбец очень не кстати, получается его ещё нужно ручками забивать числами на единицу большими предыдущей даты.
На листе3 пытался формулу распространить на весь столбец — не выходит. Не могу понять — почему? 

Цитата: sergo44441 от 10.08.2010, 10:54
С помощью небольшого макроса попробуйте

вообщето на листе 1 незнаю зачем написал еще условие с если

там просто можно СЧЕТЗН()

а вот что значит распространить на весь столбец? ну берем и копируем. если значение не найдено возвращается ошибка, которую можно скрыть с помощью ЕСЛИОШИБКА (2007 офис) или ЕОШИБКА (2003)

а там смотрите сами


Цитироватьа вот что значит распространить на весь столбец

Да мелочь — в смысле выделяю ячейку с формулой, затем выделяю весь столбец и вставляю — получается одинаковая дата во всех столбцах, а если выделил формулу и вставил ручками в выбранное кол-во ячеек(которые ниже идут) то всё нормально. Кстати, оказывается достаточно в первом столбце только напротив даты цифры ставить, а это уже здорово. Я грешным делом подумал, что до следующей даты всё забито должно быть одинаковой цифрой.
Сейчас «поиграюсь» с тем что уважаемый Василий написал. Посмотрю что получится



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


А это из файла который я выложил выше:
«D2» считает сумму С3:С6 и далее по такому же принципу. В колонке D хотелось размножить некую формулу на весь столбец. Количество значений в колонке С всё время разное, т.е. не стабильно. Вот вбиваю я значения ручками в колонке С, а в ячейке точно напротив даты в колонке D (те что помечены голубым) выводится их сумма. Диапазон получается почти всё время разный (до пустой ячейки). Обычно приходится становится в ячейку голубую, нажимать сумму и выделять диапазон — всё руками.


С помощью макроса можно такое сделать

Не торопись, и все успеешь намного быстрее


Цитата: sergo44441 от 10.08.2010, 17:50
С помощью макроса можно такое сделать

Да я вних ни чего не смыслю, думал за счёт формул. Макросы даже когда пишут на форумах, я не знаю куда их пихать и что сними делать :o


а с помощью формул массива — вот так.
Если же Вы решитесь заменить пробелы между рядами чисел любым наперед известным символом, то формулу можно будет еще больше упростить и отказаться от необходимости использовать формулу-массива — можно будет использовать функцию ПОИСКПОЗ(Символ,СМЕЩ(…),0)
P.S. Да, у функции есть ограничение — если ряд чисел может быть более 100, то в функцию необходимо внести корректировку в этом месте: ДВССЫЛ(«1:100«)


Т.е. в ручную придётся какой-то символ параллельно вбивать? Если так то получается + на —
Не шибко это прибавит функциональности. Или я недопонял?


Такой вариант:

=ЕСЛИ((B1=»»)*(B2<>»»);СУММ(B2:ИНДЕКС(B2:B100;ПОИСКПОЗ(«»;B2:B100&»»;)));»»)

Массив

Webmoney: E350157549801 Z116603216205 R268084006579


Цитата: kimtan от 11.08.2010, 01:23
Такой вариант:
=ЕСЛИ((B1=»»)*(B2<>»»);СУММ(B2:ИНДЕКС(B2:B100;ПОИСКПОЗ(«»;B2:B100&»»;)));»»)

В точку! Только в моём варианте если точно, вот так выглядит:
{=ЕСЛИ((C2=»»)*(C3<>»»);СУММ(C3:ИНДЕКС(C3:C100;ПОИСКПОЗ(«»;C3:C100&»»;)));»»)}
Всё чётко работает. :)
Спасибо большое!


Понравилась статья? Поделить с друзьями:
  • Как пропускать пустые ячейки в excel в формуле
  • Как пропорционально уменьшить сумму в excel
  • Как пропорционально разделить сумму по отношению к числам excel
  • Как пропорционально изменить размеры вставленного в excel рисунка
  • Как пропорционально изменить размер вставленного в excel рисунка