Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 1
Регистрация: 11.07.2017
Сообщений: 3

Макрос по умножению рандомизированных чисел с данными в ячейках

11.07.2017, 01:24. Показов 1392. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста!
Нужен макрос, который умножает значения ячеек из столбца на рандомизированное значение от 0.95 до 1.04 причем нельзя умножать на одинаковое число 2 или более ячейки(ячеек около 2500 на одном листе). Т.е. для каждой ячейки должен быть свой случайный коэфициент в заданном диапазоне. Полученные значения должны замещать старые значения ячеек. И еще кое-что: изменение диапазона значений рандомизатора (желательно в отдельном окошке типа мессенджбокса). Огромное спасибо
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.07.2017, 01:24
Ответы с готовыми решениями:

Макрос для пересчета чисел в ячейках
ПРЕДПОЛОЖИМ В ЯЧЕЙКАХ A1:B4 содержатся некоторые цифры, любые. Нужно все эти цифры разделить например на 28. Т.е. идея вот в чем,...

Создать макрос , который находит модуль чисел в ячейках B2:B11 и записывает в ячейки С2:C11
создайте макрос в excel ,который находит модуль чисел в ячейках B2:B11 и записывает в ячейки С2:C11

Группа ненулевых комплексных чисел по умножению
Нужно привести примеры на натуральные порядки или алгоритм расчета для всех натуральных порядков

4
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
11.07.2017, 04:50
Кустарными приёмами приблизил ожидаемое — пробуйте для начала с единичками в 1-м столбце.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Option Explicit
Option Base 1
Dim randel 'массив коэффициентов для процедуры yмножения колонки 1
 
 
Sub Wow_Grecha() ' создание массива разных чисел из интервала [a; b]
Const a = 0.94
Const b = 1.04
Dim krupa, bean, s As String, i As Long, k As Long
Set krupa = CreateObject("scripting.dictionary") ' словарь (объект VB)
On Error Resume Next
    Randomize
        For i = 1 To 20 'из прикидочного расчёта, что разных будет ~2500
            krupa.Add FormatNumber(a + (b - a) * Rnd, 5), i
        Next
On Error GoTo 0
ReDim randel(1)
        For Each bean In krupa
            k = k + 1
            ReDim Preserve randel(k)
            randel(k) = bean ' запись в массив randel элемента bean
        Next
        
    MsgBox "Количество коэффициентов в randel: " & UBound(randel)
    
    Moire ' эта процедура умножает числа колонки 1 на элементы randel
'    MsgBox Join(randel) ' показ первых случайных элементов массива
    Set krupa = Nothing  ' стёрли использованный словарь…
    Set randel = Nothing ' …и массив коэффициентов
'    Erase randel
End Sub
 
 
Sub Moire()
If Not IsArray(randel) Then MsgBox "Массив пуст.": Exit Sub
Dim cell, k As Long
    For Each cell In ActiveSheet.Columns(1).Cells  ' для клеток колонки 1
        If Not IsEmpty(Trim(cell)) Then ' при том, что эта клетка не пуста
            If IsNumeric(cell) Then
                k = k + 1
' ДЛЯ ОТЛАДКИ новые данные переписываются в соседний столбец, а ниже - в тот же
                cell.Offset(0, 1).Value = cell.Value * randel(k)
'                cell.Value = cell.Value * randel(k)
                If k = UBound(randel) Then Exit Sub ' коэффициенты кончились
            End If
        End If
    Next
End Sub
Для работы — замените 20 на 3000 (строка 13) и откройте 43-ю строку, закрыв (апострофом) предыдущую.
1
0 / 0 / 1
Регистрация: 11.07.2017
Сообщений: 3
11.07.2017, 09:10  [ТС]
Макрос работает с данным диапазоном(0.95-1.04). А как можно сделать так, чтобы нужно было вручную вводить сам диапазон, а также адрес группы ячеек(номер листа, букву столбца,номер начальной и конечной строк)? Спасибо
0
 Аватар для OLEGOFF
1082 / 523 / 141
Регистрация: 27.02.2013
Сообщений: 1,508
11.07.2017, 09:16
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
Const a = 0.94 Const b = 1.04
Ни о чем не говорит?
Вставьте в код InputBoxы и вводите нужные константы
0
0 / 0 / 1
Регистрация: 11.07.2017
Сообщений: 3
11.07.2017, 12:14  [ТС]
Лучший ответ Сообщение было отмечено Sasha_Smirnov как решение

Решение

Во всём разобрался. Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.07.2017, 12:14
Помогаю со студенческими работами здесь

Нужен макрос удаляющий значения в ячейках
Подскажите макрос который будет удалять все значения в ячейках после 44 строки и до 15000 ,ячейки которые нужно очистить расположены в...

Макрос перехода к датам в ячейках Excel
Здравствуйте! Я VBA почти не знаю. Веду БД в Excel и встала необходимость перехода к определенной дате в ячейках слева. Вот код, который...

Макрос для удаления значений в ячейках
Здравствуйте, уважаемые Асы. Помоги написать макросдля Эксель. Смысл такой удалить данные из ячейки в столбце N6, и из всех ячеек в столбце...

Копирование файлов, название которых совпадает с данными в ячейках
Добрый день! Прошу помощи в решении такой задачи. В эксель есть поле с уникальными значениями, например: 1 2 3 4 ... Есть...

Ссылки в ячейках DGV с переходом на форму с данными выбранной строки
Здравствуйте, такая задача есть таблица1 с полями (Фирма, адрес, телефон и т.д) при нажатие на любую запись из таблицы, открывается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru