Вопрос № 122611: Имеется код, вытаскивающий случайную запись из таблицы. Используется функция Rnd(). Почему вытаскиваются одни и те же записи? Как избежать этой псевдослучайности?...Вопрос № 122673: Есть строка допустим B4:B20, она изменяется и может стать длиней или короче, нужно что бы последняя ячейка для нашего случая это B21 была суммой (B4:B20). Также необходимо использовать свойство Formula
...
Вопрос № 122.611
Имеется код, вытаскивающий случайную запись из таблицы. Используется функция Rnd(). Почему вытаскиваются одни и те же записи? Как избежать этой псевдослучайности?
Приложение:
Отправлен: 11.02.2008, 08:26
Вопрос задал: Mombassa (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Николай Владимирович / Н.В.
Здравствуйте, Mombassa!
Функция Rnd генерит псевдослучайные числа. Чтобы получалась всегда разная последовательность чисел, инициализируйте генератор чисел с помощью randomize.
Для этого напишите строчку randomize
перед i = Int(rs.RecordCount * Rnd())
Если rs.RecordCount меньше 10, то всегда будет возвращен 0 (т.к. int округляет число в меньшую сторону).
Удачи!
Ответ отправил: Николай Владимирович / Н.В. (статус: Профессионал) Россия, Москва WWW:nvsoft.org ICQ: 420720 ---- Ответ отправлен: 11.02.2008, 08:37 Оценка за ответ: 5
Отвечает: Коровин Александр
Здравствуйте, Mombassa!
Попробуйте до использования функции Rnd() вставить оператор Randomize без аргументов для инициализации генератора случайных чисел, использующим системное время в качестве числа-инициализатора.
Ответ отправил: Коровин Александр (статус: 1-ый класс)
Ответ отправлен: 11.02.2008, 09:03 Оценка за ответ: 5
Отвечает: Максим Sly
Здравствуйте, Mombassa!
Попробуйте в начале процедуры вставить строчку Randomize - эта функция позволяет каждый раз при запуске программы выбирать другое множество чисел
--------- Мы не ищем легких путей.... они сами нас находят:)
Ответ отправил: Максим Sly (статус: 1-ый класс)
Ответ отправлен: 11.02.2008, 12:05
Вопрос № 122.673
Есть строка допустим B4:B20, она изменяется и может стать длиней или короче, нужно что бы последняя ячейка для нашего случая это B21 была суммой (B4:B20). Также необходимо использовать свойство Formula
Отвечает: Игорь Елизаров
Здравствуйте, Irkutskiy Konstantin!
Здравствуйте, Irkutskiy Konstantin!
Это зависит от того, как заполняются предыдущие ячейки.
если они заполняются также через вашу программу, то можно номер последней ячейки занести в переменную и в формуле использовать CELLS
.Cells(y, x).formulaR1c1 = "=sum(rc[-1]:rc[-10])"
где y - строка
x - столбец
зная начальную ячейку и конечную, строку формул можно предварительно сформировать
вот пример, как у меня реализовано сумморование с заранее неизвестным количеством строк
For j = 1 To 39 ' в итоговой строке 39 полей
y = stroka + 2
x = stolb + j
.Cells(y, x).formulaR1c1 = formula_txt
Next j
но есть другой вариант, я его использую все чаще..
Это использование заранее настроенных в EXCEL шаблонов/
В этом случае формулы прописываются в шаблон заранее, а программно (или руками)
вставляете нужные столбцы или ячейки.
С уважением, Игорь
--------- Пользователь - тоже человек..
Ответ отправил: Игорь Елизаров (статус: Студент)
Ответ отправлен: 11.02.2008, 17:30