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

Вход

Регистрация

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

 

= Мир MS Excel/Редизайнер таблиц (преобразование в плоскую таблицу) - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Готовые решения » Редизайнер таблиц (преобразование в плоскую таблицу) (Excel)
Редизайнер таблиц (преобразование в плоскую таблицу)
DJ_Marker_MC Дата: Среда, 04.02.2015, 10:40 | Сообщение № 1
Группа: Друзья
Ранг: Ветеран
Сообщений: 984
Репутация: 213 ±
Замечаний: 0% ±

Excel 2016
ОБНОВЛЕНО 19.04.15 до Версии 2 (макрос не изменился но был добавлен видеобзор на данную примочку)

Добрый день, друзья и гости.
Оформить данное решение навеяла очередная тема на нашем форуме о том "как преобразовать таблицу разбитую по столбцам в плоскую?".

- Данное решение построено на массивах, авторство принадлежит МСН.
- Внес небольшую коррективу, а именно запрос на выделение диапазона - Максим Зеленский, с дружеского форума.
- Дополнительные улучшения и полезности - SLAVICK .
- Небольшие дополнения и коррективы - DJ Marker MC


В итоге получился вот такой вот макрос:





Итак по шагам.

1. К примеру имеем таблицу такого вида:


После запуска Редизайнера видим диалоговое окно в котором Вам предложено указать диапазон таблицы которую необходимо преобразовать.

2. Указываем диапазон таблицы: (если таблица была выделена до запуска макроса, то выделенный диапазон будет подхвачен автоматически)


3. Третий шаг, в диалоговом окне необходимо указать сколько строк находится в шапке таблицы. В нашем примере - три строки.


4. Следующим шагом указываем количество столбцов с данными в левой части таблицы. В нашем примере их пять - Код, Цена, Направление, Страна, Мин.уп!


