Здравствуйте уважаемые форумчане! Нужна ваша помощь в решении маленького вопроса, но большой проблемы (проблемы для меня естестно) …ну как это сделать ? Вот суть «глобальной проблемы» : в столбце А имеются единицы с разными интервалами между ними, мне нужно вычислить эти интервалы, и результаты записывать в столбец B. Пример из вложенного файла, интервал между А12 и А18 равняется 5 пустым ячейкам, записываем 5 в ячейку B1, интервал между А18 и А28 равняется 9 пустым ячейкам, записываем 9 в ячейку B2, интервал между А28 и А42 равняется 13 пустым ячейкам, записываем 13 в ячейку B3 и т.д. Да и еще одно, единицами с интервалами заполнен почти весь диапазон (1048000) столбца А. Спасибо большое Всем кто откликнется на помощь, здравия Всем!!!
Здравствуйте уважаемые форумчане! Нужна ваша помощь в решении маленького вопроса, но большой проблемы (проблемы для меня естестно) …ну как это сделать ? Вот суть «глобальной проблемы» : в столбце А имеются единицы с разными интервалами между ними, мне нужно вычислить эти интервалы, и результаты записывать в столбец B. Пример из вложенного файла, интервал между А12 и А18 равняется 5 пустым ячейкам, записываем 5 в ячейку B1, интервал между А18 и А28 равняется 9 пустым ячейкам, записываем 9 в ячейку B2, интервал между А28 и А42 равняется 13 пустым ячейкам, записываем 13 в ячейку B3 и т.д. Да и еще одно, единицами с интервалами заполнен почти весь диапазон (1048000) столбца А. Спасибо большое Всем кто откликнется на помощь, здравия Всем!!!djon2012
Nic70y спасибо за формулы отлично работают, но при нужном мне количестве формул 80000-100000 штук обработка идет медленно, плюс при изменении любых ячеек даже в другой книге идет постоянный перерасчет формул а это уже бесит. А как сделать это через VBA, что бы можно было запускать обработку только когда действительно нужно. Спасибо!!!
Nic70y спасибо за формулы отлично работают, но при нужном мне количестве формул 80000-100000 штук обработка идет медленно, плюс при изменении любых ячеек даже в другой книге идет постоянный перерасчет формул а это уже бесит. А как сделать это через VBA, что бы можно было запускать обработку только когда действительно нужно. Спасибо!!!djon2012
Sub Мяууу() Dim flag As Boolean Dim i&, ii&, k& Dim t! t = Timer Application.ScreenUpdating = False i = 1 If Len(Cells(i, 1)) Then k = 1 Do While i < Rows.Count If Len(Cells(i, 1).Offset(1)) Then flag = True Else flag = False ii = Cells(i, 1).End(xlDown).Row If Not flag Then Cells(Rows.Count, 4).End(xlUp).Offset(1) = ii - i - k Else End If k = 1 i = ii DoEvents Loop Debug.Print Format(Timer - t, "0.0000") End Sub
[/vba] 35 секунд [vba]
Код
Sub мяв() Dim flag As Boolean Dim arr1, arr2 Dim i&, j&, k& Dim t! t = Timer arr1 = Range("A:A").Value ReDim arr2(1 To UBound(arr1), 1 To 1) For i = 1 To UBound(arr1) If Len(arr1(i, 1)) = 0 Then flag = True Else flag = False If flag Then k = k + 1 Else If k Then j = j + 1 arr2(j, 1) = k k = 0 flag = False End If End If Next Range("E2").Resize(j) = arr2 Debug.Print Format(Timer - t, "0.0000") End Sub
[/vba] 0,45 секунды
[vba]
Код
Sub Мяууу() Dim flag As Boolean Dim i&, ii&, k& Dim t! t = Timer Application.ScreenUpdating = False i = 1 If Len(Cells(i, 1)) Then k = 1 Do While i < Rows.Count If Len(Cells(i, 1).Offset(1)) Then flag = True Else flag = False ii = Cells(i, 1).End(xlDown).Row If Not flag Then Cells(Rows.Count, 4).End(xlUp).Offset(1) = ii - i - k Else End If k = 1 i = ii DoEvents Loop Debug.Print Format(Timer - t, "0.0000") End Sub
[/vba] 35 секунд [vba]
Код
Sub мяв() Dim flag As Boolean Dim arr1, arr2 Dim i&, j&, k& Dim t! t = Timer arr1 = Range("A:A").Value ReDim arr2(1 To UBound(arr1), 1 To 1) For i = 1 To UBound(arr1) If Len(arr1(i, 1)) = 0 Then flag = True Else flag = False If flag Then k = k + 1 Else If k Then j = j + 1 arr2(j, 1) = k k = 0 flag = False End If End If Next Range("E2").Resize(j) = arr2 Debug.Print Format(Timer - t, "0.0000") End Sub
Здравствуйте RAN!!! Большое Вам спасибо за макросы. Я протестировал скорость выполнения каждого и вот что у меня получилось. Макрос Мяyyy у вас 35 секунд у меня почему то 28 минут, макрос Мяв у вас 0,45 секунд у меня 0,56 секунд. Я просто у шоке от того, как оптимизировав макрос можно ооочень существенно выиграть в скорости его выполнения 35 сек против 0,45 сек. Еще раз благодарю за проделанную работу!!! Желаю Вам здравия и Вашей умной голове. ГЕНИАЛЬНО!!!
Здравствуйте RAN!!! Большое Вам спасибо за макросы. Я протестировал скорость выполнения каждого и вот что у меня получилось. Макрос Мяyyy у вас 35 секунд у меня почему то 28 минут, макрос Мяв у вас 0,45 секунд у меня 0,56 секунд. Я просто у шоке от того, как оптимизировав макрос можно ооочень существенно выиграть в скорости его выполнения 35 сек против 0,45 сек. Еще раз благодарю за проделанную работу!!! Желаю Вам здравия и Вашей умной голове. ГЕНИАЛЬНО!!! djon2012