Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/разделение на листы при отработке макроса, отработка VBA - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
разделение на листы при отработке макроса, отработка VBA
DM7265 Дата: Вторник, 05.01.2021, 23:41 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Добрый день, всем,
подскажите, пожалуйста, в решении след. задачи:
есть макрос, который генерит комбинаторные наборы, однако excel спотыкается при превышении строк в 1 млн записей,
как можно доработать его, чтоб после отработки в 1 млн, результат записывался на других листах,
заранее спасибо! и с Новым годом!

[vba]
Код
Sub MyCombin()
Dim a&(), i&, j&, m&, n&, p&
n = Val(InputBox("n =", , 10))
m = Val(InputBox("m =", , 3))
If n < m Or m < 1 Then Exit Sub

ReDim a&(1 To m), b&(1 To WorksheetFunction.Combin(n, m), 1 To m)
For i = 1 To m: a(i) = i: Next i
If m = n Then p = 1 Else p = m

Range("a1").CurrentRegion.ClearContents
Do
j = j + 1
For i = 1 To m: b(j, i) = a(i): Next i
If a(m) = n Then p = p - 1 Else p = m
If p Then
For i = m To p Step -1
a(i) = a(p) + i - p + 1
Next i
End If
Loop While p
[a1].Resize(UBound(b), m) = b
End Sub
[/vba]


Сообщение отредактировал DM7265 - Среда, 06.01.2021, 00:12
 
Ответить
СообщениеДобрый день, всем,
подскажите, пожалуйста, в решении след. задачи:
есть макрос, который генерит комбинаторные наборы, однако excel спотыкается при превышении строк в 1 млн записей,
как можно доработать его, чтоб после отработки в 1 млн, результат записывался на других листах,
заранее спасибо! и с Новым годом!

[vba]
Код
Sub MyCombin()
Dim a&(), i&, j&, m&, n&, p&
n = Val(InputBox("n =", , 10))
m = Val(InputBox("m =", , 3))
If n < m Or m < 1 Then Exit Sub

ReDim a&(1 To m), b&(1 To WorksheetFunction.Combin(n, m), 1 To m)
For i = 1 To m: a(i) = i: Next i
If m = n Then p = 1 Else p = m

Range("a1").CurrentRegion.ClearContents
Do
j = j + 1
For i = 1 To m: b(j, i) = a(i): Next i
If a(m) = n Then p = p - 1 Else p = m
If p Then
For i = m To p Step -1
a(i) = a(p) + i - p + 1
Next i
End If
Loop While p
[a1].Resize(UBound(b), m) = b
End Sub
[/vba]

Автор - DM7265
Дата добавления - 05.01.2021 в 23:41
doober Дата: Среда, 06.01.2021, 11:19 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 971
Репутация: 333 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте.
Можно так.


 
Ответить
СообщениеЗдравствуйте.
Можно так.

Автор - doober
Дата добавления - 06.01.2021 в 11:19
DM7265 Дата: Среда, 06.01.2021, 22:29 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

doober, больше спасибо!
отрабатывает чудесно!
с праздниками!
с уважением, Дмитрий.
 
Ответить
Сообщениеdoober, больше спасибо!
отрабатывает чудесно!
с праздниками!
с уважением, Дмитрий.

Автор - DM7265
Дата добавления - 06.01.2021 в 22:29
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!