Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Применение формулы на весь столбец в большом exсel файле - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Применение формулы на весь столбец в большом exсel файле
iven Дата: Пятница, 27.06.2014, 10:40 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Есть файл xlsx на 410000 строк
К одному из столбцов нужно применить формулу =СЧЁТЕСЛИ(C$1:C3;C3) до конца документа

Запущенный процесс длится уже больше 10 часов на не слабом компьютере и уже несколько часов показывает состоянии "не отвечает" при 1% проценте загрузки процессора и плавающем использовании оперативной памяти от мегабайтов до 7 гигабайт и до 70 мб/c использования диска

Есть рекомендации как выполнить данную задачу ?
[moder]Есть. См. первое предложение и требования в п. 3 тут
К сообщению приложен файл: 8113466.xlsx (9.1 Kb)


Сообщение отредактировал iven - Пятница, 27.06.2014, 11:02
 
Ответить
СообщениеЕсть файл xlsx на 410000 строк
К одному из столбцов нужно применить формулу =СЧЁТЕСЛИ(C$1:C3;C3) до конца документа

Запущенный процесс длится уже больше 10 часов на не слабом компьютере и уже несколько часов показывает состоянии "не отвечает" при 1% проценте загрузки процессора и плавающем использовании оперативной памяти от мегабайтов до 7 гигабайт и до 70 мб/c использования диска

Есть рекомендации как выполнить данную задачу ?
[moder]Есть. См. первое предложение и требования в п. 3 тут

Автор - iven
Дата добавления - 27.06.2014 в 10:40
Hugo Дата: Пятница, 27.06.2014, 10:43 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3857
Репутация: 814 ±
Замечаний: 0% ±

365
Массив/словарь - т.е. макрос.
Для условного файла:
[vba]
Код
Sub tt()
      Dim a(), i&

      a = Range("C1:C" & Range("C" & Rows.Count).End(xlUp).Row).Value
      ReDim b(1 To UBound(a), 1 To 1)

      With CreateObject("Scripting.Dictionary"): .comparemode = 1
          For i = 1 To UBound(a)
              .Item(a(i, 1)) = .Item(a(i, 1)) + 1
              If i > 2 Then b(i, 1) = .Item(a(i, 1))
          Next
      End With

      [f1].Resize(UBound(b), 1) = b
End Sub
[/vba]

Под свой подгоняйте теперь сами.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеМассив/словарь - т.е. макрос.
Для условного файла:
[vba]
Код
Sub tt()
      Dim a(), i&

      a = Range("C1:C" & Range("C" & Rows.Count).End(xlUp).Row).Value
      ReDim b(1 To UBound(a), 1 To 1)

      With CreateObject("Scripting.Dictionary"): .comparemode = 1
          For i = 1 To UBound(a)
              .Item(a(i, 1)) = .Item(a(i, 1)) + 1
              If i > 2 Then b(i, 1) = .Item(a(i, 1))
          Next
      End With

      [f1].Resize(UBound(b), 1) = b
End Sub
[/vba]

Под свой подгоняйте теперь сами.

Автор - Hugo
Дата добавления - 27.06.2014 в 10:43
iven Дата: Пятница, 27.06.2014, 11:01 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Цитата
Массив/словарь - т.е. макрос.

ламер в excel
меня интересует возможно общий подход чтоб не напрягать никого с написанием макроса для нуба
может есть какие-то оболочки или специализированные программы или может в openoffice быстрее обрабатывается
и вообще описанное состояние выполнения обработки это нормально ? оно выполнится и раздуплится ? или процесс можно закрывать так как он займет недели ? или вообще считается зависшим ?

Присоединил кусок начала файла, ибо сам файл весит 50 метров, нужный столбец - последний


Сообщение отредактировал iven - Пятница, 27.06.2014, 11:02
 
Ответить
Сообщение
Цитата
Массив/словарь - т.е. макрос.

