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
Здравствуйте, профессионалы! Заранее огромное Вам спасибо! Прикрепленные файлы
|
|
Проблема ещё заключается в том, что ячейки эти(строки) будут не совсем пустые. Они будут с формулами. {=ЕСЛИОШИБКА(ДВССЫЛ(«A»&НАИМЕНЬШИЙ(ЕСЛИ(ЕПУСТО($A$2:$A$14);»»;СТРОКА($A$2:$A$14));СТРОКА(A2)));»»)} — не подходит!(она если в строке находит формулу — не считает её пустой. Хотя ЗНАЧЕНИЕ строки — пустота. |
|
можно присвоить (по формуле) этим ячейкам(строкам) значение 0. |
|
формула эта(вышеприведенная) не моя. но насколько я смог её понять — надо в ней заменить ЕПУСТО на ЕСЛИ <>0. просто надо немного изменить условия(исключить все ячейки с 0). для того чтобы это сделать — моих мозгов гуманитарных не хватит… |
|
k61 Пользователь Сообщений: 2441 |
Здравствуйте. |
Это просто таблица сделанная для образца. вот ещё раз — уже измененная. Прикрепленные файлы
|
|
k61 Пользователь Сообщений: 2441 |
|
Да, вы правильно меня поняли! спасибо Вам за это решение! А можно этот процесс автоматизировать? чтобы всё происходило само? (как по формулам) Спасибо Вам! |
|
просто мне нужно будет эту формулу знать, чтобы я мог её переносить в другую — уже рабочую таблицу книги. |
|
k61 Пользователь Сообщений: 2441 |
#10 20.02.2014 05:19:38
По какому событию автоматизировать?
Нет там формулы. Правая кнопка мыши на ярлыке листа — Исходный текст — там макрос проживает Sub www(). P.S. Какая боль, какая боль, Макрос — Формула — 1 :0 ! (ковер на песню) Изменено: k61 — 20.02.2014 05:23:33 |
||||
мне нужно чтобы всё считалось само — без кнопок. |
|
Nic70y Пользователь Сообщений: 3289 Win7 MSO 2013 |
#12 21.02.2014 01:01:26
формула массива. формулы массива очень массивные! чем Вас макрос не устроил? Прикрепленные файлы
Изменено: Nic70y — 21.02.2014 01:08:37 |
||
Nic70y,СПАСИБО ВАМ!!!! |
|
k61 Пользователь Сообщений: 2441 |
#14 21.02.2014 04:23:48
Вопрос остался. |
||
dmitryalexeevich Пользователь Сообщений: 18 |
#15 21.02.2014 07:03:18 k61,почему? формула считает всё, даже при изменении значений в ячейках.
процесс автоматизирован. |
||
Z Пользователь Сообщений: 6111 Win 10, MSO 2013 SP1 |
#16 21.02.2014 07:39:10 Off — Улыбнуло:
«Ctrl+S» — достойное завершение ваших гениальных мыслей!.. |
||||
greatsky Пользователь Сообщений: 73 |
Доброго времени суток, а как сделать так чтобы было тоже самое только сразу было 3 столбца. то есть примере 19201 были еще данные в других столбцах, данные параллельные,если есть с столбце A то в этой же строке есть и в B, создавать ошибку пож каждый столбец не вариант, я хочу уменьшить размер файла а строк 56 000, из них основная масса бесполезных нулей, если бы взять написать макрос, не обязательно должен быть автоматизированным, проще нажать кнопку обновить. у меня имеется целая куча однотипных диапазонов на разных листах, из них практически все пустые. так как формула рассчитывает там ноль. даже не ноль а пусто ***** «» *****, проще говоря мне из A1xA5600 на разных листах, причем на одном A25xA5600, на другом и CW1xCW15600? выбрать не пустые ячейки и выбросить их все на одном листе |
Михаил С. Пользователь Сообщений: 10514 |
#18 06.08.2016 00:41:15
Для начала создать свой пример, что есть, что надо и желательно как можно ближе к оригиналу. |
||
greatsky Пользователь Сообщений: 73 |
Это не коммерческий проект, делаю для себя расчет, есть таблицы Данные1….. ДанныеN (около сорока) на разных листах и разбросаны хаотично, но все данные одинаковые (по шапке) , имеются две задачи, первая собрать данные из таблиц (Данные1….. ДанныеN) и вывести на лист «результат», поочередно, пропускай пустые строки (пустые они условно, там и нули и пусто и «», так как они тоже рассчитываются экселем, выводя результат то 0, то пусто) вторая задача стоит тоже самое, но выполнить группировку по Крепежная фурнитура, чтобы считало итоговое количество, но можно было развернуть и посмотреть в каких ящиках, самая главная задача это первая, так как таблиц много, и результат простого копирования Лист1!B1=Листс2!B3 является большой вес файлом и я жду минут пять покуда он откроется, можно макросом, я создам кнопку обновить, да и самое важное, что данные могут меняться, поэтому просто удалять из тех огромных таблиц, данные не вариант Прикрепленные файлы
Изменено: greatsky — 06.08.2016 10:54:21 |
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
greatsky, а в чём сложность? Пишите макрос. Алгоритм следующий: <#0> |
greatsky Пользователь Сообщений: 73 |
Такой сложный макрос я не осилю никогда. все что я могу готовый макрос чуть подредактировать, по логике — это максимум Изменено: greatsky — 06.08.2016 12:55:31 |
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
greatsky, уверяю Вас — осилите. На форуме примеров масса, по каждому пункту можете в любом поисковике задать вопрос «вба как …», где … — Ваш вопрос. Если лень самостоятельно разобраться, тогда Вам помогут в ветке «работа», либо обождите того у кого настроение волонтёра. (у меня отнюдь не волонтёрское настроение на данный момент) <#0> |
greatsky Пользователь Сообщений: 73 |
Да, конечно, вы не чем мне не обязаны) подождем, я пробовал — мои познания в VB 0 я пробовал и чуть попроще и без помощи не обошелся Изменено: greatsky — 06.08.2016 13:02:23 |
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
#24 06.08.2016 13:26:50
<#0> |
||
greatsky Пользователь Сообщений: 73 |
Спасибо, сейчас буду пробовать, отпишусь как смогу встроить, так как я и встраивать буду целый день) |
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
greatsky,
ЗЫ Не, показалось. Изменено: JayBhagavan — 06.08.2016 13:32:24 <#0> |
greatsky Пользователь Сообщений: 73 |
#27 06.08.2016 13:33:43
предпоследняя строчка туда скопировать другой лист? (как бы цикл) |
||
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
greatsky, With к циклам не имеет никакого отношения. <#0> |
greatsky Пользователь Сообщений: 73 |
В примере работает круто, но в примере я все упростил, если на листе еще будут другие данные. он их не подтянет? и как еще ограничить ему, к примеру на листе идут
заполненные и пустые ячейки
заполненные и пустые ячейки они параллельны. как сделать так чтобы не брал другую фурнитуру И еще вопрос, я так понял все листы должны быть одного имени, ну или начинаться с одного имени можно так ДанныеВН1, ДанныеВК5, он все после звездочки воспримет правильно? верно? Изменено: greatsky — 06.08.2016 13:53:23 |
||||||||||
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
#30 06.08.2016 13:56:52
<#0> |
||
Есть столбец «А» с данными, но данные идут не подряд, а вразнобой, т.е. 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
С помощью макроса можно такое сделать
Да я вних ни чего не смыслю, думал за счёт формул. Макросы даже когда пишут на форумах, я не знаю куда их пихать и что сними делать
а с помощью формул массива — вот так.
Если же Вы решитесь заменить пробелы между рядами чисел любым наперед известным символом, то формулу можно будет еще больше упростить и отказаться от необходимости использовать формулу-массива — можно будет использовать функцию ПОИСКПОЗ(Символ,СМЕЩ(…),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&»»;)));»»)}
Всё чётко работает.
Спасибо большое!
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 / 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 |
||||
Непонятно, зачем. Если потом с этими данными будет работать какая-то формула, то она просто пропустит пустые ячейки. На самом деле мне нужен был принцип, всё выглядит несколько сложнее. Я уже нашел решение более подробно это можно узнать на другом форуме:
Добавлено через 1 час 54 минуты ссылки на посторонние форумы запрещены. если несложно, можно выложить саму суть решения? Ух, я думал все форумы програмистов — братья )
1 |