Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Автоматический разброс данных по листам, При установке признака надо переносить строчку с одного листа на другой
 
А может быть есть возможность делать предустановленные фильтры? Один человек заходит, нажимает одну кнопку - получает свои задачи, другой - другую, получает свои задачи и т.п.
Автоматический разброс данных по листам, При установке признака надо переносить строчку с одного листа на другой
 
Добрый день!

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

Подскажите, пожалуйста, как это сделать наиболее оптимально.
Файл с примером приложен.
Изменено: axtrace - 10.04.2014 23:08:50
RunTime Error 7 - Out of Memory
 
попробую я, в общем, делать кусками. Брать массив тысяч в 100 строк, преобразовывать его, записывать на новый лист, переходить к следующим 100 тыс. строк... Время, конечно, увеличится. Но хоть какое-то решение у меня будет.

все большое спасибо за идеи! Надеюсь, вам пригодится где-нибудь когда-нибудь :)
RunTime Error 7 - Out of Memory
 
Цитата
Михаил С. пишет:  моем компе (win7, off 2010, 2 G)
странно. у меня win7, off2010, 4Gb
файл подкачки - 3,6 Gb
RunTime Error 7 - Out of Memory
 
Цитата
The_Prist пишет: И при повторном обращении с передачей ссылки у нас выделенный размер памяти может "слегка" увеличиватся
там же только адрес, откуда вызывается и адреса памяти массивов (по ссылке передаются параметры функции). это вроде бы немного.
я попробовал, не помогло  :(  Все работает так же, как раньше.
RunTime Error 7 - Out of Memory
 
Цитата
ikki пишет: но если я меняю константу m на 600000 - то уже при создании 3-го массива вылетает out of memory
может быть это ограничение разметки памяти в vba?
RunTime Error 7 - Out of Memory
 
Цитата
Юрий М пишет: Неправда - совсем разные размеры.
я опечатался, вместо 1 500 000 указал 150 000. В файле уже исправил, все равно этот ReDim берет, на втором - ошибка
RunTime Error 7 - Out of Memory
 
Цитата
Юрий М пишет:
Dim nArray()
nArray = Range(Cells(1, 1), Cells(lastrow, lastcolumn)).Value
то есть просто убрать ReDim? Я так сделал, у меня в массив записалось <Out of memory>, программа благополучно продолжила работать, но вылезла ошибка о несуществовании объекта в дальнейшем, при попытке перенести данные из этого массива в другой
RunTime Error 7 - Out of Memory
 
Цитата
Юрий М пишет: Вы сначала объясните - зачем дважды ReDim с одним и тем же nArray?
   
Код
'этот ReDim, чтобы показать что на таких же размерах все работает. Он не нужен в программе, просто показываю, что если так указать, то все ок. Его я удалю. Поставил его после обнаружения ошибки. На нем ошибки нет
   ReDim nArray(1 To 1500000, 1 To 15) As Variant
    
'это основной ReDim, он будет и дальше. Он динамически расширяет массив в зависимост от размеров данных на листе, которые туда будут помещаться. 
       ReDim nArray(1 To LastRow, 1 To LastCol) As Variant
Первый - для примера. На нем не вылезает ошибка.
А вот на втором - вылезает, даже если первый закомментен. Может быть это поможет локализовать проблему.
RunTime Error 7 - Out of Memory
 
Цитата
Юрий М пишет: Утечка памяти? Попробуйте убить массив.
может быть. а как убивают массивы?
только если утечка, после перезагрузки и запуска только excel, все должно было быть чисто и хотя бы раз отработать нормально, но нет - все-равно ошибка. Правда, она то на ReDim, а то на следующей строчке с присваиванием:

nArray = tSheet.Range(tSheet.Cells(1, 1), tSheet.Cells(LastRow, LastCol))
RunTime Error 7 - Out of Memory
 
Цитата
Юрий М пишет:
А Вы попробуйте присвоить LastRow значение = 1048574. И LastColumn = 15. Первую строку с ReDim Отключите. Что получится?
Получилось, что при первом вызове функции getArrayFromSheet - той, в которой этот ReDim содержиться - проходит все успешно, но во втором вызове - я несколько массивов формирую с разных листов - опять вылетает та же ошибка. Хотя там точно также присваивается LastRow значение = 1048574. И LastColumn = 15
RunTime Error 7 - Out of Memory
 
Цитата
EducatedFool пишет:
Через Redim можно изменять только верхнюю размерность массива
а что такое верхняя размерность массива?

Цитата
EducatedFool пишет:
А зачем вам 2 строки с Redim?
Уберите первую строку - и всё заработает
нет, не заработает. я ее специально добавил, чтобы показать, что если указывать размеры как числа, то все ок.
А если брать их из переменной, то вылетает ошибка.
RunTime Error 7 - Out of Memory
 
Добрый день!

Проблема в следующем: все данные с листа помещаю в массив, чтобы их быстрее обработать. На малых объемах все работает хорошо. На больших, близких к граничным, вылезает ошибка "RunTime Error 7 - Out of Memory".

Она вылезает или на ReDim массива, или на присвоении массиву диапазона с листа.

Что странно, так это ошибка не вылезает, если использую константу в 1 500 000 (строк), а если через переменную передаю 1048574 (строк), то вылезает. Это и взрывает мне мозг.

Запускаю функцию Sub StartTransferData() в модуле m2_Main2 в файле (48 Мб):
https://docs.google.com/file/d/0B_GHN7yiYuxELWVSSmJIM3VUczg/edit?usp=sharing

весит много, поэтому через гугл драйв.
Также прикладываю скриншот экрана после нажатия на Debug

Подскажите, пожалуйста, в чем может быть дело и как бороться.

Спасибо
Изменено: axtrace - 01.02.2013 18:08:48
Номерация повторяющихся артикулов по ценам., Цель: Проставить номер цены по возрастанию в повторяющихся артикулах (позициях, товарах), начиная с наименьшего.
 
V,

Цитата
я так понял что автору нужно учитывать и значения в столбце "С".

Да, действительно нужно. Ваша формула с РАНГ как раз для этого
Капча при регистрации нечитаема, с третьей попытки ввел, обновить капчу нельзя
 
Еще надо кнопку "Обновить" добавить для капчи. Даже в более простых нет-нет, да и попадается нечитаемая
Номерация повторяющихся артикулов по ценам., Цель: Проставить номер цены по возрастанию в повторяющихся артикулах (позициях, товарах), начиная с наименьшего.
 
во вложении.
VBA: Скопировать строку из одного двумерного массива в другой одной операцией
 
Hugo, спасибо! я предыдущее сообщение писал, еще не видя вашего ответа с кодом про CopyMemory
VBA: Скопировать строку из одного двумерного массива в другой одной операцией
 
Hugo,
Возможно ли это сделать одной операцией, а не в цикле? Тут я приложил лишь пример, в реальной задаче у меня миллион строк и 13 столбцов, 90% из них собираюсь скопировать. Боюсь, что время будет слишком большое

Я пока смотрю CopyMemory
VBA: Скопировать строку из одного двумерного массива в другой одной операцией
 
Маугли, спасибо!

А не подскажите, R_data будет хранится в оперативной памяти? Будет ли обращение к R_data и далее к Target_data аналогично по времени к обращению напрямую к листу, например, в таком месте:
Код
Target_data = .[D1]

У меня миллион записей, я пытаюсь уйти от обращения к ячейкам при сравнении и копировании для сокращения времени выполнения
Изменено: axtrace - 26.10.2015 10:12:57
VBA: Скопировать строку из одного двумерного массива в другой одной операцией
 
iba2004, спасибо, но мне нужно именно не используя лист. Я пытаюсь это делать в массиве, куда предварительно все копирую.

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

Также, если при написании сообщения нажать "Просмотр", то внизу в тексте сообщения строки кода собьются.

Пример: http://planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=432&MID=4488#message4488

Браузер: GH Версия 23.0.1271.97 m
VBA: Скопировать строку из одного двумерного массива в другой одной операцией
 
Добрый день!

Необходимо консультация сообщества.
Есть двумерный массив. Воспринимаю его как матрицу.
Нужно скопировать строку из этой матрицы в другой двумерный массив.
Возможно ли это сделать одной операцией?

На попытку просто использовать "=" выдается Run-time error 9: subsctipt out of range
Копировать строку по элементам не хочется, т.к. придется много копировать, а это приведет к потере времени
Код:
Код
Sub ChangeData()        Prepare        'initialization    Dim R_data As Variant    Dim Target_data As Variant        'change dimention    ReDim R_data(1 To 7, 1 To 2) As Variant    ReDim Target_data(1 To 7, 1 To 2) As Variant        'put data in array    R_data = Sheets(1).Range(Sheets(1).Cells(1, 1), Sheets(1).Cells(7, 2))        'change data    R_data(6, 2) = "FFFFFF"        'HERE I have a problem    'Copy line 6 to the second array    Target_data(6) = R_data(6)        'return data on sheet    Sheets(1).Clear    Sheets(1).Range(Sheets(1).Cells(1, 1), Sheets(1).Cells(7, 2)) = R_data        Ended    End Sub
Капча при регистрации нечитаема, с третьей попытки ввел, обновить капчу нельзя
 
Предлагаю использовать что-то более простое в качестве капчи. Обычному человеку проблематично разгадать буквы, наложенные друг на друга, особенно если I подложить под F. Не поймешь, есть там что-то или нет.
Страницы: 1
Наверх