Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Транспонирование групп строк в столбцы - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Транспонирование групп строк в столбцы
A_lin_a Дата: Вторник, 03.03.2015, 13:33 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Здравствуйте, уважаемые форумчане!

Помогите, пожалуйста, понять, можно ли (и если можно, то как) решить следующую проблему.
Есть большой массив данных, которые в Excel имеют вид групп строк через пустую строку (один столбец):
Условно:
01
090707
Иванов
Иван
Иванович

04
030208
15,8
Сидоров
Сидор

И т.д.

Надо перевести это в столбцы (одна строка на запись):
01 090707 Иванов Иван Иванович
04 030208 15,8 Сидоров Сидор
И т.д.

Количество строк в одной исходной записи может быть разным, но задачи вертикального соответствия столбцов типу данных не стоит (это уж совсем идеал), главное сделать из каждой записи одну строку.

Как транспонировать "по одной" я понимаю, но таких записей больше тысячи. Как это сделать "по уму", найти не смогла, но, может, это все-таки возможно?
Спасибо!
К сообщению приложен файл: 4983386.xls (28.0 Kb)
 
Ответить
СообщениеЗдравствуйте, уважаемые форумчане!

Помогите, пожалуйста, понять, можно ли (и если можно, то как) решить следующую проблему.
Есть большой массив данных, которые в Excel имеют вид групп строк через пустую строку (один столбец):
Условно:
01
090707
Иванов
Иван
Иванович

04
030208
15,8
Сидоров
Сидор

И т.д.

Надо перевести это в столбцы (одна строка на запись):
01 090707 Иванов Иван Иванович
04 030208 15,8 Сидоров Сидор
И т.д.

Количество строк в одной исходной записи может быть разным, но задачи вертикального соответствия столбцов типу данных не стоит (это уж совсем идеал), главное сделать из каждой записи одну строку.

Как транспонировать "по одной" я понимаю, но таких записей больше тысячи. Как это сделать "по уму", найти не смогла, но, может, это все-таки возможно?
Спасибо!

Автор - A_lin_a
Дата добавления - 03.03.2015 в 13:33
Hugo Дата: Вторник, 03.03.2015, 13:41 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3854
Репутация: 814 ±
Замечаний: 0% ±

365
"задачи вертикального соответствия столбцов типу данных не стоит (это уж совсем идеал)" - так давайте сразу делать идеал :)
Чтоб два раза не переделывать.
Но на этом примере нет информации по соответствию этих типов. Может дадите более приближенный к реальным данным пример?


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщение"задачи вертикального соответствия столбцов типу данных не стоит (это уж совсем идеал)" - так давайте сразу делать идеал :)
Чтоб два раза не переделывать.
Но на этом примере нет информации по соответствию этих типов. Может дадите более приближенный к реальным данным пример?

