Книга: Excel. Трюки и эффекты
Случайные числа – на основании диапазона
Случайные числа – на основании диапазона
Трюк, который мы рассмотрим в данном подразделе, по своей функциональности несколько напоминает предыдущий. Различие заключается в том, что здесь в случайном порядке генерируются числа, содержащиеся в определенном диапазоне (этот диапазон является единственным аргументом рассматриваемой функции). Код функции выглядит следующим образом (листинг 2.76).
Листинг 2.76. Функция dhGetRandomValuesI
Function dhGetRandomValues1(rgSource As Range) As Variant
Dim intRow As Integer ' Номер текущей строки
Dim intCol As Integer ' Номер текущего столбца
Dim avarOut() As Variant ' Выходной массив (двумерный)
Dim avarValues() As Variant ' Массив с возможными значениями
Dim intValCount As Integer ' Количество возможных значений
Dim cell As Range
Dim i As Integer
ReDim avarOut(1 To Application.Caller.Rows.Count, 1 To _
Application.Caller.Columns.Count)
' Всего нужно чисел...
intValCount = rgSource.Rows.Count * rgSource.Columns.Count
ReDim avarValues(1 To intValCount)
' Заполнение массива avarValues значениями из указанного _
диапазона
For Each cell In rgSource
i = i + 1
avarValues(i) = cell.Value
Next cell
' Занесение значений в выходной массив avarOut, в произвольном _
порядке выбирая их из avarValues
Randomize
For intRow = 1 To Application.Caller.Rows.Count
For intCol = 1 To Application.Caller.Columns.Count
' Определение номера элемента из avarValues
i = Rnd * intValCount
If i = 0 Then i = 1
' Занесение этого элемента в выходной массив
avarOut(intRow, intCol) = avarValues(i)
Next intCol
Next intRow
' Возвращение массива значений
dhGetRandomValues1 = avarOut
End Function
Для применения данной функции необходимо иметь диапазон с исходными данными. Синтаксис функции выглядит следующим образом (пример):
=dhGetRandomValues1(A1:C5)
Здесь А1: С5 – диапазон с исходными данными. Как и в предыдущем примере, данная функция применяется ко всему предварительно выделенному диапазону—с помощью сочетания клавиш CtrL+Shift+Enter. После применения функции данные исходного диапазона будут в произвольном порядке разбросаны в новом диапазоне.
- Объединение данных диапазона
- Объединение данных с учетом форматов
- Эксперименты с датой
- Выбор из текста всех чисел
- Прописная буква только в начале текста
- Перевод чисел в «деньги»
- Подсчет количества повторов искомого текста
- Суммирование данных только видимых ячеек
- При суммировании – курсор внутри диапазона
- Начисление процентов в зависимости от суммы
- Еще о расчете процентов
- Сводный пример расчета комиссионного вознаграждения
- Подсчет количества ячеек, содержащих указанные значения
- Подсчет количества видимых ячеек в диапазоне
- Поиск ближайшего понедельника
- Подсчет количества полных лет
- Проверка, была ли сохранена рабочая книга
- Расчет средневзвешенного значения
- Преобразование номера месяца в его название
- Расчет суммы первых значений диапазона
- Поиск последней непустой ячейки диапазона
- Поиск последней непустой ячейки столбца
- Поиск последней непустой ячейки строки
- Подсчет количества ячеек в диапазоне, содержащих указанные значения
- Англоязычный текст – заглавными буквами
- Отображение текста «задом наперед»
- Поиск максимального значения на всех листах книги
- Использование относительных ссылок
- Определение типа данных ячейки
- Выделение из текста произвольного элемента
- Генератор случайных чисел
- Случайные числа – на основании диапазона
- Снова числа
- Глава 19 Случайные числа
- Числа с плавающей точкой
- 6. Совершенные числа
- 6.2.2. Нахождение границ диапазона
- 7.2. Усилители диапазона СВЧ
- Урок 6.2. Работа с ячейками, диапазонами и листами
- Практическая работа 43. Операции с ячейками, диапазонами и листами
- 2.2. Арифметические операции над числами, представленными в различных системах счисления
- Есть ли в коде волшебные числа[141]?
- 5. Простые числа
- 12.6. Псевдослучайные числа