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

Вход

Регистрация

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

 

= Мир MS Excel/ТРАНСПОНИРОВАНИЕ - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
ТРАНСПОНИРОВАНИЕ
Гость Дата: Пятница, 27.01.2012, 14:28 | Сообщение № 1
Группа: Гости
Добрый день! Помогите, пожалуйста, решить ситуацию с транспонированием большого массива данных.
 
Ответить
СообщениеДобрый день! Помогите, пожалуйста, решить ситуацию с транспонированием большого массива данных.

Автор - Гость
Дата добавления - 27.01.2012 в 14:28
Serge_007 Дата: Пятница, 27.01.2012, 14:33 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Насколько большой массив?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеНасколько большой массив?

Автор - Serge_007
Дата добавления - 27.01.2012 в 14:33
mcduck Дата: Пятница, 27.01.2012, 14:40 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте! Помогите, пожалуйста, решить вопрос транспонирования. Есть данные, расположенные в ОДИН столбец. Их нужно распределить по соответственным столбцам. С помощью вставки транспонированием получается громоздко, так как массив очень большой.
Заранее благодарен.
К сообщению приложен файл: TRANSPONIR.xlsx (9.2 Kb)
 
Ответить
СообщениеЗдравствуйте! Помогите, пожалуйста, решить вопрос транспонирования. Есть данные, расположенные в ОДИН столбец. Их нужно распределить по соответственным столбцам. С помощью вставки транспонированием получается громоздко, так как массив очень большой.
Заранее благодарен.

Автор - mcduck
Дата добавления - 27.01.2012 в 14:40
mcduck Дата: Пятница, 27.01.2012, 14:55 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Quote (Serge_007)
Насколько большой массив?

в итоге получится около 500 строк. Исходник, соответственно, 2000-2500 строк
 
Ответить
Сообщение
Quote (Serge_007)
Насколько большой массив?

в итоге получится около 500 строк. Исходник, соответственно, 2000-2500 строк