Автор - Hugo
Дата добавления - 03.03.2015 в 13:41
A_lin_a Дата: Вторник, 03.03.2015, 14:46 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Уважаемый Hugo, спасибо за желание помочь!
Речь о копировании из библиотечного каталога (не автоматизированном), пример приложен.
Я написала "идеал", потому что, с одной стороны, как мне кажется, тут уже потребуется минимум скрипт, где надо прописывать слишком много всего, а поля трудноформализуемые, а с другой - это не даст особого выигрыша: избыточное (лишние шифры, ненужные примечания до "Библиогр.") в "идеальном" варианте можно будет отсечь, просто удалив соответствующие колонки, а в "желаемом" лишние шифры (их не так уж много) можно будет быстро убрать, последовательно отсортировав по 2-5 столбцам и удалив "лишние" массивы ячеек со сдвигом, ну а "лишними" примечаниями можно и пренебречь (или стирать на стадии копирования, они довольно редки). "Выигрыш" от идеала небольшой, а возни с решением, как мне кажется, слишком много %)
Главное - транспонировать 1000+ записей в строчки не вручную :(
К сообщению приложен файл: 4851996.xls (18.0 Kb)
 
Ответить
СообщениеУважаемый Hugo, спасибо за желание помочь!
Речь о копировании из библиотечного каталога (не автоматизированном), пример приложен.
Я написала "идеал", потому что, с одной стороны, как мне кажется, тут уже потребуется минимум скрипт, где надо прописывать слишком много всего, а поля трудноформализуемые, а с другой - это не даст особого выигрыша: избыточное (лишние шифры, ненужные примечания до "Библиогр.") в "идеальном" варианте можно будет отсечь, просто удалив соответствующие колонки, а в "желаемом" лишние шифры (их не так уж много) можно будет быстро убрать, последовательно отсортировав по 2-5 столбцам и удалив "лишние" массивы ячеек со сдвигом, ну а "лишними" примечаниями можно и пренебречь (или стирать на стадии копирования, они довольно редки). "Выигрыш" от идеала небольшой, а возни с решением, как мне кажется, слишком много %)
Главное - транспонировать 1000+ записей в строчки не вручную :(

Автор - A_lin_a
Дата добавления - 03.03.2015 в 14:46
Rioran Дата: Вторник, 03.03.2015, 15:51 | Сообщение № 4
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
A_lin_a, здравствуйте.

Позвольте предложить простой вариант. Разрешайте макросы и жмите кнопку во вложении. За идеальный вариант не берусь - времязатратно. Однако замечу, что идеальный вариант реален, зацепиться есть за что.

[vba]
Код
Option Explicit
Option Base 1

Sub Main()

Dim DataA
Dim DataB

Dim RowA As Long
Dim RowB As Long
Dim ColB As Long
Dim Wdth As Long
Dim RowX As Long

RowX = Cells(Rows.Count, 1).End(xlUp).Row
If RowX < 2 Then Exit Sub

DataA = Range("A1:A" & RowX)
RowB = 1: Wdth = 1
ReDim DataB(RowX, Wdth)

For RowA = 1 To RowX
       If DataA(RowA, 1) <> "" Then
           ColB = ColB + 1
           If ColB > Wdth Then
               Wdth = ColB
               ReDim Preserve DataB(RowX, Wdth)
           End If
           DataB(RowB, ColB) = DataA(RowA, 1)
       Else
           RowB = RowB + 1
           ColB = 0
       End If
Next RowA

Range("A1:A" & RowX).Value = ""
Cells(1, 1).Resize(RowB, Wdth).Value = DataB

End Sub
[/vba]
К сообщению приложен файл: RioStruct.xlsb (21.2 Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Вторник, 03.03.2015, 15:58
 
Ответить
СообщениеA_lin_a, здравствуйте.

Позвольте предложить простой вариант. Разрешайте макросы и жмите кнопку во вложении. За идеальный вариант не берусь - времязатратно. Однако замечу, что идеальный вариант реален, зацепиться есть за что.

[vba]
Код
Option Explicit
Option Base 1

Sub Main()

Dim DataA
Dim DataB

Dim RowA As Long
Dim RowB As Long
Dim ColB As Long
Dim Wdth As Long
Dim RowX As Long

RowX = Cells(Rows.Count, 1).End(xlUp).Row
If RowX < 2 Then Exit Sub

DataA = Range("A1:A" & RowX)
RowB = 1: Wdth = 1
ReDim DataB(RowX, Wdth)

For RowA = 1 To RowX
       If DataA(RowA, 1) <> "" Then
           ColB = ColB + 1
           If ColB > Wdth Then
               Wdth = ColB
               ReDim Preserve DataB(RowX, Wdth)
           End If
           DataB(RowB, ColB) = DataA(RowA, 1)
       Else
           RowB = RowB + 1
           ColB = 0
       End If
Next RowA

Range("A1:A" & RowX).Value = ""
Cells(1, 1).Resize(RowB, Wdth).Value = DataB

End Sub
[/vba]

Автор - Rioran
Дата добавления - 03.03.2015 в 15:51
A_lin_a Дата: Вторник, 03.03.2015, 16:23 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Rioran, большое спасибо! Все получилось!
 
Ответить
СообщениеRioran, большое спасибо! Все получилось!

Автор - A_lin_a
Дата добавления - 03.03.2015 в 16:23
Volkofx Дата: Четверг, 07.05.2015, 11:11 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 1 ±
Замечаний: 20% ±

Excel 2013
У меня обратная ситуация. Есть куча столбцов с разным количеством строк в каждом. мне нужно, данные последовательно из каждого столбца отображались один под другим, условно в 1 столбец. Ищу 2й день решение, но видимо руки из одного места, тк находит все случаи, кроме моего. Помогите в этой непростой, и полюбому для кого-то простой ситуации

[moder]Один вопрос - одна ТЕМА! Создавайте свою тему!
Эта тема закрыта![/moder]
К сообщению приложен файл: 4375426.xls (23.5 Kb)


Сообщение отредактировал DJ_Marker_MC - Четверг, 07.05.2015, 11:29
 
Ответить
СообщениеУ меня обратная ситуация. Есть куча столбцов с разным количеством строк в каждом. мне нужно, данные последовательно из каждого столбца отображались один под другим, условно в 1 столбец. Ищу 2й день решение, но видимо руки из одного места, тк находит все случаи, кроме моего. Помогите в этой непростой, и полюбому для кого-то простой ситуации

[moder]Один вопрос - одна ТЕМА! Создавайте свою тему!
Эта тема закрыта![/moder]

Автор - Volkofx
Дата добавления - 07.05.2015 в 11:11
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!