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

Вход

Регистрация

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

 

= Мир MS Excel/Оставить 10% строк - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Оставить 10% строк
konstantinp Дата: Понедельник, 23.07.2012, 17:09 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

Добрый день, коллеги,
Есть список с множеством столбцов. Количество строк может быть разным от 50 до 10к
Нужно из этого количества в этой же таблице макросом оставить 10% строк.
Можно такое сделать?

Помогите пазязя)))
К сообщению приложен файл: 10.xls (20.5 Kb)
 
Ответить
СообщениеДобрый день, коллеги,
Есть список с множеством столбцов. Количество строк может быть разным от 50 до 10к
Нужно из этого количества в этой же таблице макросом оставить 10% строк.
Можно такое сделать?

Помогите пазязя)))

Автор - konstantinp
Дата добавления - 23.07.2012 в 17:09
Gustav Дата: Понедельник, 23.07.2012, 17:23 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
А зачем макрос? Просто найти точку 10% (в уме) от начала списка, исходя из общего количества строк нельзя? И потом вручную удалить всё, что ниже этой точки. Или в чем подвох?


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеА зачем макрос? Просто найти точку 10% (в уме) от начала списка, исходя из общего количества строк нельзя? И потом вручную удалить всё, что ниже этой точки. Или в чем подвох?

Автор - Gustav
Дата добавления - 23.07.2012 в 17:23
konstantinp Дата: Понедельник, 23.07.2012, 17:25 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

А, не написал)))
Нужно оставить 10% случайных строк)
 
Ответить
СообщениеА, не написал)))
Нужно оставить 10% случайных строк)

Автор - konstantinp
Дата добавления - 23.07.2012 в 17:25
ABC Дата: Понедельник, 23.07.2012, 17:30 | Сообщение № 4
Группа: Друзья
Ранг: Обитатель
Сообщений: 397
Репутация: 112 ±
Замечаний: 0% ±

Excel 2007
оставляет округленно 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
[/vba]


MS Excel 2007 and 2010...
-------------------------------
С Уважением, Даулет
 
Ответить
Сообщениеоставляет округленно 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
[/vba]

Автор - ABC
Дата добавления - 23.07.2012 в 17:30
Gustav Дата: Понедельник, 23.07.2012, 17:45 | Сообщение № 5
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Quote (konstantinp)
Нужно оставить 10% случайных строк)

Тогда добавить служебную колонку с функцией =СЛЧИС(), дать вычислиться формулам, скопировать/специально вставить "только значения", отсортироваться по этой колонке и опять найти в уме 10% и то, что ниже удалить smile


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Quote (konstantinp)
Нужно оставить 10% случайных строк)

Тогда добавить служебную колонку с функцией =СЛЧИС(), дать вычислиться формулам, скопировать/специально вставить "только значения", отсортироваться по этой колонке и опять найти в уме 10% и то, что ниже удалить smile

Автор - Gustav
Дата добавления - 23.07.2012 в 17:45
konstantinp Дата: Понедельник, 23.07.2012, 17:48 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

ABC,
Спасиб.
А если случайных значений?
 
Ответить
СообщениеABC,
Спасиб.
А если случайных значений?

Автор - konstantinp
Дата добавления - 23.07.2012 в 17:48
konstantinp Дата: Понедельник, 23.07.2012, 17:57 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

