Заполнение пустых ячеек случайными числами

Макрос перебирает в цикле все ячейки выделенного диапазона,
и в пустые ячейки вставляет случайные числа от 1 до 12:

 

Sub FillBlankCellsWithRandomNumbers()
    ' заполняет пустые ячейки выделенного диапазона
    ' случайными значениями от 1 до 12

    Dim cell As Range, ra As Range
    ' ограничиваем выделенный диапазон используемой областью листа
    Set ra = Intersect(Selection, ActiveSheet.UsedRange)
 
    If ra Is Nothing Then
        MsgBox "В выделенном диапазоне нет пустых ячеек!", _
               vbExclamation, "Нечего заполнять"
    Else
        Application.ScreenUpdating = False    ' отключаем обновление экрана

        ' перебираем все ячейки в выделенном диапазоне
        For Each cell In ra.Cells
            ' если ячейка пустая - вычисляем случайное число, и заносим его в ячейку
            If Trim(cell) = "" Then cell = Fix(Rnd() * 12 + 1)
        Next cell
 
        ' можно и так - записать во все ячейки формулу,
        ' а потом заменить формулы значениями
        'ra.Formula = "=INT(RAND()*12+1)":         ra.Value = ra.Value
    End If
End Sub

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

При таком большом диапазоне ячеек нужно их не в цикле заполнять,
а записать на лист весь массив целиком.

Попробуйте так:

Sub FillBlankCellsWithRandomNumbers()
   Dim ra As Range
    ' ограничиваем выделенный диапазон используемой областью листа
   Set ra = Intersect(Selection, ActiveSheet.UsedRange)
   ' вставляем формулу сразу во все ячейки, потом меняем формулы на значения   
   ra.Formula = "=INT(RAND()*12+1)":         ra.Value = ra.Value
End Sub

PS: Я не знаю, из-за чего такая ошибка.
По идее, код не имеет целочисленных счётчиков, и выдавать ошибку Overflow там нечему...

При запуске макроса выдает Overflow, строк в таблице 43000, выделяю только один столбец. Как это можно обойти?

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
          _            _   ___         
__ _ | |_ ___ | | |_ _| __ _
/ _` | | __| / _ \ | | | | / _` |
| (_| | | |_ | __/ | | | | | (_| |
\__,_| \__| \___| |_| |___| \__,_|
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.