5. Если мы ходим получить ПЛОСКУЮ ТАБЛИЦУ, то оставляем тут значение по умолчанию 1, если Вам будет необходимо чтоб вправо таблица была разбита помесячно, а года были разбиты вниз то поставьте 12 (вообще на этом шаге поэкспериментируйте и сами поймете как это работает.
Я же оставлю тут 1, так как желаю получить плоскую таблицу



6. Последний шаг - вопрос: Хотите Вы уменьшить шапку таблицы или нет? Данный вопрос задается только в том случае, если в предыдущем шаге Вы указали - 1 или же если в шапку таблицы попадает всего одна строка (тоже попробуйте как это работает в двух вариантах методом "ТЫКА")


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


Попробовать как это работает можно с помощью приложенного файла.
В целом все очень быстро и красиво!
Всем приятного пользования!
К сообщению приложен файл: RedisignerV2.xlsm(23.0 Kb)
 
Ответить
СообщениеОБНОВЛЕНО 19.04.15 до Версии 2 (макрос не изменился но был добавлен видеобзор на данную примочку)

Добрый день, друзья и гости.
Оформить данное решение навеяла очередная тема на нашем форуме о том "как преобразовать таблицу разбитую по столбцам в плоскую?".

- Данное решение построено на массивах, авторство принадлежит МСН.
- Внес небольшую коррективу, а именно запрос на выделение диапазона - Максим Зеленский, с дружеского форума.
- Дополнительные улучшения и полезности - SLAVICK .
- Небольшие дополнения и коррективы - DJ Marker MC


В итоге получился вот такой вот макрос:





Итак по шагам.

1. К примеру имеем таблицу такого вида:


После запуска Редизайнера видим диалоговое окно в котором Вам предложено указать диапазон таблицы которую необходимо преобразовать.

2. Указываем диапазон таблицы: (если таблица была выделена до запуска макроса, то выделенный диапазон будет подхвачен автоматически)


3. Третий шаг, в диалоговом окне необходимо указать сколько строк находится в шапке таблицы. В нашем примере - три строки.


4. Следующим шагом указываем количество столбцов с данными в левой части таблицы. В нашем примере их пять - Код, Цена, Направление, Страна, Мин.уп!


5. Если мы ходим получить ПЛОСКУЮ ТАБЛИЦУ, то оставляем тут значение по умолчанию 1, если Вам будет необходимо чтоб вправо таблица была разбита помесячно, а года были разбиты вниз то поставьте 12 (вообще на этом шаге поэкспериментируйте и сами поймете как это работает.
Я же оставлю тут 1, так как желаю получить плоскую таблицу



6. Последний шаг - вопрос: Хотите Вы уменьшить шапку таблицы или нет? Данный вопрос задается только в том случае, если в предыдущем шаге Вы указали - 1 или же если в шапку таблицы попадает всего одна строка (тоже попробуйте как это работает в двух вариантах методом "ТЫКА")


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


Попробовать как это работает можно с помощью приложенного файла.
В целом все очень быстро и красиво!
Всем приятного пользования!

Автор - DJ_Marker_MC
Дата добавления - 04.02.2015 в 10:40
SLAVICK Дата: Среда, 04.02.2015, 20:46 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 759 ±
Замечаний: 0% ±

2019
Хороший код - мой в разы больше :D
Рискну дать несколько предложений по улучшению:

Во все Iputboxы проставить умолчания:
[vba]
Код
   Set inpdata = Application.InputBox("Выберите обрабатываемый диапазон:", "Выбор диапазона", Selection.Address, Type:=8)
          hr = InputBox("Сколько строк с подписями данных сверху", , 1)
          hc = InputBox("Сколько столбцов с подписями данных слева?", , 1)
       
[/vba]

Добавить возможность за раз брать не один столбец а с выбором -например мне часто нужно брать по 12(Янв-Дек), иногда по два(шт, $)

Добавить в код проверку типа значений:
У меня были проблемы с упаковками в формате "1/10" - они при выгрузке на лист преобразовывались в дату и с кодами типа "0006" = "6" . Для таких данных я сцеплял с "'" & hcArr(i, c)

Прошу камнями не забрасывать. Мне такие мелочи существенно ускорили работу, может еще кому будет полезно. ^_^


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Среда, 04.02.2015, 20:51
 
Ответить
СообщениеХороший код - мой в разы больше :D
Рискну дать несколько предложений по улучшению:

Во все Iputboxы проставить умолчания:
[vba]
Код
   Set inpdata = Application.InputBox("Выберите обрабатываемый диапазон:", "Выбор диапазона", Selection.Address, Type:=8)
          hr = InputBox("Сколько строк с подписями данных сверху", , 1)
          hc = InputBox("Сколько столбцов с подписями данных слева?", , 1)
       
[/vba]

Добавить возможность за раз брать не один столбец а с выбором -например мне часто нужно брать по 12(Янв-Дек), иногда по два(шт, $)

Добавить в код проверку типа значений:
У меня были проблемы с упаковками в формате "1/10" - они при выгрузке на лист преобразовывались в дату и с кодами типа "0006" = "6" . Для таких данных я сцеплял с "'" & hcArr(i, c)

Прошу камнями не забрасывать. Мне такие мелочи существенно ускорили работу, может еще кому будет полезно. ^_^

Автор - SLAVICK
Дата добавления - 04.02.2015 в 20:46
DJ_Marker_MC Дата: Среда, 04.02.2015, 22:02 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 984
Репутация: 213 ±
Замечаний: 0% ±

Excel 2016
Во все Iputboxы проставить умолчания:

С этим понятно - исправлю.

Добавить возможность за раз брать не один столбец а с выбором -например мне часто нужно брать по 12(Янв-Дек), иногда по два(шт, $)

Про это не понял, что хотели сказать?

Добавить в код проверку типа значений

Тут абсолютно согласен, но сам не смогу реализовать это(((
 
Ответить
Сообщение
Во все Iputboxы проставить умолчания:

С этим понятно - исправлю.

Добавить возможность за раз брать не один столбец а с выбором -например мне часто нужно брать по 12(Янв-Дек), иногда по два(шт, $)

Про это не понял, что хотели сказать?

Добавить в код проверку типа значений

Тут абсолютно согласен, но сам не смогу реализовать это(((

Автор - DJ_Marker_MC
Дата добавления - 04.02.2015 в 22:02
SLAVICK Дата: Четверг, 05.02.2015, 11:12 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 759 ±
Замечаний: 0% ±

2019
Добавил лист с тем как иногда мне нужно получать данные - так удобней работать в сводной.Это моё субъективное мнение - может я в этом не одинок :)

Вложил простенькую функцию проверки данных - сам ею пользуюсь.
Ее можно применить для справочника(т.е. для диапазона который нужно повторять), для данных наверное нет смысла... поскольку там как правило цифры.

Надеюсь мои маленькие "улучшалки" пригодятся :p
К сообщению приложен файл: 0546452.xlsm(48.8 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеДобавил лист с тем как иногда мне нужно получать данные - так удобней работать в сводной.Это моё субъективное мнение - может я в этом не одинок :)

Вложил простенькую функцию проверки данных - сам ею пользуюсь.
Ее можно применить для справочника(т.е. для диапазона который нужно повторять), для данных наверное нет смысла... поскольку там как правило цифры.

Надеюсь мои маленькие "улучшалки" пригодятся :p

Автор - SLAVICK
Дата добавления - 05.02.2015 в 11:12
SLAVICK Дата: Четверг, 05.02.2015, 18:53 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 759 ±
Замечаний: 0% ±

2019
Решил у себя заменить свой громоздкий код на этот. Он в три раза меньше. Спасибо Вам и МСН. hands

Внес в него свои же предложения и еще несколько "украшательств".
Может еще кому сгодится :D
Код запускается по нижней кнопке. <_<
К сообщению приложен файл: Redisigner_2015.xlsm(35.6 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Пятница, 06.02.2015, 01:27
 
Ответить
СообщениеРешил у себя заменить свой громоздкий код на этот. Он в три раза меньше. Спасибо Вам и МСН. hands

Внес в него свои же предложения и еще несколько "украшательств".
Может еще кому сгодится :D
Код запускается по нижней кнопке. <_<

Автор - SLAVICK
Дата добавления - 05.02.2015 в 18:53
DJ_Marker_MC Дата: Пятница, 06.02.2015, 13:28 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 984
Репутация: 213 ±
Замечаний: 0% ±

Excel 2016
SLAVICK, очень крутая штука вышла, но мне кажется подписывать шапку не совсем правильно когда в последнем inputbox указываем "1" и соответственно количество строк сверху тоже не должно быть 3, достаточно одной строки.
Предлагаю подправить немного Ваши вкусняшки и чуток допилить проверкой:
[vba]
Код
    If nSt = 1 Then
          r = 2
          ns.Cells(r, 1).Resize(UBound(out), UBound(out, 2)) = out '    Выгрузка данных
          ns.Cells(1, 1).Resize(1, UBound(out, 2)).Interior.ColorIndex = 44 '    Закрашивание шапки
          ns.Cells(1, r + c - 1).Select: ActiveWindow.FreezePanes = True '    Закрепление шапки
      Else
          ns.Cells(1, r + c - 1).Resize(UBound(hrArr), nSt) = hrArr '    Выгрузка шапки
          ns.Cells(r, 1).Resize(UBound(out), UBound(out, 2)) = out '    Выгрузка данных
      'Удобности:
          ns.Cells(1, 1).Resize(UBound(hrArr), UBound(out, 2)).Interior.ColorIndex = 44 '    Закрашивание шапки
          ns.Cells(r, r + c - 1).Select: ActiveWindow.FreezePanes = True '    Закрепление шапки
      End If
      ns.Range(Cells(r - 1, 1), Cells(UBound(out), UBound(out, 2))).AutoFilter '    Установка Автофильтра
[/vba]
надеюсь Вы не против, что я немного изменил цвет шапки? я лично или таким или желтым как правило шапку делаю)))

Также предлагаю изменить вопрос в последнем inputbox, поскольку я не сразу понял о чем речь, как насчет такого?
[vba]
Код
nSt = InputBox("Сколько столбцов с данными будет в правой части таблицы? (например: если Ваша таблица уходит вправо на 24 месяца то указав тут 12 - месяцы разобьются по столбцам, а год перенесется по строкам", , 1)
[/vba]

И уже если допиливать внешний вид, то предлагаю в конец еще вставить такой кусочек:
[vba]
Код
' Установка границ
      With ns.Range(Cells(1, 1), Cells(Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row, UBound(out, 2)))
          .Borders.LineStyle = xlContinuous
          .Borders.Weight = xlThin
          .Borders(xlEdgeLeft).Weight = xlThin
          .Borders(xlEdgeTop).Weight = xlThin
          .Borders(xlEdgeBottom).Weight = xlThin
          .Borders(xlEdgeRight).Weight = xlThin
      End With
[/vba]

Таким образом получаем красивое универсальное решение.

Что скажете?
К сообщению приложен файл: 0711946.xlsm(27.4 Kb)
 
Ответить
СообщениеSLAVICK, очень крутая штука вышла, но мне кажется подписывать шапку не совсем правильно когда в последнем inputbox указываем "1" и соответственно количество строк сверху тоже не должно быть 3, достаточно одной строки.
Предлагаю подправить немного Ваши вкусняшки и чуток допилить проверкой:
[vba]
Код
    If nSt = 1 Then
          r = 2
          ns.Cells(r, 1).Resize(UBound(out), UBound(out, 2)) = out '    Выгрузка данных
          ns.Cells(1, 1).Resize(1, UBound(out, 2)).Interior.ColorIndex = 44 '    Закрашивание шапки
          ns.Cells(1, r + c - 1).Select: ActiveWindow.FreezePanes = True '    Закрепление шапки
      Else
          ns.Cells(1, r + c - 1).Resize(UBound(hrArr), nSt) = hrArr '    Выгрузка шапки
          ns.Cells(r, 1).Resize(UBound(out), UBound(out, 2)) = out '    Выгрузка данных
      'Удобности:
          ns.Cells(1, 1).Resize(UBound(hrArr), UBound(out, 2)).Interior.ColorIndex = 44 '    Закрашивание шапки
          ns.Cells(r, r + c - 1).Select: ActiveWindow.FreezePanes = True '    Закрепление шапки
      End If
      ns.Range(Cells(r - 1, 1), Cells(UBound(out), UBound(out, 2))).AutoFilter '    Установка Автофильтра
[/vba]
надеюсь Вы не против, что я немного изменил цвет шапки? я лично или таким или желтым как правило шапку делаю)))

Также предлагаю изменить вопрос в последнем inputbox, поскольку я не сразу понял о чем речь, как насчет такого?
[vba]
Код
nSt = InputBox("Сколько столбцов с данными будет в правой части таблицы? (например: если Ваша таблица уходит вправо на 24 месяца то указав тут 12 - месяцы разобьются по столбцам, а год перенесется по строкам", , 1)
[/vba]

И уже если допиливать внешний вид, то предлагаю в конец еще вставить такой кусочек:
[vba]
Код
' Установка границ
      With ns.Range(Cells(1, 1), Cells(Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row, UBound(out, 2)))
          .Borders.LineStyle = xlContinuous
          .Borders.Weight = xlThin
          .Borders(xlEdgeLeft).Weight = xlThin
          .Borders(xlEdgeTop).Weight = xlThin
          .Borders(xlEdgeBottom).Weight = xlThin
          .Borders(xlEdgeRight).Weight = xlThin
      End With
[/vba]

Таким образом получаем красивое универсальное решение.

Что скажете?

Автор - DJ_Marker_MC
Дата добавления - 06.02.2015 в 13:28
SLAVICK Дата: Пятница, 06.02.2015, 14:10 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 759 ±
Замечаний: 0% ±

2019
На счет не подписывать шапку:
Возможно и так. но тогда:
[vba]
Код

вместо
            ns.Cells(1, r + c - 1).Select: ActiveWindow.FreezePanes = True '    Закрепление шапки
Нужно
            ns.Cells(2, r + c - 1).Select: ActiveWindow.FreezePanes = True '    Закрепление шапки
[/vba] :D
А то шапка не закрепляется.
Лично я против этого решения, но как говорится на вкус и цвет... :). Я наоборот, еще добавил шапку над "Справочником" с родными названиями, потому что приходится потом еще и "Обзывать" все столбцы справочника заново(особенно когда их больше 10 %) ) .
Также предлагаю изменить вопрос в последнем inputbox