Автор - mcduck
Дата добавления - 27.01.2012 в 14:55
Serge_007 Дата: Пятница, 27.01.2012, 16:12 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Для названий, адресов и телефонов сделал, дальше что-то не думается...
Пока выложу что есть, может кого на светлые мысли натолкнёт...
К сообщению приложен файл: TRANSPOSE.xls (27.5 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеДля названий, адресов и телефонов сделал, дальше что-то не думается...
Пока выложу что есть, может кого на светлые мысли натолкнёт...

Автор - Serge_007
Дата добавления - 27.01.2012 в 16:12
mcduck Дата: Пятница, 27.01.2012, 16:19 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

спасибо, попробую. Действительно, неудобство исходника в том, что по каждому "клиенту" не одинаковое количество строк.
 
Ответить
Сообщениеспасибо, попробую. Действительно, неудобство исходника в том, что по каждому "клиенту" не одинаковое количество строк.

Автор - mcduck
Дата добавления - 27.01.2012 в 16:19
Саня Дата: Пятница, 27.01.2012, 16:20 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
при проходе по столбцу как идентифицировать поле "Название" (единственно, что кинулось - прописные буквы), иначе не понятно:
"ЗОЛОТІ ВОРОТА, ПРАТ" - это название новой строки или телефон предыдущей...
 
Ответить
Сообщениепри проходе по столбцу как идентифицировать поле "Название" (единственно, что кинулось - прописные буквы), иначе не понятно:
"ЗОЛОТІ ВОРОТА, ПРАТ" - это название новой строки или телефон предыдущей...

Автор - Саня
Дата добавления - 27.01.2012 в 16:20
mcduck Дата: Пятница, 27.01.2012, 16:38 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

не уверен, но не исключено, что есть этот же массив данных, в котором "будущие названия столбцов" фигурируют и в исходном массиве, т.е. примерно так:
НАЗВАНИЕ
ЗОЛОТІ ВОРОТА, ПРАТ
АДРЕС
01103, м. Київ, вул. Кіквідзе, 7/11
ТЕЛЕФОН
(044) 4920751 - Самусєв Сергій Володимирович - президент;(044) 2850020 - Саковська Валентина Анатолівна - бух.;(044) 4920752 - факс;
E-MAIL
kej@zv.com.ua ; sales@zv.com.ua ;
WEB
www.zv.com.ua
и так по каждому "клиенту". Возможно, так можно проиндексировать?
 
Ответить
Сообщениене уверен, но не исключено, что есть этот же массив данных, в котором "будущие названия столбцов" фигурируют и в исходном массиве, т.е. примерно так:
НАЗВАНИЕ
ЗОЛОТІ ВОРОТА, ПРАТ
АДРЕС
01103, м. Київ, вул. Кіквідзе, 7/11
ТЕЛЕФОН
(044) 4920751 - Самусєв Сергій Володимирович - президент;(044) 2850020 - Саковська Валентина Анатолівна - бух.;(044) 4920752 - факс;
E-MAIL
kej@zv.com.ua ; sales@zv.com.ua ;
WEB
www.zv.com.ua
и так по каждому "клиенту". Возможно, так можно проиндексировать?

Автор - mcduck
Дата добавления - 27.01.2012 в 16:38
Саня Дата: Пятница, 27.01.2012, 16:47 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
если строка в твоем сообщении - это строка на xl-листе, то задача, я думаю, тривиальна - VBA.
 
Ответить
Сообщениеесли строка в твоем сообщении - это строка на xl-листе, то задача, я думаю, тривиальна - VBA.

Автор - Саня
Дата добавления - 27.01.2012 в 16:47
Serge_007 Дата: Пятница, 27.01.2012, 16:52 | Сообщение № 10
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (mcduck)
Возможно, так можно проиндексировать?

Если так (и есть названия даже у пустых элементов) - то "транспонировать" формулами элементарно.


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (mcduck)
Возможно, так можно проиндексировать?

Если так (и есть названия даже у пустых элементов) - то "транспонировать" формулами элементарно.

Автор - Serge_007
Дата добавления - 27.01.2012 в 16:52
mcduck Дата: Пятница, 27.01.2012, 16:57 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Нашёл таки "индескированный" файл! Выручайте, очень нужен в виде по столбцам. Заранее благодарен!
К сообщению приложен файл: __.xlsx (88.4 Kb)
 
Ответить
СообщениеНашёл таки "индескированный" файл! Выручайте, очень нужен в виде по столбцам. Заранее благодарен!

Автор - mcduck
Дата добавления - 27.01.2012 в 16:57
mcduck Дата: Пятница, 27.01.2012, 17:54 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

получается, что в случае отсутствия какого-либо элемента (телефон, e-mail) и индекса к нему нет...
 
Ответить
Сообщениеполучается, что в случае отсутствия какого-либо элемента (телефон, e-mail) и индекса к нему нет...

Автор - mcduck
Дата добавления - 27.01.2012 в 17:54
Serge_007 Дата: Пятница, 27.01.2012, 18:00 | Сообщение № 13
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Думает долго smile
http://ifolder.ru/28347774


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеДумает долго smile
http://ifolder.ru/28347774

Автор - Serge_007
Дата добавления - 27.01.2012 в 18:00
mcduck Дата: Пятница, 27.01.2012, 18:32 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Даст ист фантастишь!!!!!!!! Спасибо большое!
 
Ответить
СообщениеДаст ист фантастишь!!!!!!!! Спасибо большое!

Автор - mcduck
Дата добавления - 27.01.2012 в 18:32
mcduck Дата: Пятница, 27.01.2012, 18:38 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

всё-таки произошло какое-то смещение... посмотрите скриншот.
Адрес "03110, м. Київ, вул. Златопільська, 4, к. 105, кв. 2" в исходнике соответствует компании "КОМЕТА, ПП"... sad
К сообщению приложен файл: 7520756.jpg (63.0 Kb)
 
Ответить
Сообщениевсё-таки произошло какое-то смещение... посмотрите скриншот.
Адрес "03110, м. Київ, вул. Златопільська, 4, к. 105, кв. 2" в исходнике соответствует компании "КОМЕТА, ПП"... sad

Автор - mcduck
Дата добавления - 27.01.2012 в 18:38
Serge_007 Дата: Пятница, 27.01.2012, 19:50 | Сообщение № 16
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
У Вас названий 495, а адресов - 501.


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеУ Вас названий 495, а адресов - 501.

Автор - Serge_007
Дата добавления - 27.01.2012 в 19:50
mcduck Дата: Пятница, 27.01.2012, 21:16 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

не исключено, что в каком-то из блоков в исходнике просто не был указан "индекс" . В любом случае спасибо!!! Я ещё покопаюсь, сравню, если Вы не против - отпишусь, если проблемка будет.
 
Ответить
Сообщениене исключено, что в каком-то из блоков в исходнике просто не был указан "индекс" . В любом случае спасибо!!! Я ещё покопаюсь, сравню, если Вы не против - отпишусь, если проблемка будет.

Автор - mcduck
Дата добавления - 27.01.2012 в 21:16
Hugo Дата: Суббота, 28.01.2012, 00:23 | Сообщение № 18
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Что-то у меня формулы до конца не отрабатывают...
Делали такую задачу уже - если всё правильно разложено по строкам, то нет проблем макрос написать.
С пользовательским типом легко сделать.
Но у Вас есть сбои, например:

www.kovostroj.com.uaНазва:

В общем, запустите код, подправьте ошибки в данных, запустите ещё раз и т.д.
Кое-где там нет HTTP - вставьте 2 НЕПУСТЫХ строки - забейте туда хоть "-"
[vba]
Code
Option Explicit

Private Type MyType
         Firm As String
         Adr As String
         Pho As String
         Mail As String
         Http As String
End Type

Sub tt()
         Dim a(), c() As MyType, i&, j&
         On Error Resume Next
         a = Sheets("Лист1").[a1].CurrentRegion.Value
         For i = 1 To UBound(a)
             If InStr(a(i, 1), "Назва:") Then
                 j = j + 1
                 ReDim Preserve c(1 To j)
                 With c(j)
                     .Firm = a(i + 1, 1)
                     .Adr = a(i + 3, 1)
                     .Pho = a(i + 5, 1)
                     .Mail = a(i + 7, 1)
                     .Http = a(i + 9, 1)
                 End With
             End If
         Next

         ReDim arrOut(1 To j, 1 To 5)    ' итоговый массив
         For i = 1 To j    'перекладываем из одного в другое...
             With c(i)
                 arrOut(i, 1) = .Firm
                 arrOut(i, 2) = .Adr
                 arrOut(i, 3) = .Pho
                 arrOut(i, 4) = .Mail
                 arrOut(i, 5) = .Http
             End With
         Next i

         With ThisWorkbook.Sheets("Лист2")    'выгрузка
             .Cells.Clear
             .[a1].Resize(, 5).Value = Split("Название Адрес Телефон Mail Http")
             .[a2].Resize(j, 5).Value = arrOut
             .Activate
         End With

End Sub
[/vba]


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеЧто-то у меня формулы до конца не отрабатывают...
Делали такую задачу уже - если всё правильно разложено по строкам, то нет проблем макрос написать.
С пользовательским типом легко сделать.
Но у Вас есть сбои, например:

www.kovostroj.com.uaНазва:

В общем, запустите код, подправьте ошибки в данных, запустите ещё раз и т.д.
Кое-где там нет HTTP - вставьте 2 НЕПУСТЫХ строки - забейте туда хоть "-"
[vba]
Code
Option Explicit

Private Type MyType
         Firm As String
         Adr As String
         Pho As String
         Mail As String
         Http As String
End Type

Sub tt()
         Dim a(), c() As MyType, i&, j&
         On Error Resume Next
         a = Sheets("Лист1").[a1].CurrentRegion.Value
         For i = 1 To UBound(a)
             If InStr(a(i, 1), "Назва:") Then
                 j = j + 1
                 ReDim Preserve c(1 To j)
                 With c(j)
                     .Firm = a(i + 1, 1)
                     .Adr = a(i + 3, 1)
                     .Pho = a(i + 5, 1)
                     .Mail = a(i + 7, 1)
                     .Http = a(i + 9, 1)
                 End With
             End If
         Next

         ReDim arrOut(1 To j, 1 To 5)    ' итоговый массив
         For i = 1 To j    'перекладываем из одного в другое...
             With c(i)
                 arrOut(i, 1) = .Firm
                 arrOut(i, 2) = .Adr
                 arrOut(i, 3) = .Pho
                 arrOut(i, 4) = .Mail
                 arrOut(i, 5) = .Http
             End With
         Next i

         With ThisWorkbook.Sheets("Лист2")    'выгрузка
             .Cells.Clear
             .[a1].Resize(, 5).Value = Split("Название Адрес Телефон Mail Http")
             .[a2].Resize(j, 5).Value = arrOut
             .Activate
         End With

End Sub
[/vba]

Автор - Hugo
Дата добавления - 28.01.2012 в 00:23
Гость Дата: Понедельник, 30.01.2012, 15:55 | Сообщение № 19
Группа: Гости
спасибо, буду пробовать
 
Ответить
Сообщениеспасибо, буду пробовать

Автор - Гость
Дата добавления - 30.01.2012 в 15:55
  • Страница 1 из 1
  • 1
Поиск:

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