Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2016, 21:47   #1
Oleg778
Пользователь
 
Регистрация: 07.11.2016
Сообщений: 11
По умолчанию Макрос транспонирования

Доброго дня !

есть вопрос по макросу

1)Макрос транспонирования - как сделать для большего количества строк больше 260
Дело в том что проверил данный макрос - он транспонирует строки (но только до 259 строк-если больше ошибка вылазит) в столбцы в на новый лист
Почему так ? У меня диапазон A4:AH5003

Код:
Sub Макрос1()
Range("A4:AH5003").Select
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
Range("A1").Select
'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True 
End Sub
ошибка в строке
Код:
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
ошибка Run-time error '1004'

файл прилагаю

2)Как сделать в этом макросе чтоб он переименовывал лист куда делается транспонирование ? переименовать лист в "Данные" например
Вложения
Тип файла: xls Пример транспонирования3.xls (1.19 Мб, 10 просмотров)

Последний раз редактировалось Oleg778; 08.11.2016 в 00:25.
Oleg778 вне форума Ответить с цитированием
Старый 08.11.2016, 06:53   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Это потому, что при транспонировании 5003 строк у Вас получится 5003 столбцов.
Это больше, чем 256, т. е. больше, чем допускает Excel 2003.
Измените формат на ".xlsm" и используйте более старшие версии Excel, где столбцов 16384.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 08.11.2016, 08:18   #3
Oleg778
Пользователь
 
Регистрация: 07.11.2016
Сообщений: 11
По умолчанию

Все равно ругается на эту строку. Пересохранил в EXCEL2010 в *.xlsm
Вложения
Тип файла: rar Пример транспонирования3.rar (45.5 Кб, 9 просмотров)
Oleg778 вне форума Ответить с цитированием
Старый 08.11.2016, 08:36   #4
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
.. используйте более старшие версии Excel, где столбцов 16384.
Сергей, это младшие версии
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 08.11.2016, 08:41   #5
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Так работает.
Код:
Sub TRP()
    Range("A4:AH5003").Copy
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.[A1].PasteSpecial Paste:=xlPasteAll, _
        Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 08.11.2016, 10:16   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Теперь не вижу проблем:
Код:
Sub TRP()
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = "Ваше_Имя_Листа"
    Sheets("Таблица").Range("A4:AH5003").Copy
    ActiveSheet.[A1].PasteSpecial Transpose:=True
End Sub
Вложения
Тип файла: rar Пример транспонирования4.rar (44.8 Кб, 16 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 08.11.2016, 11:57   #7
Oleg778
Пользователь
 
Регистрация: 07.11.2016
Сообщений: 11
По умолчанию

Спасибо SAS888 и kuklp ! Заработало на *.xlsm (на *.xls не сработало) Еще один вопрос если можно - как переделать код чтобы сохранял данные транспонирования в отдельном 2 файле под названием Ваше_Имя_Файла (не на соседнем листе) в той же директории где лежит осн 1 файл ?
Oleg778 вне форума Ответить с цитированием
Старый 08.11.2016, 12:26   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно так:
Код:
Sub TRP()
    Workbooks.Add xlWBATWorksheet
    ActiveSheet.Name = "Ваше_Имя_Листа"
    ThisWorkbook.Sheets("Таблица").Range("A4:AH5003").Copy
    ActiveSheet.[A1].PasteSpecial Transpose:=True
    ActiveWorkbook.SaveAs "Ваше_Имя_Книги.xlsx"
End Sub
Вложения
Тип файла: rar Пример транспонирования5.rar (45.6 Кб, 14 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 08.11.2016, 13:18   #9
Oleg778
Пользователь
 
Регистрация: 07.11.2016
Сообщений: 11
По умолчанию

SAS888 все замечательно но как прикрепить путь сохранения правильно относительный в тойже директории или явно прописать

типа & "\" & Date & ".xlsm"
Oleg778 вне форума Ответить с цитированием
Старый 08.11.2016, 16:01   #10
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Так и пишите.
Вместо строки
Код:
ActiveWorkbook.SaveAs "Ваше_Имя_Книги.xlsx"
Используйте, например,
Код:
ActiveWorkbook.SaveAs "C:\Temp\" & Date & ".xlsx"
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
присвоить текст с другого листа соответствующий условию KsenyaKrasa Microsoft Office Excel 10 29.05.2013 16:14
копирование строки по условию цвета rinariari Microsoft Office Excel 7 27.07.2012 16:46
Скопировать значение из определённой ячейки ТЕКУЩЕЙ СТРОКИ в определённую ячейку другого листа Павел-812 Microsoft Office Excel 12 12.07.2012 17:44
Ссылка ячеек одного листа на ячейки другого листа n0str0m0 Microsoft Office Excel 10 31.12.2011 12:11
вырезать листы по условию D_e_n_n Microsoft Office Word 4 17.03.2011 10:49