Только за... просто поленился столько букв писать :D
И уже если допиливать внешний вид, то предлагаю в конец еще вставить такой кусочек:

Только за, но можно немного упростить код:
[vba]
Код
' Установка границ
        With ns.Range(Cells(1, 1), Cells(Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row, UBound(out, 2))).Borders
            .LineStyle = xlContinuous
            .Weight = xlThin
        End With
[/vba]
Добавил шапку и поменял местами справочник с подписями по столбцам. Мне кажется так гораздо удобнее<_<
К сообщению приложен файл: 8047436.xlsm(32.9 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Пятница, 06.02.2015, 14:34
 
Ответить
СообщениеНа счет не подписывать шапку:
Возможно и так. но тогда:
[vba]
Код

вместо
            ns.Cells(1, r + c - 1).Select: ActiveWindow.FreezePanes = True '    Закрепление шапки
Нужно
            ns.Cells(2, r + c - 1).Select: ActiveWindow.FreezePanes = True '    Закрепление шапки
[/vba] :D
А то шапка не закрепляется.
Лично я против этого решения, но как говорится на вкус и цвет... :). Я наоборот, еще добавил шапку над "Справочником" с родными названиями, потому что приходится потом еще и "Обзывать" все столбцы справочника заново(особенно когда их больше 10 %) ) .
Также предлагаю изменить вопрос в последнем inputbox