Gustav,
Не подходит( нада макрос
 
Ответить
СообщениеGustav,
Не подходит( нада макрос

Автор - konstantinp
Дата добавления - 23.07.2012 в 17:57
RAN Дата: Понедельник, 23.07.2012, 18:03 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Quote (konstantinp)
нада макрос

Если включить макрорекоддер и проделать все, о чем писал Gustav, будет "нада"!
А 10% - это общее кол-во строк, деленное на 10. Вот это количество строк с начала таблицы и оставить.


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Понедельник, 23.07.2012, 18:05
 
Ответить
Сообщение
Quote (konstantinp)
нада макрос

Если включить макрорекоддер и проделать все, о чем писал Gustav, будет "нада"!
А 10% - это общее кол-во строк, деленное на 10. Вот это количество строк с начала таблицы и оставить.

Автор - RAN
Дата добавления - 23.07.2012 в 18:03
konstantinp Дата: Понедельник, 23.07.2012, 18:33 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

RAN,
С рекордером мучаюсь, пока не получается.
Дело в том, что количество строк будет меняться.
 
Ответить
СообщениеRAN,
С рекордером мучаюсь, пока не получается.
Дело в том, что количество строк будет меняться.

Автор - konstantinp
Дата добавления - 23.07.2012 в 18:33
Gustav Дата: Понедельник, 23.07.2012, 18:44 | Сообщение № 10
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
На основе макроса ABC:

[vba]
Code

Sub www()
Dim i&, x&, a&

     i = Cells(Rows.Count, 1).End(xlUp).Row
     x = ((i - 1) / 100) * 10
     MsgBox "10% строк = " & x
         
      
     With Range("A1").CurrentRegion
          
         With .Offset(1, .Columns.Count).Resize(.Rows.Count - 1, 1)
             .Formula = "=RAND()"
             .Calculate
             .Copy
             .PasteSpecial xlPasteValues
         End With
         Application.CutCopyMode = False
          
         With .Offset(, .Columns.Count).Resize(1, 1)
             .Value = "Слчис"
             .Sort Key1:=.Cells(1, 1), Header:=xlYes
         End With
          
         .Columns(.Columns.Count + 1).Clear
     End With
      
     Rows(CStr(x + 1 & ":" & Cells(Rows.Count, 1).End(xlUp).Row)).EntireRow.Delete
      
End Sub
[/vba]


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Понедельник, 23.07.2012, 18:48
 
Ответить
СообщениеНа основе макроса ABC:

[vba]
Code

Sub www()
Dim i&, x&, a&

     i = Cells(Rows.Count, 1).End(xlUp).Row
     x = ((i - 1) / 100) * 10
     MsgBox "10% строк = " & x
         
      
     With Range("A1").CurrentRegion
          
         With .Offset(1, .Columns.Count).Resize(.Rows.Count - 1, 1)
             .Formula = "=RAND()"
             .Calculate
             .Copy
             .PasteSpecial xlPasteValues
         End With
         Application.CutCopyMode = False
          
         With .Offset(, .Columns.Count).Resize(1, 1)
             .Value = "Слчис"
             .Sort Key1:=.Cells(1, 1), Header:=xlYes
         End With
          
         .Columns(.Columns.Count + 1).Clear
     End With
      
     Rows(CStr(x + 1 & ":" & Cells(Rows.Count, 1).End(xlUp).Row)).EntireRow.Delete
      
End Sub
[/vba]

Автор - Gustav
Дата добавления - 23.07.2012 в 18:44
konstantinp Дата: Понедельник, 23.07.2012, 19:25 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

Gustav,
Спасиб! Оч. круто
ABC, Спасибо!
 
Ответить
СообщениеGustav,
Спасиб! Оч. круто
ABC, Спасибо!

Автор - konstantinp
Дата добавления - 23.07.2012 в 19:25
ABC Дата: Понедельник, 23.07.2012, 19:30 | Сообщение № 12
Группа: Друзья
Ранг: Обитатель
Сообщений: 397
Репутация: 112 ±
Замечаний: 0% ±

Excel 2007
вот вроде

[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
[/vba]


MS Excel 2007 and 2010...
-------------------------------
С Уважением, Даулет
 
Ответить
Сообщениевот вроде

[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
[/vba]

Автор - ABC
Дата добавления - 23.07.2012 в 19:30
konstantinp Дата: Понедельник, 23.07.2012, 19:55 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 0 ±
Замечаний: 0% ±

ABC,
Спасибо!
 
Ответить
СообщениеABC,
Спасибо!

Автор - konstantinp
Дата добавления - 23.07.2012 в 19:55
  • Страница 1 из 1
  • 1
Поиск:

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