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

Вход

Регистрация

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

 

= Мир MS Excel/Обработка данных таблицы (шахматка) - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Обработка данных таблицы (шахматка)
antonio2040 Дата: Вторник, 18.02.2014, 16:43 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Доброго времени суток, уважаемые форумчане. Есть задание на преобразование данных. Второй день бьюсь, не могу никак придумать, как реализовать. Подскажите, пожалуйста, каким образом это можно сделать? Любые идеи приветствуются. В приложенном файле входные и выходные данные. Нужно как-то ускорить ручную работу, потому что таких таблиц очень много и они гораздо больше приведенной.
К сообщению приложен файл: 7593647.xlsx (12.2 Kb)


Сообщение отредактировал antonio2040 - Вторник, 18.02.2014, 16:44
 
Ответить
СообщениеДоброго времени суток, уважаемые форумчане. Есть задание на преобразование данных. Второй день бьюсь, не могу никак придумать, как реализовать. Подскажите, пожалуйста, каким образом это можно сделать? Любые идеи приветствуются. В приложенном файле входные и выходные данные. Нужно как-то ускорить ручную работу, потому что таких таблиц очень много и они гораздо больше приведенной.

Автор - antonio2040
Дата добавления - 18.02.2014 в 16:43
Wowick Дата: Вторник, 18.02.2014, 17:42 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 5 ±
Замечаний: 0% ±

Excel 2010
Для начала я хотел бы узнать, сколько в одном размере максимум может быть рОстов? Например в 88 их 2: 164 и 170. А есть такие, что их будет 5 или десять штук? Потому как я бы для начала эти объединенные ячейки разбил бы на одиночные, чтобы и в столбце 164 был бы 88 размер и в 170, тоже самое. Тогда уже было бы проще собрать необходимые данные.
 
Ответить
СообщениеДля начала я хотел бы узнать, сколько в одном размере максимум может быть рОстов? Например в 88 их 2: 164 и 170. А есть такие, что их будет 5 или десять штук? Потому как я бы для начала эти объединенные ячейки разбил бы на одиночные, чтобы и в столбце 164 был бы 88 размер и в 170, тоже самое. Тогда уже было бы проще собрать необходимые данные.

Автор - Wowick
Дата добавления - 18.02.2014 в 17:42
antonio2040 Дата: Вторник, 18.02.2014, 18:19 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Больше двух не бывает. Самый маленький размер (80) идет в ростах 158 и 164, остальные 164 и 170. Таким образом, может быть либо 1, либо 2 роста, приходящиеся на один размер.
 
Ответить
СообщениеБольше двух не бывает. Самый маленький размер (80) идет в ростах 158 и 164, остальные 164 и 170. Таким образом, может быть либо 1, либо 2 роста, приходящиеся на один размер.

Автор - antonio2040
Дата добавления - 18.02.2014 в 18:19
Hugo Дата: Вторник, 18.02.2014, 20:10 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3741
Репутация: 796 ±
Замечаний: 0% ±

365
Думаю нужно в начале убрать объединения:
[vba]
Код
Sub tt()
     Dim cc As Range, r As Range, rr As Range, t
     For Each cc In Selection.CurrentRegion
         If cc.MergeCells Then
             t = cc.Value: Set r = cc.MergeArea: cc.UnMerge
             For Each rr In r: r = t: Next
         End If
     Next
End Sub
[/vba]
А затем цикл по столбцам и формирование итоговой таблицы.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеДумаю нужно в начале убрать объединения:
[vba]
Код
Sub tt()
     Dim cc As Range, r As Range, rr As Range, t
     For Each cc In Selection.CurrentRegion
         If cc.MergeCells Then
             t = cc.Value: Set r = cc.MergeArea: cc.UnMerge
             For Each rr In r: r = t: Next
         End If
     Next
End Sub
[/vba]
А затем цикл по столбцам и формирование итоговой таблицы.

Автор - Hugo
Дата добавления - 18.02.2014 в 20:10
antonio2040 Дата: Вторник, 18.02.2014, 20:15 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
С алгоритмом проблем нет. Можно подробнее? Я в институте на Делфи программировал, сейчас немного в 1С. С VBA вообще никогда не пересекался.
 
Ответить
СообщениеС алгоритмом проблем нет. Можно подробнее? Я в институте на Делфи программировал, сейчас немного в 1С. С VBA вообще никогда не пересекался.

Автор - antonio2040
Дата добавления - 18.02.2014 в 20:15
Hugo Дата: Вторник, 18.02.2014, 21:25 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3741
Репутация: 796 ±
Замечаний: 0% ±

365
Убрали объединение, далее цикл по столбцам (со второго), в нём вложенный по строкам (с третьей).
Если есть значение - увеличиваем индекс out-таблицы, копируем в неё значения из "шапок" и количество, сразу можно прописать и формулу.
Если таблицы огромные - можно результат собирать в массиве (сразу создать его по возможному максимуму, выгрузить собранное по факту).

Да, т.к. мешают объединения только в первой строке - то нет смысла перебирать всё:
[vba]
Код
For Each cc In Selection.CurrentRegion.Rows(1).Cells
[/vba]
Так правильнее, и быстрее.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеУбрали объединение, далее цикл по столбцам (со второго), в нём вложенный по строкам (с третьей).
Если есть значение - увеличиваем индекс out-таблицы, копируем в неё значения из "шапок" и количество, сразу можно прописать и формулу.
Если таблицы огромные - можно результат собирать в массиве (сразу создать его по возможному максимуму, выгрузить собранное по факту).

Да, т.к. мешают объединения только в первой строке - то нет смысла перебирать всё:
[vba]
Код
For Each cc In Selection.CurrentRegion.Rows(1).Cells
[/vba]
Так правильнее, и быстрее.

Автор - Hugo
Дата добавления - 18.02.2014 в 21:25
antonio2040 Дата: Среда, 19.02.2014, 13:54 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Думаю нужно в начале убрать объединения:
[vba]
Код
Sub tt()
Dim cc As Range, r As Range, rr As Range, t
For Each cc In Selection.CurrentRegion
If cc.MergeCells Then
t = cc.Value: Set r = cc.MergeArea: cc.UnMerge
For Each rr In r: r = t: Next
End If
Next
End Sub
[/vba]


Так сделать не получится, потому что в файле объединены несколько ячеек... Давайте лучше исходный покажу, наверное, так будет проще.
К сообщению приложен файл: _241.xls (33.5 Kb)


Сообщение отредактировал Serge_007 - Вторник, 25.02.2014, 19:20
 
Ответить
Сообщение
Думаю нужно в начале убрать объединения:
[vba]
Код
Sub tt()
Dim cc As Range, r As Range, rr As Range, t
For Each cc In Selection.CurrentRegion
If cc.MergeCells Then
t = cc.Value: Set r = cc.MergeArea: cc.UnMerge
For Each rr In r: r = t: Next
End If
Next
End Sub
[/vba]


Так сделать не получится, потому что в файле объединены несколько ячеек... Давайте лучше исходный покажу, наверное, так будет проще.

Автор - antonio2040
Дата добавления - 19.02.2014 в 13:54
antonio2040 Дата: Вторник, 25.02.2014, 17:01 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Будут еще какие-нибудь идеи?
 
Ответить
СообщениеБудут еще какие-нибудь идеи?

Автор - antonio2040
Дата добавления - 25.02.2014 в 17:01
Hugo Дата: Вторник, 25.02.2014, 17:29 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3741
Репутация: 796 ±
Замечаний: 0% ±

365
Я в общем и не предлагал портить оригинал. Можно ведь испортить копию, а резульат потом скопировать в оригинал.
Считайте это за идею.
P.S. Посмотрел новые оригиналы таблиц - ну извините, идея теперь одна - пусть их обрабатывает тот, кто их такие придумал :(
Вот зачем там эти объединения? Трудно ширину столбцов изменить? В одном месте где 100 на два столбца, там вроде как оно нужно - но ведь тоже не настолько, хотя визуально так можно сделать и без объединения ячеек.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеЯ в общем и не предлагал портить оригинал. Можно ведь испортить копию, а резульат потом скопировать в оригинал.
Считайте это за идею.
P.S. Посмотрел новые оригиналы таблиц - ну извините, идея теперь одна - пусть их обрабатывает тот, кто их такие придумал :(
Вот зачем там эти объединения? Трудно ширину столбцов изменить? В одном месте где 100 на два столбца, там вроде как оно нужно - но ведь тоже не настолько, хотя визуально так можно сделать и без объединения ячеек.

Автор - Hugo
Дата добавления - 25.02.2014 в 17:29
antonio2040 Дата: Вторник, 25.02.2014, 19:44 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Hugo, это выгрузка из 1С. У них всегда такие заморочки с таблицами Excel. Что касается порчи оригиналов, то все они регулярно на почту скидываются, поэтому можно портить сколько влезет.
Нужно обработать несколько десятков таких файлов, чтобы в свою 1С'ку загрузить. Вручную, сами понимаете, это очень долго и муторно.
 
Ответить
СообщениеHugo, это выгрузка из 1С. У них всегда такие заморочки с таблицами Excel. Что касается порчи оригиналов, то все они регулярно на почту скидываются, поэтому можно портить сколько влезет.
Нужно обработать несколько десятков таких файлов, чтобы в свою 1С'ку загрузить. Вручную, сами понимаете, это очень долго и муторно.

Автор - antonio2040
Дата добавления - 25.02.2014 в 19:44
Hugo Дата: Вторник, 25.02.2014, 20:44 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3741
Репутация: 796 ±
Замечаний: 0% ±

365
Нет идей с такими данными.
Просите выгрузки в другом виде - такие похоже только вручную можно обрабатывать.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНет идей с такими данными.
Просите выгрузки в другом виде - такие похоже только вручную можно обрабатывать.

Автор - Hugo
Дата добавления - 25.02.2014 в 20:44
  • Страница 1 из 1
  • 1
Поиск:

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