Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2011, 15:01   #11
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

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

Код:
Option Explicit

Sub Razlozitj()
    Dim a(), i&, ii&, poz&, temp
    a = [a1].CurrentRegion.Value
    [a1].CurrentRegion.Clear
    poz = 1
    For i = 1 To UBound(a)
        temp = Split(a(i, 2), ",")
        ReDim b(1 To UBound(temp) + 1, 1 To 2)
        For ii = 1 To UBound(b)
            b(ii, 1) = a(i, 1)
            b(ii, 2) = Trim(temp(ii - 1))
        Next
        Cells(poz, 1).Resize(ii - 1, 2) = b
        poz = poz + ii - 1
    Next
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 09.11.2011 в 15:05.
Hugo121 вне форума Ответить с цитированием
Старый 09.11.2011, 22:58   #12
jhenya-d
 
Регистрация: 07.11.2011
Сообщений: 7
По умолчанию

спасибо, я пытался , просто файл выложил пустой,
больше работал с функциями, а не со скриптами
jhenya-d вне форума Ответить с цитированием
Старый 09.11.2011, 23:02   #13
jhenya-d
 
Регистрация: 07.11.2011
Сообщений: 7
По умолчанию

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

правда потом выстроить в одну табличку ручками, если их мало не проблема
jhenya-d вне форума Ответить с цитированием
Старый 10.11.2011, 09:30   #14
АННА-ЕАО
Форумчанин
 
Аватар для АННА-ЕАО
 
Регистрация: 24.08.2011
Сообщений: 193
По умолчанию

Всем здравствуйте .

Hugo121 Подскажите пожалуйста. Если в моём случае числовые данные распологаются не через запятую (как в примере у jhenya-d), а находятся в отдельной ячейки, что нужно изменить и/или добавить к Вашему коду, что бы результат был таким же.

Пример:
Вложения
Тип файла: rar Пример (АННА).rar (8.2 Кб, 10 просмотров)
АННА-ЕАО вне форума Ответить с цитированием
Старый 10.11.2011, 11:25   #15
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Анна, для Вас такой вариант:

Код:
Option Explicit

Sub Razlozitj()
    Dim a(), i&, ii&, poz&
    Application.ScreenUpdating = False
    
    a = [a1].CurrentRegion.Value
    '[a1].CurrentRegion.Clear 'если нужно, активируйте
    poz = 53 'тут вписываете номер первой строки выгрузки
    Cells(poz, 1) = a(1, 1)
    poz = poz + 1
    For i = 2 To UBound(a, 1)
        ReDim b(1 To UBound(a, 2) - 1, 1 To 3)
        For ii = 1 To UBound(b)
            b(ii, 1) = a(i, 1)
            b(ii, 2) = a(1, ii + 1)
            b(ii, 3) = a(i, ii + 1)
        Next
        Cells(poz, 1).Resize(ii - 1, 3) = b 'выгружаем
        Range(Cells(poz + ii - 2, 1), Cells(poz + ii - 2, 3)).Font.Bold = True 'делаем жирным
        poz = poz + ii - 1
    Next
    
    Application.ScreenUpdating = True

End Sub
Но выделение жирным не копируется - я его ставлю принудительно на последнюю строку выгруженного массива.

Если нужно рамку - то сперва обводим заголовок отдельно, потом запоминаем в переменную начальную строку выгрузки, после выгрузки от этой переменной до poz-1 тянем рамку на 3 столбца.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 10.11.2011 в 12:28.
Hugo121 вне форума Ответить с цитированием
Старый 10.11.2011, 11:58   #16
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Последняя секция "Итого" ИМХО не нужна.
Работает с выделенным диапазоном, результат на новом листе.
Код:
Sub Anna()
Dim x(), i&, j&, k&
x = Selection.Value
ReDim v(1 To (UBound(x) - 2) * (UBound(x, 2) - 1) + 2, 1 To 3)
v(1, 1) = x(1, 1)
k = 2
For i = 2 To UBound(x) - 1
    For j = 2 To UBound(x, 2)
        v(k, 1) = x(i, 1)
        v(k, 2) = x(1, j)
        v(k, 3) = x(i, j)
        k = k + 1
    Next
Next
v(UBound(v), 1) = x(i, 1)
v(UBound(v), 3) = x(i, UBound(x, 2))
Worksheets.Add.Cells(1, 1).Resize(UBound(v), UBound(v, 2)).Value = v
For i = UBound(x, 2) To k Step UBound(x, 2) - 1
    Rows(i).Font.Bold = True
Next
Rows(k).Font.Bold = True
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 10.11.2011, 12:09   #17
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Да, в варианте Анны заранее известен размер итогового массива, поэтому код Казанского быстрее и лучше
Я же переделывал существующий код, где это было заранее неизвестно... и это ошибка
Но работает...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 10.11.2011, 13:43   #18
АННА-ЕАО
Форумчанин
 
Аватар для АННА-ЕАО
 
Регистрация: 24.08.2011
Сообщений: 193
По умолчанию

Hugo121 , Казанский Большущее Вам спасибо! Оба кода работают
АННА-ЕАО вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Числовой ряд nagabara Фриланс 4 26.06.2011 19:59
Разбить дату на отдельные ячейки ДД ММ ГГ Александр25 Microsoft Office Excel 5 04.03.2010 19:07
Дан числовой ряд и некоторое число e... Xe0n Помощь студентам 1 22.12.2009 21:17
как создать в макросе числовой формат ячейки? Dima007 Microsoft Office Excel 2 30.05.2008 14:08
как разбить текстовую ячейку на отдельные ячейки? zetrix Microsoft Office Excel 0 31.10.2006 07:46