Здравствуйте. Сразу скажу, что в коде я почти 0, а то что нужно - формулами не сделать. Поиск по форуму юзал, но все что находил - не совсем то. Прошу помощи сообщества. Суть задачи: однократно заполнить некоторое количество ячеек случайными числами (но в некотором диапазоне). Причем как отрицательные, так и положительные числа. Условие по которому происходит заполнение - изменение значения одной из ячеек "ручками". Так же не должно влиять открытие и закрытие файла вплоть до следующего ручного изменения той самой ячейки. Теперь конкретно по файлу-примеру. Меняем руками значение ячейки E1 на любое другое (в том числе и содержащее текст) - меняются числа в диапазонах C5:C15 и H5:H15 "Значение". При этом формулы в столбцах E и J "Отклонение" должны "сработать" (если не ошибаюсь - это никуда не денется??). Добавлю, что количество строк в этих "Наборах" может варьироваться. Но это уже "по месту" буду разбираться. Спасибо. [p.s.]На самом деле таких "Карточек" надо изготовить целую "гору", поэтому руками вбивать %)[/p.s.]
Здравствуйте. Сразу скажу, что в коде я почти 0, а то что нужно - формулами не сделать. Поиск по форуму юзал, но все что находил - не совсем то. Прошу помощи сообщества. Суть задачи: однократно заполнить некоторое количество ячеек случайными числами (но в некотором диапазоне). Причем как отрицательные, так и положительные числа. Условие по которому происходит заполнение - изменение значения одной из ячеек "ручками". Так же не должно влиять открытие и закрытие файла вплоть до следующего ручного изменения той самой ячейки. Теперь конкретно по файлу-примеру. Меняем руками значение ячейки E1 на любое другое (в том числе и содержащее текст) - меняются числа в диапазонах C5:C15 и H5:H15 "Значение". При этом формулы в столбцах E и J "Отклонение" должны "сработать" (если не ошибаюсь - это никуда не денется??). Добавлю, что количество строк в этих "Наборах" может варьироваться. Но это уже "по месту" буду разбираться. Спасибо. [p.s.]На самом деле таких "Карточек" надо изготовить целую "гору", поэтому руками вбивать %)[/p.s.]ales_ost
Pelena, да вобщем-то разово задается для разового выполнения условия замены ячейки Е1. В примере формулку в эти ячейки прикрутил с использованием функции СЛЧИСЛО, "обвязав" ее фиксированными числами. Получилось, что в одном "Наборе" диапазон от 10.00 до 10.10, в другом -20.00 до -20.10. Только эта функция реагирует на каждый "чих", проделанный с файлом. Не подходит, поэтому и понял что без кода не получится. UPD: В примере сам диапазон задан в виде константы (10 и -20) и множителя для случайного числа. В идеале нужно и константу менять в некотором диапазоне и тоже случайно. Например (как в моем файле) хотелось бы чтоб по первому изменению номера "карточки" "набор 1" был в диапазоне от 9.00 до 9.10, другая замена от 11.00 до 11.10, третья от 8.00 до 8.10. Второй "набор" соответственно. То есть целочисленная часть для "набора" при выполнении условия меняется однократно (в небольшом диапазоне, например от 8 до 11), дробная - случайным образом для каждой ячейки во всем "наборе" (в своем диапазоне). Думаю, что конкретные цифры в коде уж осилю задать сам. Ну вообще, разбираться буду, сам уже "подкручивать".
А количество строк в "наборах" для конкретного количества "карточек" будет неизменным. Для следующей партии "карточек" полезу в код... Полагаю, что так проще, чем еще учитывать изменение количества строк сразу в коде. Да и начинать разбираться надо с чего попроще.
Pelena, да вобщем-то разово задается для разового выполнения условия замены ячейки Е1. В примере формулку в эти ячейки прикрутил с использованием функции СЛЧИСЛО, "обвязав" ее фиксированными числами. Получилось, что в одном "Наборе" диапазон от 10.00 до 10.10, в другом -20.00 до -20.10. Только эта функция реагирует на каждый "чих", проделанный с файлом. Не подходит, поэтому и понял что без кода не получится. UPD: В примере сам диапазон задан в виде константы (10 и -20) и множителя для случайного числа. В идеале нужно и константу менять в некотором диапазоне и тоже случайно. Например (как в моем файле) хотелось бы чтоб по первому изменению номера "карточки" "набор 1" был в диапазоне от 9.00 до 9.10, другая замена от 11.00 до 11.10, третья от 8.00 до 8.10. Второй "набор" соответственно. То есть целочисленная часть для "набора" при выполнении условия меняется однократно (в небольшом диапазоне, например от 8 до 11), дробная - случайным образом для каждой ячейки во всем "наборе" (в своем диапазоне). Думаю, что конкретные цифры в коде уж осилю задать сам. Ну вообще, разбираться буду, сам уже "подкручивать".
А количество строк в "наборах" для конкретного количества "карточек" будет неизменным. Для следующей партии "карточек" полезу в код... Полагаю, что так проще, чем еще учитывать изменение количества строк сразу в коде. Да и начинать разбираться надо с чего попроще.ales_ost
Сообщение отредактировал ales_ost - Четверг, 07.09.2017, 04:45
Private Sub Worksheet_Change(ByVal Target As Range) Dim arr1(1 To 11) Dim arr2(1 To 11) If Target.Address <> "$E$1" Then Exit Sub Set rR = Range("C5:C15") r1 = WorksheetFunction.RandBetween(8, 11) Do r2 = WorksheetFunction.RandBetween(8, 11) Loop Until r1 <> r2 For i = 1 To 11 arr1(i) = r1 + Rnd / 10 + 0.01 arr2(i) = r2 + Rnd / 10 + 0.01 Next i rR.Value = Application.Transpose(arr1) rR.Offset(0, 1).Value = r1 rR.Offset(0, 5).Value = Application.Transpose(arr2) rR.Offset(0, 6).Value = r2 End Sub
[/vba]
Добрый день. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim arr1(1 To 11) Dim arr2(1 To 11) If Target.Address <> "$E$1" Then Exit Sub Set rR = Range("C5:C15") r1 = WorksheetFunction.RandBetween(8, 11) Do r2 = WorksheetFunction.RandBetween(8, 11) Loop Until r1 <> r2 For i = 1 To 11 arr1(i) = r1 + Rnd / 10 + 0.01 arr2(i) = r2 + Rnd / 10 + 0.01 Next i rR.Value = Application.Transpose(arr1) rR.Offset(0, 1).Value = r1 rR.Offset(0, 5).Value = Application.Transpose(arr2) rR.Offset(0, 6).Value = r2 End Sub
sboy, благодарю. Начало есть, от чего оттолкнутся. Видимо я не совсем корректно расписал алгоритм, но уже разобрался. Оффсеты по r1 (0,1) и r2 (0,6) именно в таком виде не требовались. Буду дальше прикручивать уже по месту. Плюсую. По ходу дела скорей всего будут еще вопросы. Будем посмотреть
sboy, благодарю. Начало есть, от чего оттолкнутся. Видимо я не совсем корректно расписал алгоритм, но уже разобрался. Оффсеты по r1 (0,1) и r2 (0,6) именно в таком виде не требовались. Буду дальше прикручивать уже по месту. Плюсую. По ходу дела скорей всего будут еще вопросы. Будем посмотреть ales_ost