powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel. Макрос. Открытие всех ячеек.
12 сообщений из 62, страница 3 из 3
Excel. Макрос. Открытие всех ячеек.
    #37359582
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
greeb, лишь несколько раз прочитав ваше предыдущее сообщение, я вроде (хотя не уверен), понял о чем речь.
Вы хотите один лист, в котором много тысяч строк, разбить на несколько листов, чтобы в них было не более 2 тысяч строк?
Понятия последняя строка не существует, есть такие понятия как последняя строка содержащая данные, которую можно вычислить, так-же есть максимальный номер строки, к примеру в Excel 2003 это 65535.
...
Рейтинг: 0 / 0
Excel. Макрос. Открытие всех ячеек.
    #37359603
greeb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот смотрите какой макрос мне предложили использовать

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub razdelit_list()
Dim iLastRow As Long, x As Long, n As Long
Application.ScreenUpdating = False
    With ActiveSheet
        iLastRow = .Cells(Rows.Count,  1 ).End(xlUp).Row
        x = Application.InputBox("Укажите количество строк в блоке для переноса на другие листы", "Выбираем размер блока", Type:= 1 )
        n = iLastRow / x
        For i =  1  To n -  1 
            Range(.Cells(x +  1 ,  1 ), .Cells(x + x,  1 )).EntireRow.Cut
            Sheets.Add After:=Sheets(Sheets.Count)
            ActiveSheet.Paste
            Range(.Cells(x +  1 ,  1 ), .Cells(x + x,  1 )).EntireRow.Delete
            iLastRow = .Cells(Rows.Count,  1 ).End(xlUp).Row
        Next
    End With
Application.ScreenUpdating = True
End Sub

Правда у меня эксель зависает когда я пытаюсь закрыть документ без сохранения.
...
Рейтинг: 0 / 0
Excel. Макрос. Открытие всех ячеек.
    #37359623
greeb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы правильно поняли) я писал про цель этого макроса немного выше авторИ еще вопрос. Если в листе слишком много строк, его приходится разбивать на несколько листов и сохранять в отдельные книги. Сложный ли будет макрос для разбивания листа по 2000 строк начиная с конца в отдельные листы? Сохранить их в отдельные кники я и руками смогу))Хотя я участия в создании этих макросов практически не принимаю,но я не прошу чтобы за меня все делали, просто наставления) хотя надо было еще раз написать, а то и правда получилось непонятно.
...
Рейтинг: 0 / 0
Excel. Макрос. Открытие всех ячеек.
    #37359636
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"greeb" <nospam@sql.ru>; сообщил/сообщила в новостях следующее: news:11001374@sql.ru...
> Автор: greeb
> вот смотрите какой макрос мне предложили использовать
>
>
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub razdelit_list()
Dim iLastRow As Long, x As Long, n As Long
Application.ScreenUpdating = False
    With ActiveSheet
        iLastRow = .Cells(Rows.Count,  1 ).End(xlUp).Row
        x = Application.InputBox("Укажите количество строк в блоке для переноса на другие листы", "Выбираем размер 
блока", Type:= 1 )
        n = iLastRow / x
        For i =  1  To n -  1 
            Range(.Cells(x +  1 ,  1 ), .Cells(x + x,  1 )).EntireRow.Cut ' Здесь не совсем понятна система координат для 
определения блока под перенос на другой лист

            Sheets.Add After:=Sheets(Sheets.Count)
            ActiveSheet.Paste ' Это неоднозначность с With ActiveSheet, которая может приводить к разным глюкам
' Лучше завести переменную типа Sheet и работать с добавленными листами через неё. Потом не забыть очистить её 
Nothing'ом
            Range(.Cells(x +  1 ,  1 ), .Cells(x + x,  1 )).EntireRow.Delete ' Тот-же вопрос с системой координат
            iLastRow = .Cells(Rows.Count,  1 ).End(xlUp).Row ' Эта строка не понятно зачем
        Next
    End With
Application.ScreenUpdating = True
End Sub
Попробуй так:
Код: plaintext
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.
Sub razdelit_list()
Dim iLastRow As Long, x As Long, n As Long
Dim sh As Worksheet, nStartRow As Long, nStartCol As Long, nCountCol As Long

Application.ScreenUpdating = False
    With ActiveSheet
        iLastRow = .Cells(Rows.Count,  1 ).End(xlUp).Row
        x = Application.InputBox("Укажите количество строк в блоке для переноса на другие листы", "Выбираем размер 
блока", Type:= 1 )
        nStartRow = Application.InputBox("Укажите начальную строку с которой начинаем перенос на другие листы", 
"Указваем начальную строку", Type:= 1 )
        nStartCol = Application.InputBox("Укажите начальный столбец с которого начинаем перенос на другие листы", 
"Указваем начальный столбец", Type:= 1 )
        nCountCol = Application.InputBox("Укажите количество столбцов в блоке для переноса на другие листы", "Указываем 
количество столбцов", Type:= 1 )
        n = iLastRow / x
        For i =  1  To n -  1 
            Range(.Cells(nStartRow, nStartCol), .Cells(nStartRow + x, nStartCol + nCountCol)).EntireRow.Cut
            Set sh = Sheets.Add(After:=Sheets(Sheets.Count))
            sh.Paste
            Range(.Cells(nStartRow, nStartCol), .Cells(nStartRow + x, nStartCol + nCountCol)).EntireRow.Delete
        Next
        Set sh = Nothing
    End With
Application.ScreenUpdating = True
End Sub


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Excel. Макрос. Открытие всех ячеек.
    #37359673
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
greeb, я так понял основная цель лист разбить на отдельные файлы.

Вот побырому макререкодером записал и чуть подправил

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub Вырезка_Части_текста_в_новую_книгу()
 Dim wb As Workbook
 
 Set wb = ActiveWorkbook 
 
 Rows("1:2000").Copy
 Workbooks.Add
 Cells( 1 ,  1 ).Insert Shift:=xlDown
 wb.Activate
 Rows("1:2000").Delete
 Set wb = Nothing

End Sub

Один раз запускаете макрос на нужном листе, будет создана книга куда перенесутся данные первых 2000 строк.
После этого каждый раз нажимаете комбинацию Ctrl+Y и получаете ещё очередную порцию из новых книг с двумя тысячами строк.
...
Рейтинг: 0 / 0
Excel. Макрос. Открытие всех ячеек.
    #37359738
greeb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на самом деле это я написал там With activesheet, просто оригинальный вариант работал для "лист1"
Макрос кстати вроде не глючит.
Если мне нужно переносить все столбцы, то тогда ведь можно будет убрать необходимость их указания?
iLastRow = .Cells(Rows.Count, 1).End(xlUp).Row (эта строка -- ошибка)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub Макрос1()
Dim iLastRow As Long, x As Long, n As Long 
Application.ScreenUpdating = False 
    With Sheets("Лист1") 
        iLastRow = .Cells(Rows.Count,  1 ).End(xlUp).Row 
        x = Application.InputBox("Укажите количество строк в блоке для переноса на другие листы", "Выбираем размер блока", Type:= 1 )
        n = iLastRow / x 
        For i =  1  To n 
            Range(.Cells(x +  1 ,  1 ), .Cells(x + x,  1 )).EntireRow.Cut 
            Sheets.Add After:=Sheets(Sheets.Count) 
            ActiveSheet.Paste 
            Range(.Cells(x +  1 ,  1 ), .Cells(x + x,  1 )).EntireRow.Delete 
        Next
    End With
Application.ScreenUpdating = True
End Sub
вот в общем какой он сейчас
...
Рейтинг: 0 / 0
Excel. Макрос. Открытие всех ячеек.
    #37359776
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: greeb
> вот в общем какой он сейчас


Еще раз о системе координат:
Ты запрашиваешь размер блока(сколько строчек, по-русски ) для переноса

я на это ввожу 1000

Ты вычисляешь количество блоков по тысяче строк из используемых на листе и в цикле(А!!! теперь я понял )
начинаешь переносить блоки, начиная со второго.

Насчет столбцов - я погорячился. Ты выделяешь всю строку и вырезаешь/вставляешь всю строку. :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Excel. Макрос. Открытие всех ячеек.
    #37359859
greeb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разъясните мне пожалуйста (или ссылку) строчку

Код: plaintext
x = Application.InputBox("Тут как я понимаю указывается сообщение,которое я увижу", "А это я не понимаю", Type:= 1 )

Код: plaintext
Type:= 1 
это тип данных? Где мне посмотреть список : цифорка - тип данных

тогда я думаю можно будет подставить "x" в макрос вместо "2000" и я смогу регулировать количество переносимых строчек.надеюсь можно?

как-то так:

Sub Вырезка_Части_текста_в_новую_книгу()
Dim wb As Workbook

Set wb = ActiveWorkbook

Rows("1:x").Copy
Workbooks.Add
Cells(1, 1).Insert Shift:=xlDown
wb.Activate
Rows("1:x").Delete
Set wb = Nothing

End Sub
...
Рейтинг: 0 / 0
Excel. Макрос. Открытие всех ячеек.
    #37359863
greeb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
просто макрос Djon Player'a мне кажется самым простым и понятным)
...
Рейтинг: 0 / 0
Excel. Макрос. Открытие всех ячеек.
    #37359867
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
F1 не работает?
Value Meaning
0 A formula
1 A number
2 Text (a string)
4 A logical value (True or False)
8 A cell reference, as a Range object
16 An error value, such as #N/A
64 An array of values
...
Рейтинг: 0 / 0
Excel. Макрос. Открытие всех ячеек.
    #37360277
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
greeb,

Всё есть в справке.
Так-же в коде вы можете поставить курсор на нужную команду и нажать комбинацию Ctrl+I, высветится подсказка по параметрам.
С помощью комбинации Ctrl+J можно увидеть доступный список команд, функций, констант и прочего.


Попробуйте такой код, состоящий из двух процедур, его надо поместить в модуль:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Option Explicit

Public x As Long

Sub Ввод_количества_строк()
 If x =  0  Then x =  2000  'Тут мы задаем значение по умолчанию.
 x = InputBox("Введите количество строк для вырезки", "Ввод количества строк", x)
End Sub


Sub Вырезка_части_текста_в_новую_книгу()
 Dim wb As Workbook
 
 Set wb = ActiveWorkbook
 
 Rows("1:" & x).Copy
 Workbooks.Add
 Cells( 1 ,  1 ).Insert Shift:=xlDown
 wb.Activate
 Rows("1:" & x).Delete
 Set wb = Nothing

End Sub


Самым первым нужно запустить макрос Ввод_количества_строк() и ввести нужное количество строк.

А дальше можно запускать макрос Вырезка_части_текста_в_новую_книгу() и потом уже комбинацией Ctrl+Y запускать его повторно столько раз сколько нужно.

При желании можно сделать две процедуры, одну запускаем и в ней задаем количество строк.
А другая процедура использует ранее введенное значение и вопросы не задает.
...
Рейтинг: 0 / 0
Excel. Макрос. Открытие всех ячеек.
    #37362025
greeb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В справке все есть,не спорю,только она на английском. В английском я не силен. Сейчас я даже зная ответ не могу его там найти.
Да и инфа на русском для меня не особо понятна.В общем для того,чтобы не задавать тупых вопросов я решил прочитать самоучитель по vba.
Благодарю всех за помощь и за то,что вы не посылали меня гуглить,а объясняли и разжевывали.
Вы как-то очень глубоко вникаете в вопрос, ну результат конечно получается лучше ожидаемого.Но для меня прада не привычно такое отношение. Я вам всем очень признателен.
...
Рейтинг: 0 / 0
12 сообщений из 62, страница 3 из 3
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel. Макрос. Открытие всех ячеек.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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