Изменение формы таблицы

Программирование на Visual Basic for Applications
awolf
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 07.04.2006 (Пт) 22:25

Изменение формы таблицы

Сообщение awolf » 11.04.2006 (Вт) 21:14

Имеется лист Exel и таблица вида:
АААА
ББББ
СССС
Требуется перевести данные в таблицу вида
ААААББББСССС
Каким конкретно макросом Вы бы это сделали?
Заранее большая благодарность доброму человеку, который ответит на этот немудреный вопрос.
Andrey

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 11.04.2006 (Вт) 21:24

Транспонирование это. Смотри в специальной вставке.
Lasciate ogni speranza, voi ch'entrate.

awolf
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 07.04.2006 (Пт) 22:25

Сообщение awolf » 12.04.2006 (Ср) 16:15

Транспонирование это. Смотри в специальной вставке.

Прошу прощения уважемый, транспонирование, если я правильно понимаю, это когда столбцы становятся строками, а последние, в свою очередь, - столбцами. Здесь же ситуация на мой взгляд несколько иная. Постараюсь выразиться яснее.
Имеем регулярно появляющиеся списки.
Каждый список разделен на группы вертикально расположенных записей, каждая из которых, в свою очередь, имеет такую структуру:
По вертикали:
Название маркера
1
...
17
По горизонтали:
Координаты х,у,z
Каждая группа есть не что иное как расположение маркеров в одном единственном фрейме (кадре).

Другими словами, например:
Таблицы оформлять в будущем надо примерно так. Спасибо.
Код: Выделить всё
Название маркера    Его координаты
------------------------------------
рука                   x  y  z
нога                   x  y  z
....                   x  y  z          1-й кадр
голова                 x  y  z

рука                   x  y  z
нога                   x  y  z
....                   x  y  z          2-й кадр
голова                 x  y  z

...                    ...              500-й кадр и т.д. (каждый раз длина видеозаписи разная)



Надо, чтобы этот список выглядел так:
Код: Выделить всё
                  названия маркеров
Номер кадра        рука    нога голова
--------------------------------------
           
1                    xуz   xyz   xyz
2                    xуz   xyz   xyz
...
500                  xуz   xyz   xyz


Кажись, тут транспонированием не обойдешься. Нужен какой-то макрос с инструкцией типа: вырезаем в одной ячейке и вставляем в другую и делаем это покуда не закончатся записи в списке. Понимаю, что задача решается простым чтением документации по VBA до просветления, но я не программер и, к сожалению, не имею ни времени, ни возможностей им стать. Поэтом и рискнул Вас побеспокоить. За быстрый ответ - спасибо!
Андрей

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 12.04.2006 (Ср) 16:22

Я плохо въехал в структуру данных (приложенный сюда файл с примером данных мог бы помочь :) ), но, по-моему, то, что ты хочешь, проще всего сделать с помощью сводных таблиц (Данные - Сводная таблица).
Быть... или не быть. Вот. В чём вопрос?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 12.04.2006 (Ср) 16:25

В первой таблице xyz в одной ячейке?

[Add]
Да, uhm, именно сводной таблицей :)
Просто непонятно, надо сливать координаты в одно, и слиты ли они изначально... От этого зависит, будет в таблице вычисляемое поле или же всё тривиально... Автор, надолго пропадать вредно :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

awolf
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 07.04.2006 (Пт) 22:25

Сообщение awolf » 16.04.2006 (Вс) 19:47

обрый день!
Спасибо за ответы и извините, что пишу не сразу. Честно попытался разобраться в Ваших рекомендациях по поводу сводных таблиц. Итог, к сожалению, пока неутешителен. Я так и не въехал зачем они (сводные таблицы) здесь нужны. Если я правильно понимаю, то сводные таблицы - это интерактивные таблицы, в которых приведены итоговые значения вычислений. Они используются для обобщения данных. Мне же ничего вычислять и обобщать не надо. Вместо этого надо одну порцию данных, которые "выплюнула" одна программа, привести в удобоваримый для другой программы вид. Задача должна решаться макросом, который делает, примерно, следующее: вырезает ячейку в одной таблице, вставляет ее в другую и делает это до тех пор пока данные не закончатся. Я пробовал делать это простым ручным макросом. Получается замечательно на одном-двух кадрах. Но не будешь же записывать вручную все 500. Требуется конструкция цикла. Прилагаю два примера: исходные данные (по вертикали идут группы маркеров, по горизонтали - оси координат) и требуемый формат (по вертикали идут номера кадров, по горизонтали - названия маркеров и оси координат. Оба файла в коде ASCII, а Exel в данном случае выполняет функцию конвертера. Еще раз спасибо за ответы.
Вложения
example.zip
(2.91 Кб) Скачиваний: 46

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.04.2006 (Пн) 4:21

Совершенно непонятно, как из одного получилось другое.
То же самое в формате excel, пожалуйста...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 20

    TopList