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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2012, 18:01   #1
SlimFIT
 
Регистрация: 21.12.2010
Сообщений: 7
Смущение Преобразовать таблицу

Добрый вечер.
Впервые столкнулся с проблемой преобразования таблицы в Excel.
Небходимо транспонировать таблицу (около 1000 записей).

Если бы было мало записей можно редактировать руками, но с 1000 записями это проблематично)))

Максимум что я смог сделать с помощью макросов - дублировать записи, а как грамотно транспонировать запись - не понимаю.((

Может кто-нибудь подсказать как сделать?
Изображения
Тип файла: jpg ИЗ.jpg (54.6 Кб, 168 просмотров)
Тип файла: jpg СДЕЛАТЬ.JPG (270.9 Кб, 154 просмотров)
Вложения
Тип файла: zip example.zip (12.0 Кб, 16 просмотров)
SlimFIT вне форума Ответить с цитированием
Старый 17.10.2012, 12:05   #2
ShAM66
Форумчанин
 
Регистрация: 24.02.2012
Сообщений: 160
По умолчанию

Если проблема только в транспонировании, то
Код:
Sub Макрос1()
    Range("K1:AV3").Copy
    Range("A4").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
    Application.CutCopyMode = False
End Sub
ЗЫ: Записал макрорекордером.
ShAM66 вне форума Ответить с цитированием
Старый 17.10.2012, 14:47   #3
SlimFIT
 
Регистрация: 21.12.2010
Сообщений: 7
По умолчанию

Чтобы обработать тысячу, две строк необходимо организовать цикл.
Я подумал и написал такой алгоритм:
1 шаг:
Макрос1 - добавляет пустые строки после каждой записи
Код:
Sub n()
  RowCount = 100 ' количество строк в таблице
  RouIns = 40 ' количество строк для вставки
  For i = 4 To RowCount
    Range("B" & i + s & ":B" & i + s + RouIns).EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    s = s + RouIns + 1
  Next
End Sub
2 шаг: Заполнить пустые строки значениями.
Тут указано как это делать

3шаг:
Макрос2- транспонирование строк
Код:
Sub Macros1()

For pos = 3 To 1500 'последняя строка в таблице   
        Sheets("Лист1").Select
        Range("N1", "BC2").Select
        Selection.Copy
        Range("A" & pos).Select
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
        Application.CutCopyMode = False
                
        Range("N" & pos, "BC" & pos).Select
        Selection.Copy
        Range("C" & pos).Select
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
        Application.CutCopyMode = False
        pos = pos + 41
    
Next pos
End Sub
Остается только удалить все лишнее и таблица готова.

Код мой конечно не идеален, если кто знает как улучшить его, пожалуйста отпишитесь))
SlimFIT вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразовать в локальную таблицу GES Microsoft Office Access 3 07.09.2012 10:09
Добавление записи в таблицу через таблицу Anton911 БД в Delphi 0 14.05.2012 11:51
Объединить таблицу access и таблицу paradoxa в таблицу access GROSS777 БД в Delphi 1 09.02.2012 14:58
Преобразовать таблицу(Вопрос от новичка) Citizen^K Microsoft Office Excel 3 10.02.2010 11:53
VBA Преобразовать в диапазон таблицу king13 Microsoft Office Excel 4 16.10.2009 11:08