Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
2 / 1 / 2
Регистрация: 21.07.2014
Сообщений: 33

Заполнение ячеек

10.02.2016, 14:40. Показов 1934. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравия, форум!
Нужна помощь в экселе, я в бейсике полный ноль, так что заранее извините. Вобщем нужен макрос, который будет заполнять выделенный диапазон ячеек данными из списка ячеек, находящихся на другом листе, заполнение должно быть в рандомном порядке.

Добавлено через 11 минут
Нашел вот такой пример
Visual Basic
1
2
3
Range("B3:J20").Select
Selection.Copy
Worksheets("Лист2").Paste Destination:=Worksheets("Лист2").Range("B3:J20")
но тут все прописано в коде, а мне надо чтоб вставка происходила там, где я мышей выделил диапазон и плюс выбор из копируемого диапазона должен быть рандомным
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.02.2016, 14:40
Ответы с готовыми решениями:

Заполнение ячеек
Отлавливаю ошибку и нужно реализовать такую последовательность:если хоть одна ячейка заполнена,то не выводим MsgBox,а если не заполнена не...

Макрос на заполнение ячеек
Добрый день, фоурмчане! Необходима ваша неоценимая помощь и подсказ, как разобраться с заданием: "В произвольные клетки...

Заполнение диапазона ячеек
Еще вопрос. Запросите у пользователя диапазон ячеек и заполните его случайными символами. Программа должна запускаться по нажатии на...

12
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
10.02.2016, 17:18
Цитата Сообщение от Мерсер Посмотреть сообщение
заполнение должно быть в рандомном порядке
Повторы допускаются? А если заполняемый диапазон больше, чем диапазон с данными?
0
2 / 1 / 2
Регистрация: 21.07.2014
Сообщений: 33
11.02.2016, 08:18  [ТС]
1. Повторы допускаются.
2. Заполняемый диапазон заведомо НЕ будет больше данных.
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
11.02.2016, 08:37
Лучший ответ Сообщение было отмечено Мерсер как решение

Решение

в первом приближении, с возможностью повторов
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub Mer()
Dim v(), i&, n&, w&, c As Range, d As Range
  On Error Resume Next
  Set d = Application.InputBox("Выберите диапазон данных мышкой" & vbLf & _
    "или введите адрес", Type:=8)
  If Err Then Exit Sub
  v = d.Value
  n = d.Count
  w = UBound(v, 2)
  For Each c In Selection
    i = Int(Rnd * n)
    c.Value = v(i \ w + 1, i Mod w + 1)
  Next
End Sub
1
2 / 1 / 2
Регистрация: 21.07.2014
Сообщений: 33
11.02.2016, 13:14  [ТС]
Разрешите ко-что уточнить. не пойму зачем в этой строке
Visual Basic
1
c.Value = v(i \ w + 1, i Mod w + 1)
берется остаток деления
Visual Basic
1
Mod
. И косая черта
Visual Basic
1
i \ w
- это знак деления или что?

Добавлено через 1 час 36 минут
Скажите правильно ли я определяю пустая ячейка или нет?
Visual Basic
1
If Not IsEmpty(d.Value) Then v = d.Value
Добавлено через 1 час 18 минут
подскажите, пожалуйста, последний вопрос...
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
11.02.2016, 13:29
Цитата Сообщение от Мерсер Посмотреть сообщение
зачем в этой строке ... берется остаток деления
Мне нужно взять случайный элемент массива. Число элементов массива n, поэтому случайный номер i = Int(Rnd * n) - целое число от 0 до n-1. Но массив двумерный (даже если была выбрана одна строка или один столбец). Число элементов в строке w. Если считать, что элементы массива пронумерованы сначала по строкам, а потом по столбцам, то номер строки i\w - это деление с отбрасыванием остатка, получается число от 0 до числа строк-1, а номер элемента в строке i Mod w - остаток от деления, получается число от 0 до w-1. Индексация элементов массива начинается с 1, поэтому приходится прибавлять 1.
Можно так
Visual Basic
1
2
3
4
5
  h = UBound(v)
  w = UBound(v, 2)
  For Each c In Selection
    c.Value = v(Int(Rnd * h) + 1, Int(Rnd * w) + 1)
  Next
