Как перемешать строки в excel в произвольном порядке
Argument ‘Topic id’ is null or empty
Сейчас на форуме
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
| ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Перемешать случайным образом данные в каждой строке
Есть лист Excel в котором столбцы E, F, G, H. Можно ли как-то перемешать эти столбцы случайным образом? Т.е. допустим было так:
ans1 ans2 ans3 ans4 Сигнала Свистка Салюта Поцелуя Сетка План Бредень Динамит шар цилиндр конус пирамида
а стало так:
ans2 ans4 ans1 ans3 Свистка Поцелуя Сигнала Салюта План Динамит Сетка Бредень цилиндр пирамида шар конус
Отслеживать
8,326 3 3 золотых знака 18 18 серебряных знаков 24 24 бронзовых знака
задан 4 мар 2018 в 20:01
1,053 14 14 серебряных знаков 24 24 бронзовых знака
Т.е. содержимое этих столбцов перемешать случайным образом.
4 мар 2018 в 20:16
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Макросом, тасование Фишера — Йетса:
Sub Shuffle() ' Тасование столбцов целиком Dim Tmp As Range Dim V As Variant Dim I As Integer Dim J As Integer Dim Cols As Variant Cols = Array(Range("E:E"), Range("F:F"), Range("G:G"), Range("H:H")) For I = 3 To 1 Step -1 J = Int((I + 1) * Rnd) Set Tmp = Cols(J) V = Tmp.Value Cols(J).Value = Cols(I).Value Cols(I).Value = V Next I End Sub Sub Shuffle() ' Тасование столбцов построчно Dim R As Long Dim J As Integer Dim Tmp As Variant R = 1 While (Not IsEmpty(Cells(R, 5))) For I = 3 To 1 Step -1 J = Int((I + 1) * Rnd) + 5 Tmp = Cells(R, J).Value Cells(R, J).Value = Cells(R, I + 5).Value Cells(R, I + 5).Value = Tmp Next I R = R + 1 Wend End Sub
Отслеживать
ответ дан 5 мар 2018 в 5:12
6,151 3 3 золотых знака 19 19 серебряных знаков 38 38 бронзовых знаков
Чуть чуть не то что мне нужно. Мне нужно не просто столбцы целиком в случайном порядке перемешать, а данные во всех столбцах. Например есть столбцы E, F, G,H и первая строчка в этих столбцах. Нужно в этой строчке перемешать данные, также во второй и т.д.
5 мар 2018 в 5:39
Обновил ответ, отрабатывает до первой пустой строки в столбце E
5 мар 2018 в 6:11
Спасибо большое.
5 мар 2018 в 6:27
У меня 35 тысяч строк и для таких больших данных вылезает ошибка Run-time erroe ‘6’: Overflow на строчке R = R + 1
5 мар 2018 в 6:39
Должно помочь Dim R As Long
5 мар 2018 в 6:43
Можно так (перемешать целиком столбцы/строки). Обложите свои данные случайными значениями функции =СЛЧИС() (или =RAND() ) как ниже на примере (диапазон начинается со строки 1 и со столбца A, к примеру).
0,340428874 0,076703163 0,807499996 0,919554717 0,61390529 Салюта Свистка Поцелуя Сигнала 0,850945887 Бредень План Динамит Сетка 0,944935893 конус цилиндр пирамида шар
Далее нам нужно перемешать значения . Выделяем следующий диапазон
0,340428874 0,076703163 0,807499996 0,919554717 Салюта Свистка Поцелуя Сигнала Бредень План Динамит Сетка конус цилиндр пирамида шар
Переходим Главная -> Сортировка и фильтр -> Настраиваемая сортировка -> Параметры -> Столбцы диапазона -> Ok . Далее Сортировать по выбираем Строка 1
0,810736094 0,922569869 0,208575751 0,283217144 0,928293194 Поцелуя Салюта Сигнала Свистка 0,274564895 Динамит Бредень Сетка План 0,516270878 пирамида конус шар цилиндр
или так (каждый раз по разному)
0,711695007 0,041197715 0,207870941 0,979356982 0,718814292 Свистка Поцелуя Сигнала Салюта 0,259560572 План Динамит Сетка Бредень 0,198317825 цилиндр пирамида шар конус
Аналогично, если нам нужно перемешать по столбцам. Выделяем так
0,61390529 Салюта Свистка Поцелуя Сигнала 0,850945887 Бредень План Динамит Сетка 0,944935893 конус цилиндр пирамида шар
Переходим Главная -> Сортировка и фильтр -> Настраиваемая сортировка -> Параметры -> Строки диапазона -> Ok . Далее Сортировать по выбираем Столбец A . На выходе
0,512852582 0,603497885 0,519960084 0,219585455 0,331536762 конус цилиндр пирамида шар 0,021012338 Бредень План Динамит Сетка 0,666965896 Салюта Свистка Поцелуя Сигнала
0,815880199 0,91124554 0,168220289 0,761347258 0,339763721 Бредень План Динамит Сетка 0,0601611 конус цилиндр пирамида шар 0,81674225 Салюта Свистка Поцелуя Сигнала
Больше данных, больше вариантов.
Быстрый метод перемешивания элементов списка в Excel
В этом приеме описывается быстрый метод перемешивания элементов списка. Это подобно перетасовке колоды карт, где каждая строка представляет собой карту.
На рис. 165.1 вы можете видеть список из двух столбцов, отсортированных в определенном порядке по столбцу В. Цель заключается в том, чтобы расставить строки в случайном порядке.

