Добрый день, коллеги, Есть список с множеством столбцов. Количество строк может быть разным от 50 до 10к Нужно из этого количества в этой же таблице макросом оставить 10% строк. Можно такое сделать?
Помогите пазязя)))
Добрый день, коллеги, Есть список с множеством столбцов. Количество строк может быть разным от 50 до 10к Нужно из этого количества в этой же таблице макросом оставить 10% строк. Можно такое сделать?
А зачем макрос? Просто найти точку 10% (в уме) от начала списка, исходя из общего количества строк нельзя? И потом вручную удалить всё, что ниже этой точки. Или в чем подвох?
А зачем макрос? Просто найти точку 10% (в уме) от начала списка, исходя из общего количества строк нельзя? И потом вручную удалить всё, что ниже этой точки. Или в чем подвох?Gustav
Sub www() Dim i&, x&, a& i = Cells(Rows.Count, 1).End(xlUp).Row x = ((i - 1) / 100) * 10 MsgBox "10% строк = " & x For a = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If x = a Then Exit Sub Rows(a + 1).EntireRow.Delete Next End Sub
[/vba]
оставляет округленно 10% строк
[vba]
Code
Sub www() Dim i&, x&, a& i = Cells(Rows.Count, 1).End(xlUp).Row x = ((i - 1) / 100) * 10 MsgBox "10% строк = " & x For a = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If x = a Then Exit Sub Rows(a + 1).EntireRow.Delete Next End Sub
Тогда добавить служебную колонку с функцией =СЛЧИС(), дать вычислиться формулам, скопировать/специально вставить "только значения", отсортироваться по этой колонке и опять найти в уме 10% и то, что ниже удалить
Quote (konstantinp)
Нужно оставить 10% случайных строк)
Тогда добавить служебную колонку с функцией =СЛЧИС(), дать вычислиться формулам, скопировать/специально вставить "только значения", отсортироваться по этой колонке и опять найти в уме 10% и то, что ниже удалить Gustav
Если включить макрорекоддер и проделать все, о чем писал Gustav, будет "нада"! А 10% - это общее кол-во строк, деленное на 10. Вот это количество строк с начала таблицы и оставить.
Quote (konstantinp)
нада макрос
Если включить макрорекоддер и проделать все, о чем писал Gustav, будет "нада"! А 10% - это общее кол-во строк, деленное на 10. Вот это количество строк с начала таблицы и оставить.RAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Понедельник, 23.07.2012, 18:05
Sub www() Dim a&, i&, x& Dim c As Range Application.ScreenUpdating = False i = Cells(Rows.Count, 2).End(xlUp).Row x = ((i - 1) / 100) * 10 MsgBox "10% строк = " & x For a = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If x = a Or x = 0 Then Exit Sub Rows(Int(((a) * Rnd) + 2)).EntireRow.Delete Next Application.ScreenUpdating = True End Sub
[/vba]
вот вроде
[vba]
Code
Sub www() Dim a&, i&, x& Dim c As Range Application.ScreenUpdating = False i = Cells(Rows.Count, 2).End(xlUp).Row x = ((i - 1) / 100) * 10 MsgBox "10% строк = " & x For a = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If x = a Or x = 0 Then Exit Sub Rows(Int(((a) * Rnd) + 2)).EntireRow.Delete Next Application.ScreenUpdating = True End Sub