Страницы: 1
RSS
VBA Максимальное число ячеек в Range, вопрос по vba
 
Ребят, подскажите пожалуйста, есть ли лимит количества значений хранящихся в Range
У меня есть такой:
tmp="$A$1,$A$13,$A$18,$A$24,$A$34,$A$40"
Range(tmp)

Если у меня там 45 значений он нормально отрабатывает, допустим Range(tmp).Select, а если 50 то на функции Range(tmp).Select вылетает ошибка 1004, ничего понять не могу...
 
Используйте Union
Согласие есть продукт при полном непротивлении сторон
 
viton-zizu, если в будущем ждете помощи на этом форуме, не стесняйтесь отписываться в своих темах.
 
Строковое обозначение адреса диапазона ограничено 255 знаками.
 
Можно здорово сэкономить на баксах :)
 
Цитата
vikttur пишет: viton-zizu, если в будущем ждете помощи на этом форуме, не стесняйтесь отписываться в своих темах.
Прошу прощения и вправду не очень получилось, отписался там)
Цитата
B.Key пишет: Строковое обозначение адреса диапазона ограничено 255 знаками.
Вот собственно узнал в чем была загвоздка.

Тогда спрошу по другому, я программист C#, потребовалось накидать макрос vba для excel, тут у меня небольшой ступор. Как именно работать с данными? Есть таблица Excel, она сама из себя представляет массив(условно), также можно пройтись по всем значениям запихать все в уже нормальный массив и работать с этими числами. Так вот вопрос, как предпочтительней работать с vba excel? Просто для примера мне нужно по считать сумму всех удовлетворяющих условию ячеек. Строк допустим около 10000.
Я просто в цикле перебираю весь столбец А2-А10000 , отбираю нужные мне и записываю в переменную summ. Правильно ли это!? потому что мне показалось, что высчитывалась довольно долго, а мне их нужно около 40 штук по считать...
Вообще хотелось бы научиться правильному обращению с большим объемом данных.
Был бы очень признателен любым советам  :)
Изменено: viton-zizu - 18.02.2015 15:19:29
 
a=[a1..n9999]. value
----------
вот вам массив
 
B.Key,т.е. работать непосредственно через массив по скорости получится быстрей, чем через Range и прочее?
 
Работа с массивом (в памяти) будет в разы быстрее, чем с ячейками листа.
 
если необходимо обрабатывать сами данные, а не форматы ячеек то работать с массивами будет в разы быстрее.
Если надо вычислить сумму по столбцу то можно применить функции листа
Код
s = Application.WorksheetFunction.Sum([a1..a10])
 
B.Key, Юрий М,
Ребят, спасибо большое за помощь!
А если сумму только определенных ячеек, допустим из 100 и они разделены, каждая сама по себе!? Что мне в аргумент Sum можно написать, если строка ограничена!?
 
Цитата
viton-zizu пишет:
можно пройтись по всем значениям запихать все в уже нормальный массив и работать с этими числами
Как запихать, вам показали
 
Ок, спасибо, разобрался)
Страницы: 1
Наверх