powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Разбивка миллионной таблицы на несколько в рамках одной книги
4 сообщений из 4, страница 1 из 1
Разбивка миллионной таблицы на несколько в рамках одной книги
    #38779564
CoKOS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Есть проблема.
Большая таблица на миллион записей.. необходимо разбить с той же структурой на несколько листов не более 65 000 записей.
Есть вариант через сводную таблицу, но необходимо задавать номер группы через формулу...это 16 вложенных "если". Очень долго.

Может кто знает макрос?
...
Рейтинг: 0 / 0
Разбивка миллионной таблицы на несколько в рамках одной книги
    #38779602
An12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
код не мой, но как основа пойдет


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
Sub Нарезать_файлы_для_импорта()
'До начала работы нужно установить нижнюю границу диапазона данных на листе и период импорта!!!
Dim StartRange As Long
Dim EndRange As Long
Dim Part As Long
Dim Period As String
Dim Cycles As Integer
Dim StartCycle As Long
Dim EndCycle  As Long
Dim Save_Path As String
Dim Sheet_Name  As String
Dim i As Integer

StartRange = 2
Part = 10000
EndRange = InputBox("Нижняя граница диапазона")
Period = InputBox("Период (м/д/гггг")
'Period = "8/1/2011"

Cycles = Round((EndRange - StartRange + 1) / Part)
If Cycles * Part < (EndRange - StartRange + 1) Then Cycles = Cycles + 1

StartCycle = StartRange
EndCycle = StartRange + Part - 1
Application.DisplayAlerts = False
Save_Path = ActiveWorkbook.Path
Sheet_Name = ActiveSheet.Name
InsertedRows = EndCycle - StartCycle + 1

For i = 1 To Cycles
    Sheets(Sheet_Name).Select
    strRange = "A" + Trim(Str(StartCycle)) + ":C" + Trim(Str(EndCycle))
    Sheets(Sheet_Name).Range(strRange).Select
    Selection.Copy
    
    Workbooks.Add
    ActiveSheet.Name = "шаблон AS"
    
    Sheets("шаблон AS").Select
    Sheets("шаблон AS").Range("A3").Select
    Sheets("шаблон AS").Paste
    Sheets("шаблон AS").Range("B1").FormulaR1C1 = "28"
    Sheets("шаблон AS").Range("B1").FormulaR1C1 = "28"
    Sheets("шаблон AS").Range("A2").FormulaR1C1 = "текст1"
    Sheets("шаблон AS").Range("B2").FormulaR1C1 = "текст2"
    Sheets("шаблон AS").Range("C2").FormulaR1C1 = Period
    
    ActiveWorkbook.Names.Add "Поле1", "='шаблон AS'!$B$1"
    ActiveWorkbook.Names.Add "Поле2", "='шаблон AS'!$C$2"
    ActiveWorkbook.Names.Add "Поле3", "='шаблон AS'!$A$3:$A$" + Trim(Str(InsertedRows + 2))
    ActiveWorkbook.Names.Add "Поле4", "='шаблон AS'!$B$3:$B$" + Trim(Str(InsertedRows + 2))
    ActiveWorkbook.Names.Add "Поле5", "='шаблон AS'!$C$3:$C$" + Trim(Str(InsertedRows + 2))
    
    ActiveWorkbook.SaveAs Filename:= _
        Save_Path + "\Export_to_Intalev" + "_" + Trim(Str(i)) + ".xls", FileFormat _
        :=xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
        False, CreateBackup:=False
    ActiveWindow.Close
    
    If i = Cycles - 1 Then
        StartCycle = EndCycle + 1
        EndCycle = EndRange
    Else
        StartCycle = EndCycle + 1
        EndCycle = StartCycle + Part - 1
    End If

    InsertedRows = EndCycle - StartCycle + 1
Next

Application.DisplayAlerts = True
End Sub

...
Рейтинг: 0 / 0
Разбивка миллионной таблицы на несколько в рамках одной книги
    #38779633
CoKOS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
An12,

Ясно , понятно.
Жаль наименования таблицы не сохраняет.
Попробую.

Спасибо!
...
Рейтинг: 0 / 0
Разбивка миллионной таблицы на несколько в рамках одной книги
    #38779744
CoKOS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
закрыто
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Разбивка миллионной таблицы на несколько в рамках одной книги
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]