Developing.ru
Допустим, что имеется массив MyArray(10), объявленный As Variant. Из него, убрав элементы, равные 0, нужно получить укороченный массив MyArray(10). В массиве MyArray(10) элементы 8, 9 и 10 могут оставаться пустыми или равными 0.
Как это сделать? Спасибо.
До После MyArray(10) MyArray(10) 1 1 0 5 5 6 6 8 0 6 8 4 6 5 0 4 5
EducatedFool Сообщения: 196 Зарегистрирован: 06 апр 2008, 14:03 Откуда: Россия, Урал Контактная информация:
нужно получить укороченный массив MyArray(10)
Определитесь, что надо получить:
УКОРОЧЕННЫЙ массив MyArray(7) или неукороченный массив MyArray(10), где вместо нулей будет находиться пустая строка
Макросы для Excel, Word, CorelDRAW. Быстро, профессионально, недорого. http://ExcelVBA.ru/
Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
Vaseninbox Сообщения: 34 Зарегистрирован: 05 сен 2008, 15:11 Контактная информация:
Определитесь, что надо получить:
Спасибо за поправку.
Требуется получить укороченный массив MyArray(10), где вместо нулей, в элементах 8, 9 и 10, будет находится пустая строка. А ненулевые элементы должны быть упорядочены (смещены) как показано на примере. Спасибо.
nilem Сообщения: 112 Зарегистрирован: 14 ноя 2008, 01:59 Откуда: Уфа
Вот файлик недавно делал (удаляем в массивах пусто и нули). Может, подойдет?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Vaseninbox Сообщения: 34 Зарегистрирован: 05 сен 2008, 15:11 Контактная информация:
Спасибо за ответ. ) Но в этом примере проводятся операции над числами,которые находятся в ячейках на листе Excel.
Я же пишу пользовательскую функцию, в которой сначала все данные из нужных пользователю ячеек копируются в числовой массив (например, MyArray(10)), который обрабатывается не на листе, а в оперативной памяти. Потом над этим числовым массивом производится множество операций и результат вычислений выводится в какой-то ячейке.
Вот одна из производимых операций — это как раз удаление из массива пустых элементов и сортировка оставшихся элементов по порядку и без пробелов.
nilem Сообщения: 112 Зарегистрирован: 14 ноя 2008, 01:59 Откуда: Уфа
А в примере разве не массивы? Диапазон ячеек сначала переносится в массив, убираются в массиве (именно в виртуальном массиве, а не на листе) пустые значения, а потом результат записывается на лист.
В обоих кодах есть циклы, которые как раз и делают это удаление. Т.е. для вашей обработки можно выдернуть только эти циклы.
Впрочем, может требуется что-то другое.
Правила изменения формул массива
Вы пытаетесь изменить формулу массива и не можете найти ее. Если щелкнуть формулу в ячейке или в области формул, изменить что-то будет нельзя. Формулы массива являются специальными вариантами, поэтому вы можете сделать следующее:
Если вы ввелиформулу массива с одной ячейкой, выберите ячейку, нажмите F2, введите изменения и нажмите CTRL+SHIFT+ВВОД.
Если вы ввели формулумассива с несколькими ячейками, выберем все ячейки, содержащие ее, нажмите F2 и выполните указанные здесь правила.
- Отдельные ячейки, содержащие формулу, перемещать нельзя, но можно перемещать их все как группу, и ссылки на ячейки в формуле изменятся вместе с ними. Чтобы переместить их, вы выберите все ячейки, нажмите CTRL+X, выберите новое расположение и нажмите CTRL+V.
- Вы не можете удалить ячейки в формуле массива (вы увидите ошибку «Невозможно изменить часть массива»), но можете удалить всю формулу и начать все сначала.
- К блоку ячеек результатов нельзя добавить новые ячейки, но можно добавить новые данные на свой компьютер, а затем развернуть формулу.
- После внесения изменений нажмите CTRL+SHIFT+ВВОД.
Наконец, можно сэкономить время, если использовать константы массива — части формулы массива, которые вы введите в формулу. Но у них также есть несколько правил редактирования и использования. Дополнительные о них см. в теме «Использование констант массива в формулах массива».
Как удалить массив в excel
что то я не понял. Подскажите Вы если знаете как правильно и коротко удалить элемент из массива.
Пользователь
Сообщений: 8839 Регистрация: 11.01.2013
17.12.2010 11:01:48
С помощью Redim можно удалить только последние элементы (в случае многомерного массива — только последние элементы последней размерности). F1 — Redim.
В других случаях надо писать цикл для перекладывания элементов.
Удаление последнего элемента:
ReDim Preserve IArrow(ubound(IArrow)-1)
Пользователь
Сообщений: 3103 Регистрация: 22.12.2012
Excel,MSSQL,Oracle,Qlik
17.12.2010 11:23:11
так можно удалить из цикла в цикл
x=5′ удаляемый элемент
redim arrF(1 to ubound(arr)-1):y=1
for i = 1 to ubound(arr)
if i<>x then arrF(y)= arr(i):y=y+1
next
Пользователь
Сообщений: 5192 Регистрация: 16.01.2013
17.12.2010 14:59:41
ну накрутили.. 🙂
n=5′ удаляемый элемент
for i=n to ubound(arr)-1
arr(i)=arr(i+1)
next
redim preserve arr(lbound(arr) to i-1)
Живи и дай жить..
17.12.2010 15:50:32
зы на заметку взял
Страницы: 1
Читают тему
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
| ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Редактирование формул массива в Excel
В прошлых уроках мы разобрали основные понятия и сведения касаемо массивов в Excel. В этом уроке мы продолжим изучение формул массива, но с большим уклоном на их практическое применение. Итак, как же изменить уже существующую формулу массива в Excel?
Правила редактирования формул массива
Когда формула массива помещена в одну ячейку, то ее редактирование в Excel обычно не представляет особой сложности. Здесь главное не забыть закончить редактирование комбинацией клавиш Ctrl+Shift+Enter.
Если же формула многоячеечная, т.е. возвращает массив, то сразу возникают определенные трудности, особенно у начинающих пользователей. Давайте рассмотрим несколько правил, которые необходимо усвоить, прежде чем начать редактирование массива.
- Нельзя изменять содержимое одной ячейки, содержащей формулу массива. Но к каждой ячейке можно применить свое форматирование.
- Нельзя удалять ячейки, которые входят в формулу массива. Можно удалить только весь массив.
- Нельзя перемещать ячейки, которые входят в формулу массива. Зато можно переместить весь массив.
- Нельзя вставлять новые ячейки, в том числе строки и столбцы, в диапазон массива.
- Нельзя использовать многоячеечные формулы массива в таблицах, созданных с помощью команды Таблица.
Как видите, все перечисленные выше правила подчеркивают, что массив – это одно целое. Если не выполнить, хотя бы одно из вышеперечисленных правил, Excel не даст отредактировать массив и выдаст следующее предупреждение:
Выделение массива в Excel
Если необходимо изменить формулу массива, то первое, что нужно сделать – это выделить диапазон, в котором содержится массив. В Excel существует, как минимум, 3 способа сделать это:
- Выделить диапазон массива вручную, т.е. с помощью мыши. Это самый простой, но в ряде случаев абсолютно непригодный способ.