Только за... просто поленился столько букв писать :D
И уже если допиливать внешний вид, то предлагаю в конец еще вставить такой кусочек:

Только за, но можно немного упростить код:
[vba]
Код
' Установка границ
        With ns.Range(Cells(1, 1), Cells(Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row, UBound(out, 2))).Borders
            .LineStyle = xlContinuous
            .Weight = xlThin
        End With
[/vba]
Добавил шапку и поменял местами справочник с подписями по столбцам. Мне кажется так гораздо удобнее<_<

Автор - SLAVICK
Дата добавления - 06.02.2015 в 14:10
DJ_Marker_MC Дата: Пятница, 06.02.2015, 14:39 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 984
Репутация: 213 ±
Замечаний: 0% ±

Excel 2016
Лично я против этого решения

Я правильно понял что вы против того чтоб не подписывать шапку?
Объясню почему считаю правильно не подписывать шапку:
1. Если мы делаем редизайн вправо на 12 месяцев с нашей таблицы-пример, то получаем такой результат (с учетом того что редизайн делаем ТОЛЬКО продажи):

Все что тут выделено красным, при подобной ситуации является ненужным и скорее всего будет удалено (ИМХО я б удалил).
Но в тоже время подпись помесячной разбивки - сохранилось, а вот первые два столбца подписать в ручном режиме - думаю труда не составит.

2. Если делам редизайн в плоскую таблицу, то получаем такой результат:

Опять таки, если делать редизайн только данных по продажам 10-11, то столбец в котором повторяется слово ПРОДАЖИ в целом подлежит удалению. И в то же время остается для ЕКСЕЛЯ вопрос, как подписать 3 новых столбца? - ему ведь нет откуда понять что это за столбцы, соответственно их в любом случае придется подписывать руками.
Другими словами, как вариант можно добавлять подпись лишь столбцам которые находятся в левой части, точнее то количество столбцов слева которое мы указываем во втором inputbox
К сообщению приложен файл: 6313258.png(48.2 Kb) · 0582917.png(38.5 Kb)
 
Ответить
Сообщение
Лично я против этого решения

Я правильно понял что вы против того чтоб не подписывать шапку?
Объясню почему считаю правильно не подписывать шапку:
1. Если мы делаем редизайн вправо на 12 месяцев с нашей таблицы-пример, то получаем такой результат (с учетом того что редизайн делаем ТОЛЬКО продажи):

Все что тут выделено красным, при подобной ситуации является ненужным и скорее всего будет удалено (ИМХО я б удалил).
Но в тоже время подпись помесячной разбивки - сохранилось, а вот первые два столбца подписать в ручном режиме - думаю труда не составит.

2. Если делам редизайн в плоскую таблицу, то получаем такой результат:

Опять таки, если делать редизайн только данных по продажам 10-11, то столбец в котором повторяется слово ПРОДАЖИ в целом подлежит удалению. И в то же время остается для ЕКСЕЛЯ вопрос, как подписать 3 новых столбца? - ему ведь нет откуда понять что это за столбцы, соответственно их в любом случае придется подписывать руками.
Другими словами, как вариант можно добавлять подпись лишь столбцам которые находятся в левой части, точнее то количество столбцов слева которое мы указываем во втором inputbox

Автор - DJ_Marker_MC
Дата добавления - 06.02.2015 в 14:39
SLAVICK Дата: Пятница, 06.02.2015, 15:19 | Сообщение № 9
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 759 ±
Замечаний: 0% ±

2019
а вот первые два столбца подписать в ручном режиме - думаю труда не составит.

А если их будет не 2 а больше 10? или хотя бы 9 как в моем примере с прошлого поста? %)

Другими словами, как вариант можно добавлять подпись лишь столбцам которые находятся в левой части, точнее то количество столбцов слева которое мы указываем во втором inputbox

Я же это и сделал в прошлом посте. Только оставил и подпись блока данных :D
Вы же не знаете в какой именно строке у пользователя будет подписано разные данные которые нужно оставить. Это у меня в нижней строке, а может быть и по средине, и вверху ^_^
Лично мне проще удалить лишние строки и столбцы, чем подписывать недостающие данные :D
Предлагаю сделать контрольный вопрос, если выбрано для повтора 1 столбец.
типа "Добавить шапку?" тогда вариант подойдет и моим и Вашим единомышленникам beer


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Пятница, 06.02.2015, 15:20
 
Ответить
Сообщение
а вот первые два столбца подписать в ручном режиме - думаю труда не составит.

А если их будет не 2 а больше 10? или хотя бы 9 как в моем примере с прошлого поста? %)

Другими словами, как вариант можно добавлять подпись лишь столбцам которые находятся в левой части, точнее то количество столбцов слева которое мы указываем во втором inputbox

Я же это и сделал в прошлом посте. Только оставил и подпись блока данных :D
Вы же не знаете в какой именно строке у пользователя будет подписано разные данные которые нужно оставить. Это у меня в нижней строке, а может быть и по средине, и вверху ^_^
Лично мне проще удалить лишние строки и столбцы, чем подписывать недостающие данные :D
Предлагаю сделать контрольный вопрос, если выбрано для повтора 1 столбец.
типа "Добавить шапку?" тогда вариант подойдет и моим и Вашим единомышленникам beer

Автор - SLAVICK
Дата добавления - 06.02.2015 в 15:19
DJ_Marker_MC Дата: Пятница, 06.02.2015, 16:03 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 984
Репутация: 213 ±
Замечаний: 0% ±

Excel 2016
SLAVICK, я не увидел Ваш предыдущий вариант просто, на самом деле он уже приближен к иделу. На мой взгляд все хорошо, только исправить одно НО все же стоит, наверное.
Предлагаю все таки делать проверку nSt и если это значение равно 1, то выводить шапку из 1 строки, подписывать все как и подписываете, а столбец со значениями, просто подписать в принудительном порядке, например "ЗНАЧЕНИЯ"


Признаю честно, у меня на такую правку много времени уйдет))) Если Вам такой вариант понравится, не подправите?
К сообщению приложен файл: 7690663.png(80.6 Kb)
 
Ответить
СообщениеSLAVICK, я не увидел Ваш предыдущий вариант просто, на самом деле он уже приближен к иделу. На мой взгляд все хорошо, только исправить одно НО все же стоит, наверное.
Предлагаю все таки делать проверку nSt и если это значение равно 1, то выводить шапку из 1 строки, подписывать все как и подписываете, а столбец со значениями, просто подписать в принудительном порядке, например "ЗНАЧЕНИЯ"


Признаю честно, у меня на такую правку много времени уйдет))) Если Вам такой вариант понравится, не подправите?

Автор - DJ_Marker_MC
Дата добавления - 06.02.2015 в 16:03
DJ_Marker_MC Дата: Пятница, 06.02.2015, 16:14 | Сообщение № 11
Группа: Друзья
Ранг: Ветеран
Сообщений: 984
Репутация: 213 ±
Замечаний: 0% ±

Excel 2016
Аааа... блин... понял о чем Вы... если в столбцах слева подпись будет не в 3 строке, а например во второй... ну да... тогда выходит предугадать это не выйдет. Тобеж шапку нужно оставлять так как у Вас... но все же блок с данными, при nst = 1, думаю подписывать автоматом не нужно.

up:
Другими словами вот так:
[vba]
Код
If nSt <> 1 Then ns.Cells(1, r + c - 1).Resize(UBound(hrArr), nSt) = hrArr '    Выгрузка шапки столбцов
[/vba]
К сообщению приложен файл: 0651298.xlsm(23.4 Kb)
 
Ответить
СообщениеАааа... блин... понял о чем Вы... если в столбцах слева подпись будет не в 3 строке, а например во второй... ну да... тогда выходит предугадать это не выйдет. Тобеж шапку нужно оставлять так как у Вас... но все же блок с данными, при nst = 1, думаю подписывать автоматом не нужно.

up:
Другими словами вот так:
[vba]
Код
If nSt <> 1 Then ns.Cells(1, r + c - 1).Resize(UBound(hrArr), nSt) = hrArr '    Выгрузка шапки столбцов
[/vba]

Автор - DJ_Marker_MC
Дата добавления - 06.02.2015 в 16:14
SLAVICK Дата: Пятница, 06.02.2015, 17:20 | Сообщение № 12
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 759 ±
Замечаний: 0% ±

2019
Ну еще немного усовершенствовал :D
Добавил контрольный вопрос и перепроверку шапки(раньше если выбрано кол. строк и кол. повторяемого диап. вылетал в ошибку(Ubound(шапка))). %)

блок с данными, при nst = 1

Сделал = "Значение" B)

Проверяйте вроде все ОК :)
ЗЫ А макрос тем временем рос и рос :D
К сообщению приложен файл: 8047436-4-.xlsm(30.3 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Пятница, 06.02.2015, 18:14
 
Ответить
СообщениеНу еще немного усовершенствовал :D
Добавил контрольный вопрос и перепроверку шапки(раньше если выбрано кол. строк и кол. повторяемого диап. вылетал в ошибку(Ubound(шапка))). %)

блок с данными, при nst = 1

Сделал = "Значение" B)

Проверяйте вроде все ОК :)
ЗЫ А макрос тем временем рос и рос :D

Автор - SLAVICK
Дата добавления - 06.02.2015 в 17:20
DJ_Marker_MC Дата: Пятница, 06.02.2015, 18:31 | Сообщение № 13
Группа: Друзья
Ранг: Ветеран
Сообщений: 984
Репутация: 213 ±
Замечаний: 0% ±

Excel 2016
SLAVICK, Лично мне нравится))) очень круто Вышло)))
 
Ответить
СообщениеSLAVICK, Лично мне нравится))) очень круто Вышло)))

Автор - DJ_Marker_MC
Дата добавления - 06.02.2015 в 18:31
SLAVICK Дата: Суббота, 07.02.2015, 10:49 | Сообщение № 14
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 759 ±
Замечаний: 0% ±

2019
Ну тогда, наверное, нужно дополнить презентацию возможностей доступным для пользователей языком .
У Вас это красиво и наглядно получается specool
Лично я забираю код себе в копилку. Мне тоже нравится, что получилось. :) beer


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Суббота, 07.02.2015, 10:55
 
Ответить
СообщениеНу тогда, наверное, нужно дополнить презентацию возможностей доступным для пользователей языком .
У Вас это красиво и наглядно получается specool
Лично я забираю код себе в копилку. Мне тоже нравится, что получилось. :) beer

Автор - SLAVICK
Дата добавления - 07.02.2015 в 10:49
SLAVICK Дата: Суббота, 07.02.2015, 10:50 | Сообщение № 15
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 759 ±
Замечаний: 0% ±

2019
Какой то глюк произошел. Сообщение почему-то задвоилось :(
Ну тогда еще раз beer


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Суббота, 07.02.2015, 10:54
 
Ответить
СообщениеКакой то глюк произошел. Сообщение почему-то задвоилось :(
Ну тогда еще раз beer

Автор - SLAVICK
Дата добавления - 07.02.2015 в 10:50
DJ_Marker_MC Дата: Суббота, 07.02.2015, 11:49 | Сообщение № 16
Группа: Друзья
Ранг: Ветеран
Сообщений: 984
Репутация: 213 ±
Замечаний: 0% ±

Excel 2016
SLAVICK, Тоже уже забрал в копилку.
Сегодня обновлю стартовое сообщение)))
Спасибо за внесенные отличные улучшалки! hands beer
 
Ответить
СообщениеSLAVICK, Тоже уже забрал в копилку.
Сегодня обновлю стартовое сообщение)))
Спасибо за внесенные отличные улучшалки! hands beer

Автор - DJ_Marker_MC
Дата добавления - 07.02.2015 в 11:49
DJ_Marker_MC Дата: Понедельник, 09.02.2015, 13:42 | Сообщение № 17
Группа: Друзья
Ранг: Ветеран
Сообщений: 984
Репутация: 213 ±
Замечаний: 0% ±

Excel 2016
Обновлено до версии 2. Внес все изменения в первый пост!
 
Ответить
СообщениеОбновлено до версии 2. Внес все изменения в первый пост!

Автор - DJ_Marker_MC
Дата добавления - 09.02.2015 в 13:42
SLAVICK Дата: Пятница, 12.08.2016, 14:59 | Сообщение № 18
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 759 ±
Замечаний: 0% ±

2019
В этой теме подняли вопрос по сохранению форматов и примечаний.
Решил дополнить готовый редизайнер куском кода для выбора режима с сохранением форматов или нет.

По умолчанию - активируется кнопка "Нет" - тогда запускается редизайнер в обычном режиме.
Если нажать "Да" - то в режиме сохранения форматов и примечаний - в этом режиме работает на порядок дольше... но зато все в точности как в исходнике.
В своей надстройке заменил на эту версию(мало ли может нужно будет форматы сохранить).
В общем, встречайте 3-ю версию :D .
К сообщению приложен файл: 3239540.jpg(7.9 Kb) · RedisignerV3.xlsm(30.4 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеВ этой теме подняли вопрос по сохранению форматов и примечаний.
Решил дополнить готовый редизайнер куском кода для выбора режима с сохранением форматов или нет.

По умолчанию - активируется кнопка "Нет" - тогда запускается редизайнер в обычном режиме.
Если нажать "Да" - то в режиме сохранения форматов и примечаний - в этом режиме работает на порядок дольше... но зато все в точности как в исходнике.
В своей надстройке заменил на эту версию(мало ли может нужно будет форматы сохранить).
В общем, встречайте 3-ю версию :D .

Автор - SLAVICK
Дата добавления - 12.08.2016 в 14:59
Мир MS Excel » Вопросы и решения » Готовые решения » Редизайнер таблиц (преобразование в плоскую таблицу) (Excel)
  • Страница 1 из 1
  • 1
Поиск:

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