Цитата Сообщение от Мерсер Посмотреть сообщение
правильно ли я определяю пустая ячейка или нет?
Да, хотя есть нюансы - пустая строка (результат формулы ="") - не Empty. Еще ячейка может содержать значение ошибки, можно проверить IsError(d.Value) .
0
2 / 1 / 2
Регистрация: 21.07.2014
Сообщений: 33
11.02.2016, 13:35  [ТС]
Спасибо. Теперь по проверке - если я проверяю пустоту ячейки правильно, тогда почему у меня после выбора диапазона исходных данных, где есть пустые ячейки (вперемешку с непустыми), скрипт заполняет итоговые ячейки этими пустыми ячейками (также вперемешку с непустыми)?
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
11.02.2016, 13:57
Мерсер, погодите, Вы в коде из #4 вместо v = d.Value это написали?
Так нельзя, d.Value это массив.
Сформулируйте задачу полностью, с учетом пустых ячеек тут и там, и, возможно, еще каких-то условий.
0
2 / 1 / 2
Регистрация: 21.07.2014
Сообщений: 33
11.02.2016, 14:14  [ТС]
Ну так я хотел отбрасывать пустые ячейки в исходном массиве при заполнении целевых ячеек

Добавлено через 4 минуты
Скажите во время выполнения скрипта, что конкретно содержится в d.Value - содержимое всех ячеек выделенного диапазона или что-то другое?
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
11.02.2016, 16:09
Мерсер, да, значения ячеек выбранного диапазона. "Спросите" у своего VBA - пошаговое выполнение F8, состояние переменных в окне Locals и др. команды меню Debug.
1
2 / 1 / 2
Регистрация: 21.07.2014
Сообщений: 33
13.09.2016, 13:29  [ТС]
Здравствуйте, скажите пож., можно ли усовершенствовать рандомную выборку, может быть где-то здесь, точно не уверен -
Цитата Сообщение от Казанский Посмотреть сообщение
i = Int(Rnd * n)
, чтобы при выборе одинакового количества заполняемых ячеек, вставляемые данные не были одинаковыми. Уточню -
лист2 - выбрал 15 ячеек в один столбец, заполнил; лист3 - выбрал 15 ячеек в один столбец, заполнил - вставляемые данные оказываются такими же, как и на листе 2.

Добавлено через 2 минуты
Сейчас мой скрипт выглядит так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub FillCellsAutoSurnam()
    Dim v(), i&, n&, w&, my&, h&, c As Range, d As Range
    On Error Resume Next
        With frmAskPwd
            .Show
            If .txtPwd.Text <> "321" Then Exit Sub
            .txtPwd.Text = ""
        End With
    Set d = Range("Таблица2[ФИО]")
    If Err Then Exit Sub
    v = d.Value
    n = d.Count
    h = UBound(v)
    w = UBound(v, 2)
     For Each c In Selection
       i = Int(Rnd * n)
       c.Value = v(i \ w + 1, i Mod w + 1)
     Next
End Sub
0
Заблокирован
13.09.2016, 13:30
HELP -> RANDOMIZE
1
2 / 1 / 2
Регистрация: 21.07.2014
Сообщений: 33
13.09.2016, 13:50  [ТС]
написал так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub FillCellsAutoSurnam()
    Dim v(), i&, n&, w&, my&, h&, c As Range, d As Range
    On Error Resume Next
        With frmAskPwd
            .Show
            If .txtPwd.Text <> "321" Then Exit Sub
            .txtPwd.Text = ""
        End With
    Set d = Range("Таблица2[ФИО]")
    If Err Then Exit Sub
    v = d.Value
    n = d.Count
    h = UBound(v)
    w = UBound(v, 2)
     Randomize()
     For Each c In Selection
       i = Int(Rnd * n)
       c.Value = v(i \ w + 1, i Mod w + 1)
     Next
End Sub
рандомайз выделяется красным и появляется сообщение "Compile error: Expected: ="

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

Заполнение ячеек из массива
Доброго времени суток! Помогите разобраться. Я понимаю код корявый, но надо взять значения из диапазона, равные значениям в ComboBox,...

Заполнение диапазона ячеек
Запросите у пользователя диапазон ячеек и заполните его случайными цифрами от 0 до 50. Программа должна запускаться по нажатии на кнопку,...

Заполнение ячеек в Excel циклом for
Ячейки в Excel данным способом почему-то не заполняются. Почему? Как это исправить? Sub t() Dim teta As Double teta = 0 For i =...

Заполнение пустых ячеек по формуле
Ку, все пытался хоть что-то придумать с формулами, но видимо без vba тут не обойтись( Есть несколько листов. Все данные на них в одном...

Заполнение ячеек по нажатию на кнопку
Здравствуйте! Помогите, пожалуйста, исправить мой код.. Эта функция вызывается при нажатии на кнопку. И должна на лист &quot;Чеки&quot;...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru