Макрос для генерации случайных чисел excel

Генератор случайных чисел в VBA Excel. Функция Rnd, оператор Randomize, функция рабочего листа RandBetween. Синтаксис, параметры, примеры кода.

Rnd – это функция, которая возвращает значение типа Single, содержащее псевдослучайное число меньшее 1, но большее или равное нулю.

Псевдослучайное число отличается от случайного тем, что оно получено с помощью алгоритма, который, в любом случае, подчиняется какой-либо закономерности. Для решения большинства, а возможно и всех, задач в VBA Excel псевдослучайное число можно считать случайным.

Синтаксис

Rnd[(Число)]

Число – необязательный параметр, определяющий алгоритм вычисления псевдослучайного числа. Зависимость случайного числа от этого параметра:

Число Возвращаемое значение
Меньше нуля Одно и то же псевдослучайное число каждый раз, как результат использования параметра Число в качестве начального значения для алгоритма
Больше нуля Каждое следующее число в псевдослучайном порядке
Равно нулю Самое последнее псевдослучайное число, созданное функцией Rnd
По умолчанию Каждое следующее число в псевдослучайном порядке

Для любого параметра Число создается одна и та же последовательность чисел, так как каждый последующий вызов функции Rnd использует предыдущее значение в качестве начального для следующего псевдослучайного числа в последовательности.

Функция Rnd – это и есть простейший генератор случайных чисел в VBA Excel, возвращающий значения в интервале 0<=Rnd<1.

Чтобы повысить «случайность» псевдослучайных чисел, возвращаемых функцией Rnd, используется оператор Randomize.

Оператор Randomize

Randomize – это оператор, который инициализирует генератор случайных чисел функции Rnd, задавая начальное число для генерации первого псевдослучайного числа.

Синтаксис

Randomize[Число]

Число – необязательный параметр, задающий начальное число для генерации. Если параметр Число опущен, используется значение, возвращенное системным таймером.

При повторном использовании в VBA Excel оператора Randomize с тем же значением аргумента Число предыдущая последовательность не повторяется.

Для повторения предыдущей последовательности случайных чисел необходимо непосредственно перед оператором Randomize с тем же значением аргумента Число вызвать функцию Rnd с отрицательным аргументом.

WorksheetFunction.RandBetween

RandBetween – функция рабочего листа, возвращающая целое случайное число в пределах заданного диапазона значений.

Синтаксис

WorksheetFunction.RandBetween(Arg1, Arg2)

  • Arg1 – наименьшее целое число, которое возвращает функция рабочего листа RandBetween (обязательный параметр);
  • Arg2 – наибольшее целое число, которое возвращает функция рабочего листа RandBetween (обязательный параметр).

Примеры записи строк с WorksheetFunction.RandBetween в VBA Excel (присвоение случайного числа переменной):

a = WorksheetFunction.RandBetween(65, 15)

a = WorksheetFunction.RandBetween(5, 145)

Если данную функцию вставить в ячейку рабочего листа, например: =СЛУЧМЕЖДУ(25;55), случайное число будет обновляться при каждом пересчете листа.

Примеры с Rnd и Randomize

Пример 1
Запускаем генератор случайных чисел функции Rnd с разными параметрами и выводим результаты на рабочий лист Excel:

Sub Primer1()

Dim i As Byte

  Cells(1, 1) = «Rnd(-5)»

    For i = 2 To 5

      Cells(i, 1) = Rnd(5)

    Next

  Cells(1, 2) = «Rnd(3)»

    For i = 2 To 5

      Cells(i, 2) = Rnd(3)

    Next

  Cells(1, 3) = «Rnd(0)»

    For i = 2 To 5

      Cells(i, 3) = Rnd(0)

    Next

End Sub

Получаем следующий результат:

Случайные числа, возвращаемые функцией Rnd с разными аргументами

Пример 2
Повторное использование оператора Randomize с тем же значением аргумента Число:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

Sub Primer2()

Dim i As Byte

  Cells(1, 1) = «Последовательность 1»

  Rnd (1)

  Randomize 4

    For i = 2 To 5

      Cells(i, 1) = Rnd

    Next

  Cells(1, 2) = «Последовательность 2»

  Randomize 4

    For i = 2 To 5

      Cells(i, 2) = Rnd

    Next

  Cells(1, 3) = «Последовательность 3»

  Rnd (1)

  Randomize 4

    For i = 2 To 5

      Cells(i, 3) = Rnd

    Next

End Sub

Строка кода Rnd (-1) обеспечивает генерацию последовательности случайных чисел сначала при повторных использованиях оператора Randomize.

Повторное использование оператора Randomize при генерации случайных чисел

Строка кода Randomize 4 перед заполнением второго столбца не влияет на работу функции Rnd, а заполнение последовательности для третьего столбца начинается заново благодаря строке Rnd (-1) перед оператором Randomize.

Пример 3
Создание генераторов случайных чисел для разных диапазонов. Исходим из того, что функция Rnd генерирует псевдослучайную последовательность из чисел меньше 1, но больше или равным 0.

Примеры с положительными случайными числами:

‘От 0 (включительно) до 10

  10 * Rnd

‘От 6 (включительно) до 7

  Rnd + 6

‘От 5 (включительно) до 10

  5 * Rnd + 5

Примеры с отрицательными случайными числами:

‘От -10 до 0 (включительно)

  10 * Rnd

‘От -10 до 10 (включительно)

  20 * Rnd + 10

‘От -10 до -5 (включительно)

  (5 * Rnd + 5)

Пример заполнения ячеек положительными и отрицательными случайными числами на листе Excel:

Sub Primer3()

Dim i As Byte

  Cells(1, 1) = «От 1 до 3»

    For i = 2 To 9

      Cells(i, 1) = 2 * Rnd + 1

    Next

  Cells(1, 2) = «От -5 до 5»

    For i = 2 To 9

      Cells(i, 2) = 10 * Rnd + 5

    Next

  Cells(1, 3) = «От -5 до -2»

    For i = 2 To 9

      Cells(i, 3) = 3 * Rnd 2

    Next

End Sub

Результат выполнения кода VBA Excel третьего примера:

Примеры положительных и отрицательных случайных чисел

excel random numberGenerating random numbers in Excel can be useful for a number of applications, from statistical sampling to computer simulation.  Even gambling.   Sometimes an unpredictable result is exactly what you need.  In Excel, there are several ways to generate random numbers depending on your requirements and skill level.  The first thing we’ll look at is the RAND function and some of its variations.  Once we have that down, we’ll write a simple macro to generate random numbers, too.  Ultimately, macros will give you the most comprehensive power, and you can learn all about their amazing capabilities in this macro and VBA tutorial.

The most common random number generator (RNG) in Excel is the RAND function.  There are two ways to enter RAND.  Because it’s such a short function, typing it manually is arguably the quickest, and a general rule of thumb is to learn the long-hand version first, thereby making you worthy of the shortcut.  The RAND syntax is: =rand().  See?  It’s practically a shortcut already.  Note: in the newer versions of Excel, as you begin to type, you will be provided with a list of relevant functions to choose from:

Screen Shot 2013-12-12 at 5.37.51 PM

You can also use the Formula Builder to insert RAND.  Even if you decide to enter RAND manually, the Formula Builder is an invaluable tool to easily and reliably attach longer, more difficult formulas.  To locate the Formula Builder, click on the Formulas tab on your Ribbon bar (the Ribbon bar is the green (Excel 2011) bar with a Home tab on its extreme left side):

Screen Shot 2013-12-12 at 7.05.16 PM

Find and click on the Formula Builder button that appears below.  This will bring up a dialogue box:

Screen Shot 2013-12-12 at 7.06.56 PM

Type in “rand” in the search bar and hit enter.  Several options should appear, but the ones in which we are most interested are RAND and RANDBETWEEN.  For now, double-click RAND.  It will be entered into the cell you preselected.  Tab over and a number between 0 and 1 will be generated in the cell; this is what RAND does, every time.  You can drag the fill handle to the range that you want to contain this formula:

Screen Shot 2013-12-12 at 7.13.35 PM

For generating numbers between 0 and numbers greater or less than 1, modify the RAND syntax in the following way: =rand()*x, in which “x” is a number of your choosing.  To generate numbers between 0 and 50, your syntax should look like this: =rand()*50.

For generating random numbers in absolutely any range of your choosing, you will use the RANDBETWEEN function.  This can be found in your formula builder, or you can quickly enter it manually: =randbetween(x,y), in which “x” is the bottom number and “y” the top number.  You’re probably getting the picture by now, but if you want to generate numbers between 35 and 75, your function should look like this: =randbetween(35,75).  And again, simply drag the fill handle over your desired range.

Now, let’s look at something a little more advanced.  First, we have to locate the macro builder.

  • Click Excel on the title bar
  • Go to Preferences
  • Under Sharing and Privacy, click Ribbon
  • There will be a list: Tab or Group Titles.  Scroll down until you see Developer and select it.

Your Ribbon bar will now display a Developer tab, and this is where you will find Macros (second from the left):

Screen Shot 2013-12-12 at 7.16.01 PM

Click on Macros to launch the Macro dialogue box.  Name your macro GenerateRandom and click Create:

Screen Shot 2013-12-12 at 5.54.41 PM

This is the code you will write (or copy/paste) into the field:

Screen Shot 2013-12-12 at 5.51.56 PM

This one is pretty self-explanatory.  Once we run the macro, we can expect random numbers between 0 and 1 to generate in rows 1-100 in column A.

So.  To run the macro, exit the Macro dialogue box.  Now all you have to do is click Macros again, select GenerateRandom from your list, and hit Run:

Screen Shot 2013-12-12 at 8.11.26 PM

Every time you run the macro, the numbers will re-generate.  You can see how useful this would be if you wanted to generate, say, ten-thousand random numbers.  You can also see how, with a few small modifications, anyone can tailor a simple piece of code to accomplish a variety of tasks.  People have written millions of macros and proudly display them online for public use.  Have some fun Googling cool Excel macros and see what you discover.  Often you can just cut and paste someone else’s hard work and instantly own an awesome, complex piece of code.  Learning to write your own macros is time well spent, but you’re likely to need more than a Google search.

Macros have you stressed?  Become a Zen Master of data (yes, they actually exist) and bridge the gap between “data” and “insight.”

Случайные числа без повторов

Постановка задачи

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

  • генерация уникальных случайных кодов для товаров или пользователей
  • назначение людей на задачи (каждому по случайной из списка)
  • перестановки слов в поисковом запросе (привет seo-шникам)
  • игра в лото и т.д.

Способ 1. Простой

Для начала рассмотрим простой вариант: нам необходимо получить случайный набор из 10 целых чисел от 1 до 10. Использование встроенной в Excel функции СЛУЧМЕЖДУ (RANDBETWEEN) уникальности не гарантирует. Если ввести ее в ячейку листа и скопировать вниз на 10 ячеек, то запросто могут случиться повторы:

random-unique3.png

Поэтому мы пойдем другим путем.

Во всех версиях Excel есть функция РАНГ (RANG), предназначенная для ранжирования или, другими словами, определения топовой позиции числа в наборе. Для самого большого числа в списке ранг=1, второе в топе имеет ранг=2 и т.д.

Введем в ячейку А2 функцию СЛЧИС (RAND) без аргументов и скопируем формулу вниз на 10 ячеек. Эта функция сгенерирует нам набор из 10 случайных дробных чисел от 0 до 1:

random-unique1.png

В соседний столбец введем функцию РАНГ, чтобы определить позицию в рейтинге для каждого полученного случайного числа:

random-unique2.png

Получим в столбце В то, что хотели — любое нужное количество неповторяющихся случайных целых чисел от 1 до 10.

Чисто теоретически, может возникнуть ситуация, когда СЛЧИС выдаст нам два одинаковых случайных числа в столбце А, их ранги совпадут и мы получим повтор в столбце В. Однако, вероятность такого сценария крайне мала, учитывая тот факт, что точность составляет 15 знаков после запятой.

Способ 2. Сложный

Этот способ чуть сложнее, но использует всего одну формулу массива. Допустим, нам нужно создать на листе список из 9 неповторяющихся случайных целых чисел в интервале от 1 до 50.

Введите в ячейку А2 следующую формулу, нажмите в конце Ctrl+Shift+Enter (чтобы ввести ее как формулу массива!) и скопируйте формулу вниз на требуемое количество ячеек:

random-unique4.png

Способ 3. Макрос

Ну и, конечно, можно решить задачу с помощью программирования на Visual Basic. В одной из старых статей про случайную выборку я уже приводил  макро-функцию массива Lotto, которая выдает требуемое количество случайных неповторяющихся чисел из заданного интервала.

Ссылки по теме

  • Как подсчитать количество уникальных значений в диапазоне
  • Случайная выборка элементов из списка

Home / VBA / How to Generate Random Numbers in VBA

In VBA, there are different ways that you can use to generate a random number in Excel, and in this post, we will look at all of them one by one.

RND Function

To generate a random number, in VBA, there is a function called RND. This function stands for random and when you use this function in code it returns a random number between 0 to 1. In RND, you don’t need to specify any argument.

Range("A1") = Rnd()

The above code uses it to get a random number in the A1 and it has returned 0.705547521.

But when you use it for an entire range it returns the same random number in the entire range and that makes it void for use to generate random numbers more than once.

Now here it doesn’t make sense to use it, right? But there’s a solution that you can use, FOR NEXT LOOP.

In the above code, you have a loop that loops through 10 cells (one by one) from the selected cell and adds a random number.

Here’s the full code:

Sub vba_random_number()
Dim i As Long
i = 10
For i = 1 To i
    ActiveCell.Value = Rnd()
    ActiveCell.Offset(1, 0).Select
Next i
End Sub

Random Number Between Two Numbers

If you want to generate a random number between two defined numbers, in that case, you need to write code by using two VBA Functions (RND + INT). The code for this formula would be like below.

Sub vba_random_number()
Dim myRnd As Integer
myRnd = Int(2 + Rnd * (45 - 10 + 1))
Range("A1") = myRnd
End Sub

When you run this macro, RND uses the max number and the min number that you have defined to generate the random number and INT removes the decimal from that.

Using Worksheet Functions in a VBA Code to Generate a Random Number

In VBA, you can access worksheet functions and use them to get a result by specifying the arguments. There are two functions from the worksheet that can help you to get a random number in the result.

  • RandBetween
  • RandArray

Before you use these functions make sure to understand the arguments that you need to define. Now in the below code, you have RANDBETWEEN which generates a random number between two numbers.

Range("A1") = WorksheetFunction.RandBetween(1000, 2000)

Here the max number is 2000 and the min number is 1000. In the same way, you can use the RANDARRAY which is dynamic arrays function.

Here’s the code.

Range("A1:B10") = WorksheetFunction.RandArray(10, 2, 1000, 2000, True)

If you look at the syntax of the RANDARRAY, you will find that you can enter random numbers in an entire range which is not possible with all the methods that we have discussed above.

макрос генерирования случайных чисел в n-количество ячеек

Markovich

Дата: Воскресенье, 13.12.2020, 22:35 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 48


Репутация:

0

±

Замечаний:
0% ±


Excel 2019

Доброго времени суток, уважаемые форумчане! Пользуюсь простейшим макросом ГСЧ с изменяемым диапазоном генерирования. Возникла необходимость его доработать, но не хватает знаний по VBA. Нужно, чтобы случайные числа генерировались на другой лист (service1) c изменяемым диапазоном ячеек, т.е. генерация в ячейки, начиная с B11 до ячейки B(n), n-берется из ячейки A3 листа service. Буду благодарен за любую помощь в решении задачи.

К сообщению приложен файл:

0860032.xls
(47.5 Kb)

 

Ответить

Kuzmich

Дата: Воскресенье, 13.12.2020, 22:53 |
Сообщение № 2

Группа: Проверенные

Ранг: Ветеран

Сообщений: 707


Репутация:

154

±

Замечаний:
0% ±


Excel 2003

[vba]

Код

Sub random_service_Генератор_()
Dim Srv1 As Worksheet
Dim i As Long
  Set Srv1 = ThisWorkbook.Worksheets(«service1»)
  With Srv1
    For i = 11 To Range(«A3»)
      Randomize
      ‘СЛУЧ_МЕЖДУ = Int((верх_граница — нижн_граница + 1) * Rnd + нижн_граница)
      .Cells(i, «B») = Int((Cells(i, «H») — Cells(i, «G») + 1) * Rnd + Cells(i, «G»))
    Next
    .Activate
  End With
End Sub

[/vba]

 

Ответить

Markovich

Дата: Понедельник, 14.12.2020, 19:13 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 48


Репутация:

0

±

Замечаний:
0% ±


Excel 2019

Работает как надо. Мир не без добрых людей. Kuzmich, большое Вам спасибо!!! Не сочтите за наглость, есть у меня есть несколько вопросов: после выполнения макроса мне нужно оставаться на листе service (с кнопкой), для этого я удалил строку .Activate, вроде работает. Так правильно поступить или это некорректное действие? И еще… таких аналогичных генераторов мне нужно три (с разными конечно адресами). Как правильно их склеить в один макрос, или лучше три разных макроса прописать в четвертом и его выполнять? В каком случае они отработают быстрее, если будут работать одновременно или последовательно один за другим? И еще вопрос возник, а в каком месте задается лист с исходными данными «service», вот целевой «service1» видно где? Макрос буду интегрировать в таблицу с множеством листов, и кнопка будет находиться на третьем листе, Может где то нужно вписать название листа «service»?

Сообщение отредактировал MarkovichПонедельник, 14.12.2020, 19:37

 

Ответить

Kuzmich

Дата: Понедельник, 14.12.2020, 20:13 |
Сообщение № 4

Группа: Проверенные

Ранг: Ветеран

Сообщений: 707


Репутация:

154

±

Замечаний:
0% ±


Excel 2003

Цитата

мне нужно оставаться на листе service (с кнопкой)
для этого я удалил строку .Activate

Правильно

Цитата

таких аналогичных генераторов мне нужно три

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

Цитата

в каком месте задается лист с исходными данными «service»

У вас макрос привязан к кнопке на листе «service», поэтому он будет активным при запуске макроса

 

Ответить

Markovich

Дата: Понедельник, 14.12.2020, 23:03 |
Сообщение № 5

Группа: Пользователи

Ранг: Новичок

Сообщений: 48


Репутация:

0

±

Замечаний:
0% ±


Excel 2019

У вас макрос привязан к кнопке на листе «service», поэтому он будет активным при запуске макроса

А возможно макрос привязать не к кнопке, она будет на третьем листе, а именно к листу «service»? Смысл в том что данные у меня вводятся на одном листе, там же и кнопка расположена, а их обработка происходит на других листах. сделано так, чтобы не сбивались формулы при добавлении/удалении строк и не лист не был перегружен множеством формул

 

Ответить

Kuzmich

Дата: Понедельник, 14.12.2020, 23:36 |
Сообщение № 6

Группа: Проверенные

Ранг: Ветеран

Сообщений: 707


Репутация:

154

±

Замечаний:
0% ±


Excel 2003

Цитата

А возможно макрос привязать не к кнопке, она будет на третьем листе, а именно к листу «service»

Можно, но макрос тогда надо запускать из меню Сервис -> Макрос при активном листе «service»
Хотя вы писали

Цитата

мне нужно оставаться на листе service (с кнопкой)

Так где же будет кнопка?

 

Ответить

Markovich

Дата: Вторник, 15.12.2020, 12:02 |
Сообщение № 7

Группа: Пользователи

Ранг: Новичок

Сообщений: 48


Репутация:

0

±

Замечаний:
0% ±


Excel 2019

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

Kuzmich, извиняюсь за неполное объяснение того как должен в идеале работать макрос генератора. Честно говоря, надеялся самостоятельно доработать полученный от Вас макрос до требуемых результатов, но переоценил свои возможности, к сожалению не хватает знаний VBA. Приходится всецело уповать на помощь. Во вложении образец как в итоге хотелось бы, чтобы работали генераторы. Пояснения к вложению:
— генератор1. границы берутся из столбцов G и H листа «service» и генерируются в столбец B листа «service1», начиная со строки 11 до строки с номером из ячейки A3 листа «service». Кнопка находится на листе «Технические сведения»;
— генератор2. границы берутся только от J11 до K11 листа «service» и генерируются в столбец D листа «service1», начиная со строки 11 до строки с номером из ячейки A3 листа «service». Кнопка та же что и для генератора1,3 на листе «Технические сведения»;
— генератор3. границы константа (например от 100 до 200) и генерируются в столбец F листа «service1», начиная со строки 11 до строки с номером из ячейки A3 листа «service». Кнопка та же что и для генератора1,2 на листе «Технические сведения»;
— генератор4. границы константа (например от 50 до 100) и генерируются в столбец H листа «service1», начиная со строки 11 до строки с номером из ячейки A5 листа «service2». Кнопка находится на листе «данные»
Получается одна кнопка на листе «Технические сведения» для генераторов 1,2,3 и вторая на листе «данные» для генератора4

К сообщению приложен файл:

2889060.xls
(51.0 Kb)

 

Ответить

Kuzmich

Дата: Вторник, 15.12.2020, 13:18 |
Сообщение № 8

Группа: Проверенные

Ранг: Ветеран

Сообщений: 707


Репутация:

154

±

Замечаний:
0% ±


Excel 2003

Цитата

одна кнопка на листе «Технические сведения» для генераторов 1,2,3

Макрос для этой кнопки
[vba]

Код

Sub random_service_Генератор_()
Dim Srv As Worksheet
Dim Srv1 As Worksheet
Dim i As Long
Set Srv = ThisWorkbook.Worksheets(«service»)
Set Srv1 = ThisWorkbook.Worksheets(«service1»)
  Srv.Activate
With Srv1
  For i = 11 To Range(«A3»)
    Randomize
    ‘СЛУЧ_МЕЖДУ = Int((верх_граница — нижн_граница + 1) * Rnd + нижн_граница)
    .Cells(i, «B») = Int((Cells(i, «H») — Cells(i, «G») + 1) * Rnd + Cells(i, «G»))
    .Cells(i, «D») = Int((Cells(11, «K») — Cells(11, «J») + 1) * Rnd + Cells(11, «J»))
    .Cells(i, «F») = Int((100 — 50 + 1) * Rnd + 50)
  Next
    .Activate
End With
End Sub

[/vba]
Для Генератора4 по аналогии

 

Ответить

Markovich

Дата: Вторник, 15.12.2020, 13:55 |
Сообщение № 9

Группа: Пользователи

Ранг: Новичок

Сообщений: 48


Репутация:

0

±

Замечаний:
0% ±


Excel 2019

Здорово! То что нужно! Только еще есть пара вопросов… Что нужно сделать, чтобы остаться на листе с кнопкой? Если убираю .Activate, то переходит на лист service. и не очень понятен синтаксис:
.Cells(i, «F») = Int((100 — 50 + 1) * Rnd + 50)
т.е, если мне нужен диапазон от 20 до 30, то строка будет такого вида:
.Cells(i, «F») = Int((30 — 20 + 1) * Rnd + 20)

Огромное Вам спасибо за помощь!

 

Ответить

Pelena

Дата: Вторник, 15.12.2020, 13:57 |
Сообщение № 10

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Markovich, оформите строчки кода тегами, для этого в режиме правки поста выделите и нажмите кнопку #


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Markovich

Дата: Вторник, 15.12.2020, 14:01 |
Сообщение № 11

Группа: Пользователи

Ранг: Новичок

Сообщений: 48


Репутация:

0

±

Замечаний:
0% ±


Excel 2019

[vba]

Код

Sub random_service_Генератор_()
Dim Srv As Worksheet
Dim Srv1 As Worksheet
Dim i As Long
Set Srv = ThisWorkbook.Worksheets(«service»)
Set Srv1 = ThisWorkbook.Worksheets(«service1»)
Set tech = ThisWorkbook.Worksheets(«Технические сведения»)
Srv.Activate
With Srv1
For i = 11 To Range(«A3»)
Randomize
‘СЛУЧ_МЕЖДУ = Int((верх_граница — нижн_граница + 1) * Rnd + нижн_граница)
.Cells(i, «B») = Int((Cells(i, «H») — Cells(i, «G») + 1) * Rnd + Cells(i, «G»))
.Cells(i, «D») = Int((Cells(11, «K») — Cells(11, «J») + 1) * Rnd + Cells(11, «J»))
.Cells(i, «F») = Int((30 — 20 + 1) * Rnd + 20)
Next
tech.Activate
End With
End Sub

[/vba]

Сообщение отредактировал MarkovichВторник, 15.12.2020, 15:06

 

Ответить

Kuzmich

Дата: Вторник, 15.12.2020, 14:05 |
Сообщение № 12

Группа: Проверенные

Ранг: Ветеран

Сообщений: 707


Репутация:

154

±

Замечаний:
0% ±


Excel 2003

Копировать и вставлять нужно при русской раскладке клавиатуры

Цитата

Что нужно сделать, чтобы остаться на листе с кнопкой?

Можно исправить в макросе так
[vba]

Код

‘.Activate
    ThisWorkbook.Worksheets(«Технические сведения»).Activate

[/vba]

 

Ответить

Markovich

Дата: Вторник, 15.12.2020, 14:11 |
Сообщение № 13

Группа: Пользователи

Ранг: Новичок

Сообщений: 48


Репутация:

0

±

Замечаний:
0% ±


Excel 2019

Как оперативно Вы отвечаете! Пока тупил с кодировкой, Вы уже ответили. Еще раз большое Вам спасибо, с наступающими праздниками и «сбычи мечт»!

 

Ответить

китин

Дата: Вторник, 15.12.2020, 14:45 |
Сообщение № 14

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

Замечаний:
0% ±


Excel 2007;2010;2016

Markovich, — Прочитайте Правила форума
— Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

Понравилась статья? Поделить с друзьями:
  • Макрос для выделения строки цветом в excel
  • Макрос для программы word
  • Макрос для выбора даты в excel
  • Макрос для проверки значения в ячейке в excel
  • Макрос для вставки фото в excel