- С помощью диалогового окна Выделить группу ячеек. Для этого выделите любую ячейку, которая принадлежит массиву:
А затем на вкладке Главная из раскрывающегося списка Найти и выделить выберите пункт Выделить группу ячеек.
Откроется диалоговое окно Выделить группу ячеек. Установите переключатель на пункт текущий массив и нажмите ОК.
Текущий массив будет выделен: 
- При помощи комбинации клавиш Ctrl+/. Для этого выберите любую ячейку массива и нажмите комбинацию.
Как удалить формулу массива
Самое простое, что Вы можете сделать с массивом в Excel – это удалить его. Для этого достаточно выделить нужный массив и нажать клавишу Delete.
Как отредактировать формулу массива
На рисунке ниже представлена формула массива, которая складывает значения двух диапазонов. Из рисунка видно, что при вводе формулы мы допустили небольшую ошибку, наша задача ее исправить.

Чтобы отредактировать формулу массива, выполните следующие действия:
- Выделите диапазон массива любым из известных Вам способов. В нашем случае это диапазон C1:C12.

- Перейдите в режим редактирования формулы, для этого щелкните по строке формул или нажмите клавишу F2. Excel удалит фигурные скобки вокруг формулы массива.

- Внесите необходимые корректировки в формулу:

- А затем нажмите комбинацию клавиш Ctrl+Shift+Enter, чтобы сохранить изменения. Формула будет отредактирована.

Изменение размеров формулы массива
Очень часто возникает необходимость уменьшить или увеличить количество ячеек в формуле массива. Скажу сразу, что дело это не простое и в большинстве случаев будет проще удалить старый массив и создать новый.
Прежде чем удалять старый массив, скопируйте его формулу как текст, а затем используйте ее в новом массиве. При громоздких формулах такой подход позволит сэкономить уйму времени.
Если же необходимо изменить расположение массива на рабочем листе, не меняя его размерность, просто переместите его как обычный диапазон.
Существует несколько подходов к редактированию размеров массива, которые, возможно, Вам пригодятся. Подходы приведены в данном уроке.
Итак, сегодня Вы научились выделять, удалять и редактировать формулы массива, а также узнали несколько полезных правил по работе с ними. Если желаете получить еще больше информации о массивах в Excel, читайте следующие статьи:
- Знакомство с формулами массива в Excel
- Многоячеечные формулы массива в Excel
- Одноячеечные формулы массива в Excel
- Массивы констант в Excel
- Применение формул массива в Excel
- Подходы к редактированию формул массива в Excel
