Помогите, пожалуйста, понять, можно ли (и если можно, то как) решить следующую проблему. Есть большой массив данных, которые в Excel имеют вид групп строк через пустую строку (один столбец): Условно: 01 090707 Иванов Иван Иванович
04 030208 15,8 Сидоров Сидор
И т.д.
Надо перевести это в столбцы (одна строка на запись): 01 090707 Иванов Иван Иванович 04 030208 15,8 Сидоров Сидор И т.д.
Количество строк в одной исходной записи может быть разным, но задачи вертикального соответствия столбцов типу данных не стоит (это уж совсем идеал), главное сделать из каждой записи одну строку.
Как транспонировать "по одной" я понимаю, но таких записей больше тысячи. Как это сделать "по уму", найти не смогла, но, может, это все-таки возможно? Спасибо!
Здравствуйте, уважаемые форумчане!
Помогите, пожалуйста, понять, можно ли (и если можно, то как) решить следующую проблему. Есть большой массив данных, которые в Excel имеют вид групп строк через пустую строку (один столбец): Условно: 01 090707 Иванов Иван Иванович
04 030208 15,8 Сидоров Сидор
И т.д.
Надо перевести это в столбцы (одна строка на запись): 01 090707 Иванов Иван Иванович 04 030208 15,8 Сидоров Сидор И т.д.
Количество строк в одной исходной записи может быть разным, но задачи вертикального соответствия столбцов типу данных не стоит (это уж совсем идеал), главное сделать из каждой записи одну строку.
Как транспонировать "по одной" я понимаю, но таких записей больше тысячи. Как это сделать "по уму", найти не смогла, но, может, это все-таки возможно? Спасибо!A_lin_a
"задачи вертикального соответствия столбцов типу данных не стоит (это уж совсем идеал)" - так давайте сразу делать идеал Чтоб два раза не переделывать. Но на этом примере нет информации по соответствию этих типов. Может дадите более приближенный к реальным данным пример?
"задачи вертикального соответствия столбцов типу данных не стоит (это уж совсем идеал)" - так давайте сразу делать идеал Чтоб два раза не переделывать. Но на этом примере нет информации по соответствию этих типов. Может дадите более приближенный к реальным данным пример?Hugo
Уважаемый Hugo, спасибо за желание помочь! Речь о копировании из библиотечного каталога (не автоматизированном), пример приложен. Я написала "идеал", потому что, с одной стороны, как мне кажется, тут уже потребуется минимум скрипт, где надо прописывать слишком много всего, а поля трудноформализуемые, а с другой - это не даст особого выигрыша: избыточное (лишние шифры, ненужные примечания до "Библиогр.") в "идеальном" варианте можно будет отсечь, просто удалив соответствующие колонки, а в "желаемом" лишние шифры (их не так уж много) можно будет быстро убрать, последовательно отсортировав по 2-5 столбцам и удалив "лишние" массивы ячеек со сдвигом, ну а "лишними" примечаниями можно и пренебречь (или стирать на стадии копирования, они довольно редки). "Выигрыш" от идеала небольшой, а возни с решением, как мне кажется, слишком много Главное - транспонировать 1000+ записей в строчки не вручную
Уважаемый Hugo, спасибо за желание помочь! Речь о копировании из библиотечного каталога (не автоматизированном), пример приложен. Я написала "идеал", потому что, с одной стороны, как мне кажется, тут уже потребуется минимум скрипт, где надо прописывать слишком много всего, а поля трудноформализуемые, а с другой - это не даст особого выигрыша: избыточное (лишние шифры, ненужные примечания до "Библиогр.") в "идеальном" варианте можно будет отсечь, просто удалив соответствующие колонки, а в "желаемом" лишние шифры (их не так уж много) можно будет быстро убрать, последовательно отсортировав по 2-5 столбцам и удалив "лишние" массивы ячеек со сдвигом, ну а "лишними" примечаниями можно и пренебречь (или стирать на стадии копирования, они довольно редки). "Выигрыш" от идеала небольшой, а возни с решением, как мне кажется, слишком много Главное - транспонировать 1000+ записей в строчки не вручную 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
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
Позвольте предложить простой вариант. Разрешайте макросы и жмите кнопку во вложении. За идеальный вариант не берусь - времязатратно. Однако замечу, что идеальный вариант реален, зацепиться есть за что.
[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
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
У меня обратная ситуация. Есть куча столбцов с разным количеством строк в каждом. мне нужно, данные последовательно из каждого столбца отображались один под другим, условно в 1 столбец. Ищу 2й день решение, но видимо руки из одного места, тк находит все случаи, кроме моего. Помогите в этой непростой, и полюбому для кого-то простой ситуации
[moder]Один вопрос - одна ТЕМА! Создавайте свою тему! Эта тема закрыта![/moder]
У меня обратная ситуация. Есть куча столбцов с разным количеством строк в каждом. мне нужно, данные последовательно из каждого столбца отображались один под другим, условно в 1 столбец. Ищу 2й день решение, но видимо руки из одного места, тк находит все случаи, кроме моего. Помогите в этой непростой, и полюбому для кого-то простой ситуации
[moder]Один вопрос - одна ТЕМА! Создавайте свою тему! Эта тема закрыта![/moder]Volkofx