Рис. 165.1. Этот список может быть перемешан случайным образом
- В ячейку С1 введите заголовок Случайное число.
- В ячейку С2 введите следующую формулу: =СЛЧИС() .
- Скопируйте С2 вниз по столбцу, чтобы таблица стала полной.
- Активизируйте любую ячейку в столбце С и выберите Главная ► Редактирование ► Сортировка и фильтр ► Сортировка от минимального к максимальному (или щелкните правой кнопкой мыши и выберите команду Сортировка в контекстном меню).
Для получения другой случайной конфигурации нажмите F9, чтобы сгенерировать новые случайные числа, а затем отсортируйте снова. На рис. 165.2 показан перемешанный список.

Рис. 165.2. Список после перемешивания
Сортировка строк в случайном порядке
Приложение Excel обладает обширным набором инструментов для упорядочивания данных. Расстановка значений по возрастанию и убыванию, по алфавиту, цвету шрифта и цвету заливки. Также предусмотрена возможность многоуровневой сортировки. Упорядочить данные можно при помощи стандартных функций Excel, но в этой публикации речь пойдет о наведении беспорядка.
Случайная сортировка математической функцией СЛЧИС
В приложении Microsoft Excel отсутствует стандартная возможность перестановки значений в хаотичном порядке, но такую задачу можно решить при помощи стандартной математической функции. В ячейки отдельного, вспомогательного столбца необходимо внести формулу «=СЛЧИС()», после чего применить стандартную сортировку по возрастанию либо убыванию. Важно, чтобы между вспомогательным столбцом и перемешиваемым диапазоном отсутствовали пустые столбцы.
Программное перемешивание строк случайным образом
Чтобы не тратить время и силы на ввод и удаление формул, можно использовать надстройку для Excel. Программное решение задачи также реализовано при помощи генерации случайных чисел, но результат достигается гораздо быстрее и без лишних усилий со стороны пользователя. В программе предусмотрена возможность быстрого перемешивания строк на одном и на всех листах, на видимых, непустых, с определенными именами, с установленным интервалом номеров, а также на листах с заданным значением в определенном диапазоне ячеек.

Возможен выбор различных диапазонов, ограничивающих перемешиваемые строки: используемый, предварительно выделенный, заданный пользователем вручную, именованный, начинающийся от заданной ячейки и заканчивающийся концом листа.
Различные сочетания предусмотренных в надстройке опций позволяют быстро перемешать данные произвольным образом на активном листе и в пределах всей рабочей книги.