ламер в excel
меня интересует возможно общий подход чтоб не напрягать никого с написанием макроса для нуба
может есть какие-то оболочки или специализированные программы или может в openoffice быстрее обрабатывается
и вообще описанное состояние выполнения обработки это нормально ? оно выполнится и раздуплится ? или процесс можно закрывать так как он займет недели ? или вообще считается зависшим ?

Присоединил кусок начала файла, ибо сам файл весит 50 метров, нужный столбец - последний

Автор - iven
Дата добавления - 27.06.2014 в 11:01
Hugo Дата: Пятница, 27.06.2014, 11:20 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3857
Репутация: 814 ±
Замечаний: 0% ±

365
Думаю нормально. Но отвиснет ли - неизвестно.
У Вас 410000 раз выполняется функция, которая в итоге столько же раз будет просматривать весь массив данных. И возможно пересчёт каждой функции вызывает пересчёт ещё кучи других функций (что уже видно в файле, с которым Вы опоздали).


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеДумаю нормально. Но отвиснет ли - неизвестно.
У Вас 410000 раз выполняется функция, которая в итоге столько же раз будет просматривать весь массив данных. И возможно пересчёт каждой функции вызывает пересчёт ещё кучи других функций (что уже видно в файле, с которым Вы опоздали).

Автор - Hugo
Дата добавления - 27.06.2014 в 11:20
iven Дата: Пятница, 27.06.2014, 11:20 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Оо, я разобрался как сохранить с поддержкой макроса, вставить его и применить, еще бы кто его подкоректировал под выложенный файл )
 
Ответить
СообщениеОо, я разобрался как сохранить с поддержкой макроса, вставить его и применить, еще бы кто его подкоректировал под выложенный файл )

Автор - iven
Дата добавления - 27.06.2014 в 11:20
Hugo Дата: Пятница, 27.06.2014, 11:27 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3857
Репутация: 814 ±
Замечаний: 0% ±

365
Да что там корректировать - вместо f1 укажите свой последний столбец.
Ну и смотрю проверку на >2 можно вообще убрать (обманули ведь! а без проверки будет чуть быстрее работать) - а 1 в первой строке можно в конце удалить. Как угодно, хоть вручную.

Но конечно Ваши зависящие от этого столбца формулы после выполнения макроса начнут 410000 раз выполняться - но это уже другой вопрос, я за это не отвечаю :(


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеДа что там корректировать - вместо f1 укажите свой последний столбец.
Ну и смотрю проверку на >2 можно вообще убрать (обманули ведь! а без проверки будет чуть быстрее работать) - а 1 в первой строке можно в конце удалить. Как угодно, хоть вручную.

Но конечно Ваши зависящие от этого столбца формулы после выполнения макроса начнут 410000 раз выполняться - но это уже другой вопрос, я за это не отвечаю :(

Автор - Hugo
Дата добавления - 27.06.2014 в 11:27
iven Дата: Пятница, 27.06.2014, 11:54 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
да хз что это вообще и для чего и такие вот однотипные данные до конца файла
кузина попросила запустить у себя потому что у меня комп мощнее - видно не столь уж мощнее )
[moder]Наше дело предложить.
Ваше - отказаться.


Сообщение отредактировал iven - Пятница, 27.06.2014, 11:56
 
Ответить
Сообщениеда хз что это вообще и для чего и такие вот однотипные данные до конца файла
кузина попросила запустить у себя потому что у меня комп мощнее - видно не столь уж мощнее )
[moder]Наше дело предложить.
Ваше - отказаться.

Автор - iven
Дата добавления - 27.06.2014 в 11:54
iven Дата: Пятница, 27.06.2014, 14:35 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
запустил любопытства ради два варианта на разных компах
один формула, второй - макрос
посмотрим кто выполнится быстрее


Сообщение отредактировал iven - Пятница, 27.06.2014, 14:35
 
Ответить
Сообщениезапустил любопытства ради два варианта на разных компах
один формула, второй - макрос
посмотрим кто выполнится быстрее

Автор - iven
Дата добавления - 27.06.2014 в 14:35
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!