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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2010, 12:31   #1
longfello
 
Регистрация: 31.10.2010
Сообщений: 6
По умолчанию Перестановка ячеек таблицы

Имеется большая таблица с заголовком, в первой колонке ее содержатся названия строчек, в других идут записи. Количество заполненных ячеек в каждой строке разное, соответственно, последняя ячейка имеет переменную координату столбца.
Нужно извлекать информацию из последней ячейки каждой строки, т.е. фактически нужно удалять в каждой строке содержимое ячеек со второй по предпоследнюю, а последнюю переносить во второй столбец
Просьба подсказать макросом, как это реализовать
longfello вне форума Ответить с цитированием
Старый 16.11.2010, 13:04   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Попробуйте так,проверить не могу.пишу в блокноте

Код:
Sub Test
For i = 1 To Range("b65000").End(xlUp).Row
Номер_Столбца=Range("iv" & i).End(xlToLeft).Column
Cells(i,2)=Range("iv" & i).End(xlToLeft).Value 
 Range(Cells(i,3),Cells(i, Номер_Столбца)).ClearContents             
Next
End Sub
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 16.11.2010 в 15:58.
doober вне форума Ответить с цитированием
Старый 16.11.2010, 13:06   #3
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Заготовочка
Код:
Sub tt()
Dim a()
a = [a1:c1].Value
tmp = Split(StrReverse(Application.Trim(Join(Application.Transpose(Application.Transpose(a))))))(0)
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 16.11.2010, 13:16   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Продолжил, диапазон нужно указать в коде:
Код:
Sub tt()
Dim a()
For Each cc In Range("B1:B16")
a = Range("B" & cc.Row & ":E" & cc.Row).Value
Range("B" & cc.Row & ":E" & cc.Row).Clear
cc.Value = Split(StrReverse(Application.Trim(Join(Application.Transpose(Application.Transpose(a))))))(0)
Next
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 16.11.2010, 13:22   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

А если столбцов в одной строке 17.а в следующей 46
Что делать?
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 16.11.2010, 13:44   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Если вопрос ко мне, то можно вместо E писать AT.
А если там сбоку справа другие нужные данные есть?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 16.11.2010, 14:50   #7
longfello
 
Регистрация: 31.10.2010
Сообщений: 6
По умолчанию

Спасибо, но желательно универсальный вариант с автоопределением области таблицы.
Справа данных нет - это готовая выгрузка из сторонней БД
longfello вне форума Ответить с цитированием
Старый 16.11.2010, 15:09   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Автоопределение?

lastcol = [a1].CurrentRegion.Rows.Count
For Each cc In Range("B1:B16")
a = Range("B" & cc.Row, Cells(cc.Row, lastcol)).Value
Range("B" & cc.Row, Cells(cc.Row, lastcol)).Clear
cc.Value = Split(StrReverse(Application.Trim(J oin(Application.Transpose(Applicati on.Transpose(a))))))(0)
Next

Вниз тоже нужно автоопределить?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 16.11.2010, 15:26   #9
longfello
 
Регистрация: 31.10.2010
Сообщений: 6
По умолчанию

да, вправо и вниз
longfello вне форума Ответить с цитированием
Старый 16.11.2010, 15:54   #10
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от longfello Посмотреть сообщение
Спасибо, но желательно универсальный вариант с автоопределением области таблицы.
Справа данных нет - это готовая выгрузка из сторонней БД
А вы мой не проверили,он все сам определяет
Код:
Sub Test
For i = 1 To Range("b65000").End(xlUp).Row
Номер_Столбца=Range("iv" & i).End(xlToLeft).Column
Cells(i,2)=Range("iv" & i).End(xlToLeft).Value 
 Range(Cells(i,3),Cells(i, Номер_Столбца)).ClearContents             
Next
End Sub
Была пропущена одна скобка
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 16.11.2010 в 15:59.
doober вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка ячеек таблицы на корректность Rider-12 Microsoft Office Excel 14 22.06.2010 09:57
поиск и заполнение ячеек таблицы Окоча Юра Microsoft Office Excel 2 16.01.2010 19:00
Как увидеть формулы всех ячеек таблицы одновременно? kolbasa Microsoft Office Excel 3 14.11.2009 15:27
Таблицы в WORD. Перебор ячеек или поиск? sergeos Microsoft Office Word 7 09.06.2009 17:57