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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2012, 12:18   #1
cryingmary
Новичок
Джуниор
 
Регистрация: 16.08.2012
Сообщений: 6
По умолчанию Что не так в макросе

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

Sub Redesigner()
Dim InVal As Variant
Dim OutVal() As Variant
Dim j, k, i As Long
Dim NewSheet
i = 1
InVal = Selection.Formula
ReDim OutVal(1 To Selection.Count, 1 To 3)
For j = 2 To UBound(InVal, 1)
For k = 2 To UBound(InVal, 2)
If InVal(j, k) <> "" Then
OutVal(i, 1) = InVal(j, 1)
OutVal(i, 2) = InVal(1, k)
OutVal(i, 3) = InVal(j, k)
i = i + 1
End If
Next k
Next j
Set NewSheet = Worksheets.Add
NewSheet.Range("A1").Resize(UBound( OutVal, 1), 3).Value = OutVal
End Sub

Помогите дописать макрос, что бы он транформировал весь выделенный диапазон и вставлял значения, без формул.
Спасибо!

Последний раз редактировалось cryingmary; 16.08.2012 в 12:26.
cryingmary вне форума Ответить с цитированием
Старый 16.08.2012, 17:50   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Приложите XLS с примером: что есть, что надо получить.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 16.08.2012, 18:07   #3
cryingmary
Новичок
Джуниор
 
Регистрация: 16.08.2012
Сообщений: 6
По умолчанию

http://ompldr.org/vZjRqYQ/%D0%BF%D1%...%B5%D1%80.xlsx


Т.е. нужно что бы из общей таблицы, данные трансформировались в "список" только там где будут стоять 1 напротив адресса. Там где пусто, строки не подтягивались. Макрос это делает, только с одной колонкой, большой диапазон данных он не отображает.

Последний раз редактировалось cryingmary; 16.08.2012 в 18:11.
cryingmary вне форума Ответить с цитированием
Старый 16.08.2012, 19:24   #4
Михаил С.
Пользователь
 
Регистрация: 02.06.2010
Сообщений: 57
По умолчанию

Столбцов с адресами всегда столько (5), или может меняться?
Михаил С. вне форума Ответить с цитированием
Старый 16.08.2012, 20:53   #5
cryingmary
Новичок
Джуниор
 
Регистрация: 16.08.2012
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Михаил С. Посмотреть сообщение
Столбцов с адресами всегда столько (5), или может меняться?
на данный момент их 519, но может быть и больше.
cryingmary вне форума Ответить с цитированием
Старый 16.08.2012, 21:34   #6
Михаил С.
Пользователь
 
Регистрация: 02.06.2010
Сообщений: 57
По умолчанию

Еще такой вопрос - "1" - это просто знак, что строка используется, или число - сколько раз строку нужно повторить?
И шапка основной таблицы постоянна, я правильно понял?
Михаил С. вне форума Ответить с цитированием
Старый 16.08.2012, 22:57   #7
Михаил С.
Пользователь
 
Регистрация: 02.06.2010
Сообщений: 57
По умолчанию

Проверяйте.
Вложения
Тип файла: rar cryingmary.rar (19.9 Кб, 20 просмотров)
Михаил С. вне форума Ответить с цитированием
Старый 17.08.2012, 10:13   #8
cryingmary
Новичок
Джуниор
 
Регистрация: 16.08.2012
Сообщений: 6
По умолчанию

что-то совсем не то, он генерит список под таблицей, а не на другом листе и данные совсем не те вставляет. Шапка не меняется.
cryingmary вне форума Ответить с цитированием
Старый 17.08.2012, 10:32   #9
Михаил С.
Пользователь
 
Регистрация: 02.06.2010
Сообщений: 57
По умолчанию

Да, чуть ошибся. В конце кода пропустил точку.
вот здесь
Код:
With Worksheets("как должно быть")
    .Cells(1, 1).Resize(k - 1, 20) = OutVal
End With
перед Cells поставьте точку

зы.
А то он "генерит" не под таблицей, а вместо таблицы, если запускать с листа "как есть".

Последний раз редактировалось Михаил С.; 17.08.2012 в 10:46.
Михаил С. вне форума Ответить с цитированием
Старый 17.08.2012, 11:33   #10
cryingmary
Новичок
Джуниор
 
Регистрация: 16.08.2012
Сообщений: 6
По умолчанию

да теперь гуд, есть 1 момент. Выдает ошибку Out of range. Реальная, рабочая область таблицы с В2:V2 а дальше идут в шапке адресса W:TU

Вниз таблица добавляется постоянно.
cryingmary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
что не так? sashqaw0w Помощь студентам 10 25.12.2011 22:31
Как в этом макросе указать , что-бы было название каждого листа и книги ,при сборе всех листов на один ? Александр 33 Microsoft Office Excel 9 06.01.2011 18:40
Что-то не так в программе...не пойму что Karina_Vamp Помощь студентам 5 24.12.2010 21:06
Что неверно в макросе? Иванов_ДМ Microsoft Office Excel 11 22.05.2009 21:57