Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel каждые 3 строки развернуть в 1 / 25 сообщений из 25, страница 1 из 1
11.03.2011, 11:32
    #37159222
sashka304
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
Добрый день, Уважаемые!
Есть такой вопрос(возможно ламерский но решения не найдено)
Есть репортсервер который генерит отчет в ексель(pdf и другие форматы) В этом отчете каждая позиция содержит около 60 столбцов дабы все входило при експорте в тот же pdf шаблон отчета для каждой позиции содержит 3 строки (60/3 = 20 столбцов на строку)
Теперь возникло желание експортировать в ексель но так что бы там каждая позиция была на 1 строке. Интересует есть ли возможность это сделать страндартными средствами екселя без макросов и т.п что бы показать тете которая будет работать с этими отчетами как это сделать?
используется Excel 2007
Спасибо.

_______________________________________________________________
Самурай без меча - это как самурай с мечем но, только без меча
...
Рейтинг: 0 / 0
11.03.2011, 13:31
    #37159549
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
sashka304,

без примера репорта не раскурить
...
Рейтинг: 0 / 0
11.03.2011, 14:02
    #37159635
sashka304
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
Сории не подумал про пример :)

Образно таблица выглядит так:
fioaddressphoneaccountcurrencyamountdebit credit totalВася Хацапетовка 456123123EUR 456123ПетяПрага789654852 CZK 999999234
Нужно получить
fioaddressphoneaccountcurrencyamountdebit credit totalВася Хацапетовка 456123123EUR 456123ПетяПрага789654852 CZK 999999234
...
Рейтинг: 0 / 0
11.03.2011, 23:46
    #37160660
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
Скриптами VBA (причём, если выбирать каждый раз N (скажем N=3 строки)) - без проблем.

Только давайте ещё пример файла, приходящего "тетушке" (не обязательно целиком весь файл, но записей 30-40)

Второе - если вы желаете "тётушке" отдать готовый нужный файл - кто вам запрещает формировать вывод SQL'ем?
...
Рейтинг: 0 / 0
25.03.2011, 21:11
    #37183187
ДианаК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
Добрый вечер. Помогите, пожалуйста. Ууухх..даже в голову ничего не приходит. Может кто подскажет. В общем из Аксесса выгружаю в Эксель (хочу с помощью ms query) вот такие вот данные:

СЦ Период Выработка
БМВ август 07 38222
БМВ август 09 456
БМВ август 10 594
БМВ апрель 07 311063
БМВ апрель 09 4814
БМВ апрель 10 5643
БМВ декабрь 07 43527
БМВ декабрь 09 456456
БМВ декабрь 10 45
БМВ июль 07 56
БМВ июль 09 54
БМВ июль 10 456
БМВ июнь 07 546456
БМВ июнь 09 456
БМВ июнь 10 456
БМВ май 07 3320
БМВ май 09 51939752
БМВ май 10 5278
БМВ март 07 3010
БМВ март 09 445
БМВ март 10 5510
БМВ ноябрь 07 4907
БМВ ноябрь 09 59511


нужно представить в виде:

янв фев март апрель май ....
БМВ 07
БМВ 09
БМВ 10
...
Рейтинг: 0 / 0
25.03.2011, 21:57
    #37183217
ДианаК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
ДианаК,

получилось вот создать такой запрос:

TRANSFORM First(Tab.Выработка) SELECT Tab.`Сервисный центр` FROM (SELECT D1.`Сервисный центр`, D2.Период, D2.Выработка, Count(*) As [RowId] FROM [Лист3$] As D1 INNER JOIN [Лист3$] As D2 ON D1.Выработка<=D2.Выработка WHERE D1.`Сервисный центр` = D2.`Сервисный центр` And D1.Период= D2.Период GROUP BY D1.`Сервисный центр`, D2.Период, D2.Выработка) As Tab GROUP BY Tab.`Сервисный центр`, Tab.RowId PIVOT Tab.Период;


СЦ август 07 август 09 август 10 апрель 07 апрель 09 апрель 10 декабрь 07..БМВ456456 4456 456 4565 21 456 5612..БМВ6546 456 645 46 56 456546 4564 ..БМВ 2009 ...

не знаю как дальше собрать данные и привести к такому виду:


СЦ январт февраль март апрель май июньиюль..БМВ 2007 год456456 4456 456 4565 21 456 5612..БМВ 20086546 456 645 46 56 456546 4564 .....
...
Рейтинг: 0 / 0
25.03.2011, 22:25
    #37183242
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
Вся проблема в "периоде", который "выгружаете".
У вас что, в таблице Акцесса так и хранится "Период"="январь 09", например? Или вы это так сформировали сами?
И вообще, что вы подразумеваете под "выгрузкой" - Экзель вполне может сам обращаться к таблицам БД Access безо всяких выгрузок. Или вы именно MS QUERY используете из Excel?
...
Рейтинг: 0 / 0
26.03.2011, 17:40
    #37183835
ДианаК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
AndreTMВся проблема в "периоде", который "выгружаете".
У вас что, в таблице Акцесса так и хранится "Период"="январь 09", например? Или вы это так сформировали сами?
И вообще, что вы подразумеваете под "выгрузкой" - Экзель вполне может сам обращаться к таблицам БД Access безо всяких выгрузок. Или вы именно MS QUERY используете из Excel?



Дааа, Вы правы, проблема именно в этом, почему то в Аксессе "Период"="январь 09" и т.д. (так понимаю он забит ка текст).
....Да ,я MS Query использую их Экселя.
Мои действия: Открываю Эксель, Данные/Импорт внешних данных/ Импортировать данные и потом создаю новый источник данных ... обращаюсь к базе Аксесс.
...
Рейтинг: 0 / 0
26.03.2011, 17:51
    #37183840
ДианаК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
ДианаК,

Вот теперь не знаю как быть с периодом. Как сделать так, чтобы данные, к примеру, за 2007 год он размещал в строку по месяцам, затем следующей строкой данные за 2008 год. и т.д.
...
Рейтинг: 0 / 0
26.03.2011, 21:17
    #37184022
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
Попробуйте
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
TRANSFORM First(Tab.Выработка) 
SELECT Tab.`Сервисный центр`, Год 
     FROM (SELECT D1.`Сервисный центр`, Left(D2.Период, Len(D2.Период)- 3 ) as Mes, Right(D2.Период, 2 ) as Год, D2.Выработка, Count(*) As [RowId] 
     FROM [Лист3$] As D1 INNER JOIN [Лист3$] As D2 ON D1.Выработка<=D2.Выработка 
     WHERE D1.`Сервисный центр` = D2.`Сервисный центр` And D1.Период= D2.Период 
     GROUP BY D1.`Сервисный центр`, D2.Период, D2.Выработка) As Tab 
GROUP BY Tab.`Сервисный центр`, Год, Tab.RowId 
PIVOT Tab.Mes;
...
Рейтинг: 0 / 0
27.03.2011, 11:36
    #37184317
ДианаК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
mds_worldПопробуйте
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
TRANSFORM First(Tab.Выработка) 
SELECT Tab.`Сервисный центр`, Год 
     FROM (SELECT D1.`Сервисный центр`, Left(D2.Период, Len(D2.Период)- 3 ) as Mes, Right(D2.Период, 2 ) as Год, D2.Выработка, Count(*) As [RowId] 
     FROM [Лист3$] As D1 INNER JOIN [Лист3$] As D2 ON D1.Выработка<=D2.Выработка 
     WHERE D1.`Сервисный центр` = D2.`Сервисный центр` And D1.Период= D2.Период 
     GROUP BY D1.`Сервисный центр`, D2.Период, D2.Выработка) As Tab 
GROUP BY Tab.`Сервисный центр`, Год, Tab.RowId 
PIVOT Tab.Mes;




Ойй, спасибочкииии...все получилось, только вот прикол в том, что данные за текущий год заводятся не как, к примеру, январь 11, а просто январь ((((
...
Рейтинг: 0 / 0
27.03.2011, 14:01
    #37184440
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
ДианаКтолько вот прикол в том, что данные за текущий год заводятся не как, к примеру, январь 11, а просто январь ((((
Год не пишется только за текущий год? Или есть и другие случаи?
...
Рейтинг: 0 / 0
27.03.2011, 14:57
    #37184522
ДианаК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
mds_worldДианаКтолько вот прикол в том, что данные за текущий год заводятся не как, к примеру, январь 11, а просто январь ((((
Год не пишется только за текущий год? Или есть и другие случаи?


не пишется только за текущий =)
...
Рейтинг: 0 / 0
27.03.2011, 15:37
    #37184567
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
ДианаКне пишется только за текущий =)
Все-таки ситуация не ясна до конца. ДианаК, вот смотрите, прошел этот год, наступил следующий. В 2011-м год в поле не писался, текущий год 2011-й, че его писать, в следующием 2012, он тоже писаться не будет - год ведь опять текущий! И как отличить январь 2011-го от января 2012-го?
...
Рейтинг: 0 / 0
27.03.2011, 16:47
    #37184640
ДианаК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
mds_worldДианаКне пишется только за текущий =)
Все-таки ситуация не ясна до конца. ДианаК, вот смотрите, прошел этот год, наступил следующий. В 2011-м год в поле не писался, текущий год 2011-й, че его писать, в следующием 2012, он тоже писаться не будет - год ведь опять текущий! И как отличить январь 2011-го от января 2012-го?

нет, нет..когда пройдет 2011 год, данные уже потом будут как январь 11, февраль 11 и т.д. А текущий 2012 год уже будет как январь, февраль, март...
...
Рейтинг: 0 / 0
28.03.2011, 05:13
    #37185061
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
ДианаКнет, нет..когда пройдет 2011 год, данные уже потом будут как январь 11, февраль 11 и т.д. А текущий 2012 год уже будет как январь, февраль, март...
Мда... Убежден на 200 процентов, что вы себе сделали генератор ошибок. Ну, да ладно. Опыт, он лучший учитель.


Попробуйте
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
TRANSFORM First(Tab.Выработка) 
SELECT Tab.`Сервисный центр`, Год 
     FROM (SELECT D1.`Сервисный центр`, 
     iif(val(right(D2.Период, 2 ))= 0 , D2.Период & " " & format(date(),"yy"), D2.Период) as p,
     Left(p, Len(p)- 3 ) as Mes, Right(p, 2 ) as Год, 
     D2.Выработка, Count(*) As [RowId] 
     FROM [Лист3$] As D1 INNER JOIN [Лист3$] As D2 ON D1.Выработка<=D2.Выработка 
     WHERE D1.`Сервисный центр` = D2.`Сервисный центр` And D1.Период= D2.Период 
     GROUP BY D1.`Сервисный центр`, D2.Период, D2.Выработка) As Tab 
GROUP BY Tab.`Сервисный центр`, Год, Tab.RowId 
PIVOT Tab.Mes;
...
Рейтинг: 0 / 0
28.03.2011, 13:25
    #37185629
ДианаК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
Попробуйте
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
TRANSFORM First(Tab.Выработка) 
SELECT Tab.`Сервисный центр`, Год 
     FROM (SELECT D1.`Сервисный центр`, 
     iif(val(right(D2.Период, 2 ))= 0 , D2.Период & " " & format(date(),"yy"), D2.Период) as p,
     Left(p, Len(p)- 3 ) as Mes, Right(p, 2 ) as Год, 
     D2.Выработка, Count(*) As [RowId] 
     FROM [Лист3$] As D1 INNER JOIN [Лист3$] As D2 ON D1.Выработка<=D2.Выработка 
     WHERE D1.`Сервисный центр` = D2.`Сервисный центр` And D1.Период= D2.Период 
     GROUP BY D1.`Сервисный центр`, D2.Период, D2.Выработка) As Tab 
GROUP BY Tab.`Сервисный центр`, Год, Tab.RowId 
PIVOT Tab.Mes;
[/quot]

Что-то ругается запрос на меня((( говорит "невозможно добавить в таблицу SELECT
...
Рейтинг: 0 / 0
28.03.2011, 14:01
    #37185712
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
ДианаК,

вы бы полностью привели сообщение об ошибке. Из сказанного мало, что понятно.

Можно также выставить пример. Как я понял, у вас есть екселевская книга и файл mdb? Желательно привести оба. Мдбшку сжать/восстановить, потом оба файла заархивировать и приложить. Лишь бы объем вложения не превышал ограничение в 150 кб. Если будет больше, то, что-то лишнее, ненужное для текущей задачи, надо удалять.
...
Рейтинг: 0 / 0
28.03.2011, 14:17
    #37185747
ДианаК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
mds_worldДианаК,

вы бы полностью привели сообщение об ошибке. Из сказанного мало, что понятно.

Можно также выставить пример. Как я понял, у вас есть екселевская книга и файл mdb? Желательно привести оба. Мдбшку сжать/восстановить, потом оба файла заархивировать и приложить. Лишь бы объем вложения не превышал ограничение в 150 кб. Если будет больше, то, что-то лишнее, ненужное для текущей задачи, надо удалять.
...
Рейтинг: 0 / 0
28.03.2011, 14:28
    #37185778
ДианаК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
ДианаК,

у меня еще такой вопросик возник, а возможно чтобы месяцы выходили по-порядку: январь, февраль, март ... и т.д.
...
Рейтинг: 0 / 0
28.03.2011, 15:49
    #37186024
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
В аксе такой запрос проходит
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
TRANSFORM First(Tab.Выработка)
SELECT Tab.[Сервисный центр], Год
FROM (SELECT D1.[Сервисный центр], 
     iif(val(right(D2.Период, 2 ))= 0 , D2.Период & " " & format(date(),"yy"), D2.Период) as p,
     Left(p, Len(p)- 3 ) as Mes, Right(p, 2 ) as Год, 
     D2.Выработка, Count(*) As [RowId] 
     FROM (select * from [Лист3$]  in 'Данные.xls'[Excel 8.0;HDR=yes;]) As D1 INNER JOIN (select * from [Лист3$] in 'Данные.xls'[Excel 8.0;HDR=yes;]) As D2 ON D1.Выработка<=D2.Выработка 
     WHERE D1.[Сервисный центр] = D2.[Сервисный центр] And D1.Период= D2.Период 
     GROUP BY D1.[Сервисный центр], D2.Период, D2.Выработка) AS Tab
GROUP BY Tab.[Сервисный центр], Год, Tab.RowId
PIVOT Tab.Mes in ("январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь");
С Microsoft Query не уверен, не знаю.

Если у вас есть MS Access, то поместите mdb-файл в ту же папку, что и Данные.xls и выполните Запрос1
...
Рейтинг: 0 / 0
28.03.2011, 15:50
    #37186028
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
Вот так выглядит запрос
...
Рейтинг: 0 / 0
28.03.2011, 19:58
    #37186591
ДианаК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
mds_world,

Ууух, запуталась совсем. Спасибо большое, большое за помощь))) Пойду разбираться ;)
...
Рейтинг: 0 / 0
28.03.2011, 22:04
    #37186753
ДианаК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
жаль что конечно этот запрос в Microsoft Query не работает.
...
Рейтинг: 0 / 0
28.03.2011, 22:41
    #37186799
ДианаК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel каждые 3 строки развернуть в 1
TRANSFORM First(Tab.Выработка)
SELECT Tab.[Сервисный центр], Год
FROM (SELECT D1.[Сервисный центр],
iif(val(right(D2.Период,2))=0, D2.Период & " " & format(date(),"yy"), D2.Период) as p,
Left(p, Len(p)-3) as Mes, Right(p,2) as Год,
D2.Выработка, Count(*) As [RowId]
FROM (select * from [Лист3$] in 'Данные.xls'[Excel 8.0;HDR=yes;]) As D1 INNER JOIN (select * from [Лист3$] in 'Данные.xls'[Excel 8.0;HDR=yes;]) As D2 ON D1.Выработка<=D2.Выработка
WHERE D1.[Сервисный центр] = D2.[Сервисный центр] And D1.Период= D2.Период
GROUP BY D1.[Сервисный центр], D2.Период, D2.Выработка) AS Tab
GROUP BY Tab.[Сервисный центр], Год, Tab.RowId
PIVOT Tab.Mes in ("январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь");


Может кто-нибудь знает, почему данный код не работает в ms query?
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel каждые 3 строки развернуть в 1 / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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