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

Макрос перебирает в цикле все ячейки выделенного диапазона,
и в пустые ячейки вставляет случайные числа от 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
Подтвердите, пожалуйста, что вы - человек:
                           ____                _____ 
__ __ ___ ___ | _ \ _ __ ___ | ___|
\ \ /\ / / / __| / __| | |_) | | '_ ` _ \ | |_
\ V V / | (__ | (__ | _ < | | | | | | | _|
\_/\_/ \___| \___| |_| \_\ |_| |_| |_| |_|
Введите код, изображенный в стиле ASCII-арт.

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

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