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

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

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

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

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

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

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

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
Excel каждые 3 строки развернуть в 1
    #37183242
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вся проблема в "периоде", который "выгружаете".
У вас что, в таблице Акцесса так и хранится "Период"="январь 09", например? Или вы это так сформировали сами?
И вообще, что вы подразумеваете под "выгрузкой" - Экзель вполне может сам обращаться к таблицам БД Access безо всяких выгрузок. Или вы именно MS QUERY используете из Excel?
...
Рейтинг: 0 / 0
Excel каждые 3 строки развернуть в 1
    #37183835
ДианаК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTMВся проблема в "периоде", который "выгружаете".
У вас что, в таблице Акцесса так и хранится "Период"="январь 09", например? Или вы это так сформировали сами?
И вообще, что вы подразумеваете под "выгрузкой" - Экзель вполне может сам обращаться к таблицам БД Access безо всяких выгрузок. Или вы именно MS QUERY используете из Excel?



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

Вот теперь не знаю как быть с периодом. Как сделать так, чтобы данные, к примеру, за 2007 год он размещал в строку по месяцам, затем следующей строкой данные за 2008 год. и т.д.
...
Рейтинг: 0 / 0
Excel каждые 3 строки развернуть в 1
    #37184022
Фотография 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;
...
Рейтинг: 0 / 0
Excel каждые 3 строки развернуть в 1
    #37184317
ДианаК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Excel каждые 3 строки развернуть в 1
    #37184440
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДианаКтолько вот прикол в том, что данные за текущий год заводятся не как, к примеру, январь 11, а просто январь ((((
Год не пишется только за текущий год? Или есть и другие случаи?
...
Рейтинг: 0 / 0
Excel каждые 3 строки развернуть в 1
    #37184522
ДианаК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mds_worldДианаКтолько вот прикол в том, что данные за текущий год заводятся не как, к примеру, январь 11, а просто январь ((((
Год не пишется только за текущий год? Или есть и другие случаи?


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

нет, нет..когда пройдет 2011 год, данные уже потом будут как январь 11, февраль 11 и т.д. А текущий 2012 год уже будет как январь, февраль, март...
...
Рейтинг: 0 / 0
Excel каждые 3 строки развернуть в 1
    #37185061
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДианаКнет, нет..когда пройдет 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
Excel каждые 3 строки развернуть в 1
    #37185629
ДианаК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте
Код: 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
Excel каждые 3 строки развернуть в 1
    #37185712
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДианаК,

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

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

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

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

у меня еще такой вопросик возник, а возможно чтобы месяцы выходили по-порядку: январь, февраль, март ... и т.д.
...
Рейтинг: 0 / 0
Excel каждые 3 строки развернуть в 1
    #37186024
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В аксе такой запрос проходит
Код: 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
Excel каждые 3 строки развернуть в 1
    #37186028
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так выглядит запрос
...
Рейтинг: 0 / 0
Excel каждые 3 строки развернуть в 1
    #37186591
ДианаК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mds_world,

Ууух, запуталась совсем. Спасибо большое, большое за помощь))) Пойду разбираться ;)
...
Рейтинг: 0 / 0
Excel каждые 3 строки развернуть в 1
    #37186753
ДианаК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
жаль что конечно этот запрос в Microsoft Query не работает.
...
Рейтинг: 0 / 0
Excel каждые 3 строки развернуть в 1
    #37186799
ДианаК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
25 сообщений из 25, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel каждые 3 строки развернуть в 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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