Эксель пропустить пустые ячейки вставка макрос
Здравствуйте. Всем добра и счастья.
Буду краток: есть макрос, не могу понять, где и что написать, что бы пропускало пустые ячейки:
[vba]
Function ОбъединитьСРазделителем(Разделитель As String, ParamArray Значения()) As String
Dim result As String, arg, rc As Range
For Each arg In Значения
Select Case TypeName(arg)
Case "Range" 'это диапазон
'цикл по всем ячейкам
For Each rc In arg.Cells
If result = "" Then
result = rc.Value
Else
result = result & Разделитель & rc.Value
End If
Next
End Select
Next
ОбъединитьСРазделителем = result
End Function
Здравствуйте. Всем добра и счастья.
Буду краток: есть макрос, не могу понять, где и что написать, что бы пропускало пустые ячейки:
[vba]
Function ОбъединитьСРазделителем(Разделитель As String, ParamArray Значения()) As String
Dim result As String, arg, rc As Range
For Each arg In Значения
Select Case TypeName(arg)
Case "Range" 'это диапазон
'цикл по всем ячейкам
For Each rc In arg.Cells
If result = "" Then
result = rc.Value
Else
result = result & Разделитель & rc.Value
End If
Next
End Select
Next
ОбъединитьСРазделителем = result
End Function
Function ОбъединитьСРазделителем(Разделитель As String, ParamArray Значения()) As String
Dim result As String, arg, rc As Range
For Each arg In Значения
Select Case TypeName(arg)
Case "Range" 'это диапазон
'цикл по всем ячейкам
For Each rc In arg.Cells
If result = "" Then
result = rc.Value
Else
result = result & Разделитель & rc.Value
End If
Next
End Select
Next
ОбъединитьСРазделителем = result
End Function
Function ОбъединитьСРазделителем(Разделитель As String, ParamArray Значения()) As String
Dim result As String, arg, arr As Variant, rc As Variant
For Each arg In Значения
Select Case TypeName(arg)
Case "Range" 'это диапазон
arr = IIf(arg.Count > 1, arg.Value, Array(arg.Value))
Case "Variant()" 'это массив
arr = arg
Case Else
arr = Array(arg)
End Select
'цикл по всем значениям массива
For Each rc In arr
If Not IsEmpty(rc) And rc <> "" Then
result = result & IIf(result <> "", Разделитель, "") & rc
End If
Next rc, arg
ОбъединитьСРазделителем = result
End Function
Function ОбъединитьСРазделителем(Разделитель As String, ParamArray Значения()) As String
Dim result As String, arg, arr As Variant, rc As Variant
For Each arg In Значения
Select Case TypeName(arg)
Case "Range" 'это диапазон
arr = IIf(arg.Count > 1, arg.Value, Array(arg.Value))
Case "Variant()" 'это массив
arr = arg
Case Else
arr = Array(arg)
End Select
'цикл по всем значениям массива
For Each rc In arr
If Not IsEmpty(rc) And rc <> "" Then
result = result & IIf(result <> "", Разделитель, "") & rc
End If
Next rc, arg
ОбъединитьСРазделителем = result
End Function
Function ОбъединитьСРазделителем(Разделитель As String, ParamArray Значения()) As String
Dim result As String, arg, arr As Variant, rc As Variant
For Each arg In Значения
Select Case TypeName(arg)
Case "Range" 'это диапазон
arr = IIf(arg.Count > 1, arg.Value, Array(arg.Value))
Case "Variant()" 'это массив
arr = arg
Case Else
arr = Array(arg)
End Select
'цикл по всем значениям массива
For Each rc In arr
If Not IsEmpty(rc) And rc <> "" Then
result = result & IIf(result <> "", Разделитель, "") & rc
End If
Next rc, arg
ОбъединитьСРазделителем = result
End Function
У krosav4ig правильный полноценный макрос, учитывающий кучу вариантов. Если же только Ваш код доделать, то можно, например, так
[vba]
Function ОбъединитьСРазделителем(Разделитель As String, ParamArray Значения()) As String
Dim result As String, arg, rc As Range
For Each arg In Значения
For Each rc In arg.Cells
If rc <> "" Then
result = result & Разделитель & rc.Value
End If
Next
Next
ОбъединитьСРазделителем = Mid(result, Len(Разделитель) + 1)
End Function
У krosav4ig правильный полноценный макрос, учитывающий кучу вариантов. Если же только Ваш код доделать, то можно, например, так
[vba]
Function ОбъединитьСРазделителем(Разделитель As String, ParamArray Значения()) As String
Dim result As String, arg, rc As Range
For Each arg In Значения
For Each rc In arg.Cells
If rc <> "" Then
result = result & Разделитель & rc.Value
End If
Next
Next
ОбъединитьСРазделителем = Mid(result, Len(Разделитель) + 1)
End Function
Function ОбъединитьСРазделителем(Разделитель As String, ParamArray Значения()) As String
Dim result As String, arg, rc As Range
For Each arg In Значения
For Each rc In arg.Cells
If rc <> "" Then
result = result & Разделитель & rc.Value
End If
Next
Next
ОбъединитьСРазделителем = Mid(result, Len(Разделитель) + 1)
End Function
krosav4ig, спасибо за оперативный ответ, единственное, что получилось - ячейки объединяются с верху в низ, и переходили в право на следующий столбец и так далее. В изначальном скрипте - ячейки объединяются с лева на право, и по ходу в низ. Однозначно ваш вариант в копилку. Спасибо!
krosav4ig, спасибо за оперативный ответ, единственное, что получилось - ячейки объединяются с верху в низ, и переходили в право на следующий столбец и так далее. В изначальном скрипте - ячейки объединяются с лева на право, и по ходу в низ. Однозначно ваш вариант в копилку. Спасибо! yurikfirst
Как известно, для полноценной работы с данными (фильтрации, сортировки, подведения итогов и т.д.) нужен непрерывный список, т.е. таблица без разрывов (пустых строк и ячеек - по возможности). На практике же часто мы имеем как раз таблицы с пропущенными пустыми ячейками - например после копирования результатов сводных таблиц или выгрузок в Excel из внешних программ. Таким образом, возникает необходимость заполнить пустые ячейки таблицы значениями из верхних ячеек, то бишь.
из | сделать |
В общем случае, может возникнуть необходимость делать такое заполнение не только вниз, но и вверх, вправо и т.д. Давайте рассмотрим несколько способов реализовать такое.
Способ 1. Без макросов
Выделяем диапазон ячеек в первом столбце, который надо заполнить (в нашем примере, это A1:A12).
Нажимаем клавишу F5 и затем кнопку Выделить (Special) и в появившемся окне выбираем Выделить пустые ячейки (Blanks) :
Не снимая выделения, вводим в первую ячейку знак "равно" и щелкаем по предыдущей ячейке или жмём стрелку вверх (т.е. создаем ссылку на предыдущую ячейку, другими словами):
И, наконец, чтобы ввести эту формулу сразу во все выделенные (пустые) ячейки нажимаем Ctrl + Enter вместо обычного Enter . И все! Просто и красиво.
В качестве завершающего мазка я советовал бы заменить все созданные формулы на значения, ибо при сортировке или добавлении/удалении строк корректность формул может быть нарушена. Выделите все ячейки в первом столбце, скопируйте и тут же вставьте обратно с помощью Специальной вставки (Paste Special) в контекстом меню, выбрав параметр Значения (Values) . Так будет совсем хорошо.
Способ 2. Заполнение пустых ячеек макросом
Если подобную операцию вам приходится делать часто, то имеем смысл сделать для неё отдельный макрос, чтобы не повторять всю вышеперечисленную цепочку действий вручную. Для этого жмём Alt + F11 или кнопку Visual Basic на вкладке Разработчик (Developer) , чтобы открыть редактор VBA, затем вставляем туда новый пустой модуль через меню Insert - Module и копируем или вводим туда вот такой короткий код:
Как легко можно сообразить, этот макрос проходит в цикле по всем выделенным ячейкам и, если они не пустые, заполняет их значениями из предыдущей ячейки.
Для удобства, можно назначить этому макросу сочетание клавиш или даже поместить его в Личную Книгу Макросов (Personal Macro Workbook), чтобы этот макрос был доступен при работе в любом вашем файле Excel.
Способ 3. Power Query
Power Query - это очень мощная бесплатная надстройка для Excel от Microsoft, которая может делать с данными почти всё, что угодно - в том числе, легко может решить и нашу задачу по заполнению пустых ячеек в таблице. У этого способа два основных преимущества:
- Если данных много, то ручной способ с формулами или макросы могут заметно тормозить. Power Query сделает всё гораздо шустрее.
- При изменении исходных данных достаточно будет просто обновить запрос Power Query. В случае использования первых двух способов - всё делать заново.
Для загрузки нашего диапазона с данными в Power Query ему нужно либо дать имя (через вкладку Формулы - Диспетчер имен), либо превратить в "умную" таблицу командой Главная - Форматировать как таблицу (Home - Format as Table ) или сочетанием клавиш Ctrl + T :
После этого на вкладке Данные (Data) нажмем на кнопку Из таблицы / диапазона (From Table/Range) . Если у вас Excel 2010-2013 и Power Query установлена как отдельная надстройка, то вкладка будет называться, соответственно, Power Query.
В открывшемся редакторе запросов выделим столбец (или несколько столбцов, удерживая Ctrl ) и на вкладке Преобразование выберем команду Заполнить - Заполнить вниз (Transform - Fill - Fill Down) :
Вот и всё :) Осталось готовую таблицу выгрузить обратно на лист Excel командой Главная - Закрыть и загрузить - Закрыть и загрузить в. (Home - Close&Load - Close&Load to. )
В дальнейшем, при изменении исходной таблицы, можно просто обновлять запрос правой кнопкой мыши или на вкладке Данные - Обновить всё (Data - Refresh All) .
Некоторые из Вас, должно быть, обратили внимание на такой инструмент Excel как Paste Special (Специальная вставка). Многим, возможно, приходилось испытывать недоумение, если не разочарование, при копировании и вставке данных в Excel. Вы вставляли данные и получали совсем не то, что ожидали получить. Я покажу Вам некоторые интересные трюки с использованием Специальной вставки и расскажу, как использовать некоторые полезные возможности этого инструмента, чтобы данные всегда выглядели именно так, как нужно.
После прочтения этой статьи Вы научитесь транспонировать, удалять ссылки и пропускать пустые ячейки при помощи инструмента Paste Special (Специальная вставка). После каждого раздела приведено краткое пошаговое резюме. Пользуйтесь ссылками быстрого доступа или распечатайте эти резюме на бумаге, поместите рядом с компьютером и используйте их как удобную инструкцию. Ну что ж, приступим!
Если Вы хотите при помощи инструмента Paste Special (Специальная вставка) научиться вставлять только значения или форматирование, копировать ширину столбцов, умножать и делить данные на заданное число, а также прибавлять и удалять значение сразу из целого диапазона ячеек обратитесь к статье Специальная вставка в Excel: значения, форматы, ширина столбцов .
Базовые знания о Специальной вставке
Прежде чем воспользоваться инструментом Paste Special (Специальная вставка), Вы должны иметь что-то в буфере обмена, иначе, при попытке использовать эти функции, они будут серого цвета и не активны, как на рисунке ниже.
Первым делом Вы должны скопировать данные в буфер обмена, иначе не сможете воспользоваться функцией Специальная вставка. На рисунке видно, что на Ленте и в контекстном меню, инструмент Paste Special (Специальная вставка) не активен:
Сначала Вы должны выбрать и скопировать любую информацию. После этого действия Excel хранит скопированные данные в буфере обмена. Теперь Вы можете использовать Специальную вставку. Есть два способа вызвать эту функцию. Оба открывают диалоговое окно Paste Special (Специальная вставка), которое предоставляет доступ к целому набору полезных настроек (см. рисунок ниже).
Воспользуйтесь одним из следующих способов:
- На вкладке Home (Главная) нажмите на маленький треугольник под словом Paste (Вставить) и в выпадающем меню выберите Paste Special (Специальная вставка).
- Щелкните правой кнопкой мыши, а затем в контекстном меню выберите Paste Special (Специальная вставка).
Заметьте, что после того, как Вы скопировали данные, Специальная вставка становится доступной.
Преобразуем столбцы в строки (или наоборот)
Оставим позади основы и давайте немного взбодримся. В следующем примере будем использовать таблицу, созданную для контроля калорий во время диеты. Допустим, таблица Вас устраивает, но не нравится, что наименования продуктов расположены вертикально. Хотелось бы расположить дни недели вертикально, а наименования продуктов – в строке. Другими словами, Вы хотите транспонировать эти данные.
Для этого выделяем данные, копируем их, ставим курсор в нужную ячейку, открываем меню инструмента Paste Special (Специальная вставка) и выбираем Transpose (Транспонировать) – все это показано на изображениях ниже. Видите, как просто сделать таблицу такой, как Вы хотите? Представьте себе все возможности, которые дает инструмент Transpose (Транспонировать).
Первый пример транспонирования таблицы:
Другое применение транспонирования, которое мне очень нравится, – это копирование данных из какого-либо источника и добавление их в текущую таблицу. Это отличный способ собирать воедино и приводить в соответствие данные из двух различных источников. Все данные будут выглядеть единообразно, и Вы с легкостью сможете настроить формулы.
Например, Вам в руки попадает вот такой шаблон (смотрите ниже), предоставленный компанией, чтобы заполнить отчёт о расходах при посещении конференции.
Однако, на конференции, которую Вы посещали, был предоставлен электронный отчёт в таком виде:
Просто скопируйте нужную информацию (в нашем случае B1:B11), поместите курсор в ячейку, в которую Вы хотите вставить эту информацию (ячейка C3 в шаблоне), нажмите Paste Special (Специальная вставка), а затем выберите опцию Transpose (Транспонировать). Вот что получится:
Отлично! Теперь вся информация выглядит единообразно, и Вы можете продолжать добавлять строки для всех совершаемых Вами поездок.
Транспонировать – кратко о главном
- Выберите данные.
- Скопируйте выбранные данные. Команда Cut (Вырезать) не позволит использовать Специальную вставку, поэтому воспользуйтесь именно командой Copy (Копировать).
- Поместите курсор в ячейку, в которую нужно вставить данные.
Замечание: Убедитесь, что имеется достаточно места для вставки данных. Не выделяйте всю строку или столбец, если не располагаете достаточным количеством свободного места. Убедитесь, что новые данные не будут записаны поверх существующих и нужных Вам.
- Нажмите PasteSpecial (Специальная вставка). Это можно сделать 2-мя путями:
- Щелкните правой кнопкой мыши и выберите в контекстном меню Paste Special (Специальная вставка).
- На вкладке Home (Главная) под командой Paste (Вставить) нажмите маленький треугольник и в открывшемся меню выберите Paste Special (Специальная вставка).
Удаляем гиперссылки (много и быстро)
Это было весело! Теперь давайте попробуем другую интересную функцию Специальной вставки. Этот трюк особенно полезен, когда требуется вставить текст, насыщенный гиперссылками. Гиперссылки иногда попадаются под руку в процессе работы с данными в Excel. Обратите внимание на синий подчёркнутый текст на рисунке ниже. В каждой ячейке столбца A содержится гиперссылка. Каждый раз, когда Вы кликаете по ячейке, компьютер открывает гиперссылку. Вы можете щелкать правой кнопкой мыши по каждой ячейке и выбирать команду Remove hyperlink (Удалить гиперссылку), но это займёт целую вечность. Представьте, если в Вашей таблице содержится 2000 строк и 1000 столбцов.
Вместо этого Вы можете использовать возможности Специальной вставки, чтобы удалить все эти гиперссылки разом. Готовы? Выделите все ячейки, из которых нужно удалить гиперссылки, и скопируйте их. Поместите курсор в новую ячейку.
Можно попробовать вставить скопированные данные в те же ячейки, но в таком случае Excel может сохранить синий цвет и подчёркивание шрифта. Если это произошло, просто очистите формат.
Нажмите Paste Special (Специальная вставка). В появившемся одноименном диалоговом окне выберите пункт Values (Значения) и нажмите ОК. После этого все гиперссылки будут удалены, и Вы сможете переместить данные на их исходное место. Очень просто, правда? Посмотрите на рисунки ниже, там показано пошаговое выполнение этой операции.
Быстрое удаление гиперссылок – кратко о главном
- Выделите все ячейки, из которых требуется удалить гиперссылки.
- Скопируйте их.
- Поставьте курсор в ячейку, куда необходимо вставить скопированные данные.
- Нажмите Paste Special (Специальная вставка).
- Выберите пункт Values (Значения).
- Нажмите ОК.
- Вырежьте и вставьте ячейки в любое нужное Вам место.
Пропускаем пустые ячейки
Вот ещё один пример (смотрите ниже). Допустим, у меня есть список дней рождения членов семьи и я хочу заменить название члена семьи его настоящим именем (из моего семейного списка контактов). Вы могли бы скопировать и вставить каждую ячейку на нужное место по отдельности, но это займёт очень много времени (особенно, если список длинный). Попробуем это сделать при помощи Специальной вставки.
Обычная команда Paste (Вставить) тут не поможет. Почему? – видно на рисунке ниже. Если Вы скопируете информацию (A6:A19) и вставите в ячейку E4, то эти приставучие пустые ячейки из столбца A будут записаны поверх данных в столбце E, которые Вы хотели бы сохранить. Не желаете ли узнать способ способный пропустить пустые ячейки?
Для этого скопируйте ячейки A5:A19, затем поместите курсор в первую ячейку области, куда необходимо вставить скопированные данные (E4). Далее нажмите Paste Special (Специальная вставка), поставьте галочку на опции Skip Blanks (Пропускать пустые ячейки) и нажмите ОК. Вуаля! Вы успешно скопировали данные из столбца A в столбец E, сохранив все нужные данные. Отличная работа! Это простой пример, но он показывает все возможности, которые открывает для Вас и Ваших таблиц инструмент Skip Blanks (Пропускать пустые ячейки).
Пропускаем пустые ячейки – кратко о главном
- Выберите данные, которые хотите скопировать.
- Скопируйте их.
- Поместите курсор в начальную ячейку области, в которую хотите скопировать.
- Нажмите Paste Special (Специальная вставка).
- Выберите Skip Blanks (Пропускать пустые ячейки).
- Нажмите ОК.
Теперь Вам известны основные принципы работы инструмента Специальная вставка и некоторые классные и супер-классные трюки. Вы можете транспонировать, удалять гиперссылки и пропускать пустые ячейки.
После заполнения таблицы Excel определенными значениями (чаще всего при добавлении массива информации) очень часто остаются свободные места. Они не будут мешать рассмотрению самого рабочего файла, однако будут усложнять функции сортировки, вычисления данных, фильтрации определенных чисел, формул, функций. Чтобы программа работала без затруднений, необходимо научиться заполнять пустоты значениями из соседних клеток.
Как выделить пустые клетки в рабочей таблице
Перед тем, как начинать рассматривать способы заполнения пустых клеток в рабочей таблице Excel, необходимо нужно научиться выделять их. Это просто сделать только в том случае, если таблица небольшая. Однако, если документ включает в себя огромное количество клеток, пустые места могут быть расположены в произвольных местах. Ручное выделение отдельных клеток займет много времени, при этом некоторые пустые места можно пропустить. Чтобы сэкономить время, рекомендуется автоматизировать данный процесс через встроенные инструменты программы:
- В первую очередь нужно отметить все ячейки рабочей таблицы. Для этого можно использовать только мышку или добавить клавиши SHIFT, CTRL для выделения.
- После этого нажать комбинацию клавиш на клавиатуре CTRL+G (еще один способ – F5).
- На экране должно появиться небольшое окошко под названием Go To.
- Нажать на кнопку “Выделить”.
Для того чтобы отмечать клетки в таблице, на основной панели с инструментами необходимо найти функцию “Найти и выделить”. После этого появится контекстное меню, из которого нужно выбрать выделение определенных значений – формулы, ячейки, константы, примечания, свободные клетки. Выбрать функцию “Выделить группу ячеек. Далее откроется окно настройки, в котором необходимо поставить галочку напротив параметра “Пустые ячейки”. Чтобы сохранить настройки, нужно нажать кнопку “ОК”.
Способ заполнения пустых ячеек вручную
Самый простой способ наполнения пустых клеток рабочей таблицы значениями из верхних ячеек – через функцию “Заполнить пустые ячейки”, которая находится на панели XLTools. Порядок действий:
- Нажать на кнопку активация функции “Заполнить пустые ячейки”.
- Должно открыться окно с настройками. После этого необходимо отметить диапазон ячеек, среди которых необходимо заполнить пустые места.
- Определиться со способом заполнения – из доступных вариантов нужно выбрать: влево, вправо, вверх, вниз.
- Поставить флажок напротив пункта “Отменить объединение ячеек”.
Останется нажать кнопку “ОК” чтобы пустые клетки заполнились требуемой информацией.
Важно! Одна из полезных особенностей данной функции – сохранение выставленных значений. Благодаря этому можно будет повторить действие со следующим диапазоном ячеек без перенастройки функции.
Доступные значения для заполнения пустых клеток
Существует несколько вариантов заполнения пустых клеток в рабочей таблице Excel:
- Заполнение влево. После активирования данной функции, пустые ячейки будут заполнены данными из клеток справа.
- Заполнение вправо. После нажатия на данного значение пустые клетки будут заполнены информацией из клеток слева.
- Заполнение вверх. Ячейки, расположенные сверху, будут заполнены данными из клеток, которые находится снизу.
- Заполнение вниз. Наиболее популярный вариант заполнения пустых клеток. Информация из ячеек сверху переносится в клетки таблицы, расположенные внизу.
Функция “Заполнить пустые ячейки” точно копирует те значения (числовые, буквенные), которые расположены в заполненных клетках. При этом здесь есть некоторые особенности:
- Даже при сокрытии или блокировке заполненной клетки, информация из нее будет перенесена в свободную ячейку после активации данной функции.
- Очень часто случаются ситуации, что значением для переноса является функция, формула, ссылка на другие клетки в рабочей таблице. В этом случае пустая клетка будет заполнена выбранным значением без его изменения.
Важно! Прежде чем активировать функцию “Заполнить пустые ячейки”, необходимо зайти в настройки рабочего листа, посмотреть наличие защиты. Если она активирована, информация перенесена не будет.
Заполнение пустых ячеек через формулу
Более простой и быстрый способ заполнения ячеек в таблице данных из соседних клеток – через использование специальной формулы. Порядок действий:
- Отметить все пустые ячейки способом, который был описан выше.
- Выбрать строку для ввода формул ЛКМ или нажать на кнопку F
- Ввести символ “=”.
- После этого указать ячейку, расположенную выше. Формула должна обозначить ту клетку, из которой будет скопирована информация в свободную ячейку.
Последним действием нажать комбинацию клавиш “CTRL+Enter”, чтобы формула сработала для всех свободных клеток.
Важно! Нельзя забывать о том, что после применения данного способа все свободные ранее ячейки будут заполнены формулами. Чтобы порядок в таблице сохранился, рекомендуется заменить их на числовые значения.
Заполнение пустых ячеек с помощью макроса
В том случае, если приходится регулярно заполнять пустые ячейки в рабочих таблицах, рекомендуется добавить макрос в программу, использовать его в дальнейшем для автоматизации процесса выделения, заполнения пустых клеток. Код заполнения для макроса:
Для добавления макроса нужно выполнить несколько действий:
- Нажать комбинацию клавиш ALT+F
- После этого откроется редактор VBA. В свободное окно нужно вставить представленный выше код.
Останется закрыть окно настройки, вывести значок макроса в панель быстрого доступа.
Заключение
Среди описанных выше способов нужно выбрать тот, который подходит лучше всего для определенной ситуации. Ручной способ добавления данных в свободные места рабочей таблицы подойдет для общего ознакомления, разового применения. В дальнейшем рекомендуется освоить формулу или же прописать макрос (при очень частом выполнении одной и той же процедуры).
Подпишитесь к нам в дзен-канал, для получения свежих новостей it мира:
Если список значений содержит пропуски (пустые ячейки), то это может существенно затруднить его дальнейший анализ. С помощью формул уберем пустые ячейки из колонки с данными. Также напишем формулу, чтобы удалить нули из списка значений. В конце статьи научимся удалять вообще любое заданное значение из списка: символ, число, текстовую строку.
Пусть имеется список с пустыми ячейками (столбец А ).
Задача
Убрать пустые ячейки из списка, сформировав формулами список в соседнем столбце. То есть под словом "убрать" будем понимать не удаление значения из исходного списка, а формирование еще одного списка, но уже без лишних символов. Чтобы действительно убрать значения из списка нужно использовать макросы - программу на VBA.
Решение
Для избавления от пустых ячеек запишем в ячейке B2 формулу массива и скопируем ее вниз (см. файл примера): =ЕСЛИОШИБКА(ДВССЫЛ("A"&НАИМЕНЬШИЙ(ЕСЛИ(ЕПУСТО($A$2:$A$14);"";СТРОКА($A$2:$A$14));СТРОКА(A1)));"")
Получим в соседнем столбце B список со значениями из исходого, но уже без пропусков. Формула работает одинакового и для текстовых значений и для чисел. Алгоритм работы формулы следующий:
- ЕСЛИ(ЕПУСТО($A$2:$A$14);"";СТРОКА($A$2:$A$14)) – если ячейка не пуста, то эта часть формулы возвращает номер строки. То есть формируется массив номеров строк, НЕ содержащих пустоты На месте пустых ячеек в массиве будет символ "" (пустой текст), но можно его заменить в формуле на любую текстовую строку, например "ккк". Проверить результат можно выделив эту часть формулы и нажав клавишу F9 ;
- Функция НАИМЕНЬШИЙ() сортирует массив строк по возрастанию. В сортированном списке сначала будут идти номера строк затем значения "", т.к. в EXCEL считается, что любое текстовое значение больше любого числа (значение пустой текст - текстовое значение);
- Далее для функции ДВССЫЛ() формируются адреса ячеек с непустыми значениями. Например, ДВССЫЛ("A"&2) возвращает значение из ячейки А2 . Для пустых ячеек будет формироваться ошибочные адреса ячеек, состоящие только из символа А. Это вызовет ошибку после применения функции ДВССЫЛ();
- Функция ЕСЛИОШИБКА() вместо ошибки будет возвращать "". Этот символ не отображается в ячейке и ячейка выглядит пустой.
На самом деле в соседнем столбце B список будет отличаться не только тем, что в нем значения будут идти подряд без пропусков. Если в исходном списке пустые ячейки действительно не содержали ничего, то в новом списке в пустых ячейках будут значения Пустой текст "". Хотя внешний вид пустых ячеек из обоих списков будет неотличим, но формулы увидят разницу. То есть, если Вы планируете делать дальнейшие манипуляции с новым списком, то имейте ввиду, что теперь пустые ячейки в конце списка теперь не совсем пусты - они содержат текстовое значение "". Подробнее про это специфическое значение читайте здесь .
Изменим немного формулу: =ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ( ЕПУСТО($A$2:$A$14);"";$A$2:$A$14);СТРОКА(A1));"")
Получим тот же список, но еще и сортированный по возрастанию (работает только для чисел).
Список также можно сформировать в столбце С другой формулой массива :
СписокСпропусками в формуле - это динамический диапазон , который образован формулой:
Длину списка с пропусками можно вычислить с помощью формулы:
СОВЕТ:
Для удаления и выделения пустых строк и ячеек традиционными средствами EXCEL, пользуйтесь идеями из статей Удаляем пустые строки в таблице и Выделение группы ячеек . О том, что EXCEL понимает под пустыми ячейками, читайте в статье Подсчет пустых ячеек .
Удаляем заданные символы из списка
Часто в списке присутствуют ненужные для дальнейшего анализа значения, например 0 (нуль).
Немного модернизировав вышеуказанную формулу получим универсальный подход для удаления вообще любого символа, числа или текстовой строки из исходного списка (см. файл примера, в котором на листе Произвольный символ приведена универсальнаяформула).
Пусть исходный список находится в диапазоне A12:A24, а в ячейке B6 содержится значение которое нужно удалить из ячеек списка.
Единственным отличием является выражение $A$12:$A$24=$B$6, которое заменило формулу с ЕПУСТО(. )
Теперь если значение в исходном списке не равно искомому значению, то вместо него будет выведено значение "" (в конце списка).
Читайте также: