koyaanisqatsi, Отличный вариант у Александра, просто я учусь и пробую решать интересные задачи, как сам представляю. Ваша задача мне кажется интересной.
koyaanisqatsi, Отличный вариант у Александра, просто я учусь и пробую решать интересные задачи, как сам представляю. Ваша задача мне кажется интересной.Richman
Никто не писал, что плохой. Но вариант решения нужно выбирать в зависимости от объема данных. Формула массива вычисляет много лишнего... Нет, не лишнего - производит много вычислений. Если извлекаемых значений много или если исходная таблица очень большая, возможны торможения. В этом случае решение с доп. столбцом предпочтительнее. Доп. столбец - доп. вычисления? Да, но при этом во много раз уменьшаются вычисления в основной формуле.
Никто не писал, что плохой. Но вариант решения нужно выбирать в зависимости от объема данных. Формула массива вычисляет много лишнего... Нет, не лишнего - производит много вычислений. Если извлекаемых значений много или если исходная таблица очень большая, возможны торможения. В этом случае решение с доп. столбцом предпочтительнее. Доп. столбец - доп. вычисления? Да, но при этом во много раз уменьшаются вычисления в основной формуле.vikttur
vikttur, О как ! Да это как раз мой вариант. У меня основной файл очень глобальный получился. Правда его бы в идеале хотя бы на две части распилить. Правда это уже другая тема, причем созданная. Но пока помощи не видно ( Правда я уже 600кб отвоевал с помощью двух формул от бороды )
vikttur, О как ! Да это как раз мой вариант. У меня основной файл очень глобальный получился. Правда его бы в идеале хотя бы на две части распилить. Правда это уже другая тема, причем созданная. Но пока помощи не видно ( Правда я уже 600кб отвоевал с помощью двух формул от бороды )koyaanisqatsi
Сообщение отредактировал koyaanisqatsi - Суббота, 24.01.2015, 14:11
Если очень большой и извлекать уникальные не очень часто, лучше макросом. Код работает медленнее встроенных функций листа, но размер файла будет существенно меньше.
Если очень большой и извлекать уникальные не очень часто, лучше макросом. Код работает медленнее встроенных функций листа, но размер файла будет существенно меньше.vikttur
Сообщение отредактировал vikttur - Суббота, 24.01.2015, 14:18
Sub no_zeros() 'Dim tm!: tm = Timer Dim x, y(), i&, j& x = Range("B1", Cells(Rows.Count, 2).End(xlUp)).Value ReDim y(1 To UBound(x), 1 To 1) For i = 1 To UBound(x) If x(i, 1) <> 0 Then j = j + 1: y(j, 1) = x(i, 1) Next i If j > 0 Then Range("C1").Resize(j).Value = y() 'MsgBox Timer - tm End Sub
Sub no_zeros() 'Dim tm!: tm = Timer Dim x, y(), i&, j& x = Range("B1", Cells(Rows.Count, 2).End(xlUp)).Value ReDim y(1 To UBound(x), 1 To 1) For i = 1 To UBound(x) If x(i, 1) <> 0 Then j = j + 1: y(j, 1) = x(i, 1) Next i If j > 0 Then Range("C1").Resize(j).Value = y() 'MsgBox Timer - tm End Sub
[/vba] В коде таймер, если включить узнаем времяAlexM