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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2013, 12:36   #1
SmalllSMK
 
Регистрация: 18.09.2013
Сообщений: 4
По умолчанию Копирование данных по условию

Доброе время суток.

Скажите, как скопировать данные из столбца A в столбец B, если в столбце N встречается число "-1"?

Макросы никогда не писал, кому не сложно помогите.
SmalllSMK вне форума Ответить с цитированием
Старый 18.09.2013, 13:01   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Перечитайте свой текст, и представьте в деталях весь описанный процесс. Получилось? У меня нет.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 19.09.2013, 06:10   #3
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

Может кривовато, но работает =)
Код:
Sub Search()

Dim y As Integer, y1 As Integer
y = Selection.Row
y1 = y + Selection.Rows.Count - 1

For ii = y To y1

If (ThisWorkbook.ActiveSheet.Cells(ii, 14) = -1) Then

ThisWorkbook.ActiveSheet.Cells(ii, 1) = ThisWorkbook.ActiveSheet.Cells(ii, 2)

End If

Next
End Sub
Суть такая, выделяешь нужный диапазон в столбце и жмакаешь на макрос. Если нужно чтобы полностью столбец выделялся- можно переделать. Уточните условия.
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 19.09.2013 в 08:06.
SaLoKiN вне форума Ответить с цитированием
Старый 19.09.2013, 07:30   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Это из разряда "начнем отвечать, а по ходу выясним, что, все-таки автору требуется".
1. Так, например, если ячейка столбца "N" содержит значение "2 -3 -1 -4", то в ней тоже встречается число "-1". Что делать?
2. Значение в столбце "N" получается в результате формулы (функции)? Вводится "вручную"?
3. Нужно просмотреть и обработать уже имеющуюся на листе информацию? Или требуется постоянный контроль за изменяющимися значениями?
4. Копировать нужно только значение? Или вместе с форматом, формулами и т. п.?

Попробую угадать и предложить пару вариантов без использования циклов:
Код:
Sub Вариант_1()
    Dim x As Range: Application.ScreenUpdating = False
    Set x = Range("B1:B" & Cells(Rows.Count, "N").End(xlUp).Row)
    x.FormulaR1C1 = "=IF(RC[12]=-1,RC[-1],"""")": x.Value = x.Value
End Sub
Код:
Sub Вариант_2()
    Dim x As Range: Application.ScreenUpdating = False
    Set x = [N:N].Find(-1, , xlValues, xlWhole)
    If x Is Nothing Then Exit Sub
    [A:A].Copy [B:B]: [N:N].ColumnDifferences(x).Offset(, -12).ClearContents
End Sub
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 19.09.2013 в 07:51.
SAS888 вне форума Ответить с цитированием
Старый 20.09.2013, 12:24   #5
SmalllSMK
 
Регистрация: 18.09.2013
Сообщений: 4
По умолчанию

@SAS888
1) Ячейка N либо содержит "-1", либо пустую ячейку.
2) Значение - это дамп из БД.
3) Нужно просмотреть и обработать уже имеющуюся на листе информацию.
4) Нужно даже не копиаровать, а вырезать из "A" и вставить в "B".

@Hugo121
Есть таблица, дамп БД.
Парсим эту таблицу на значение "-1" по колонке N.
Когда встречается это значение, то нужно ВЫРЕЗАТЬ значение из паралельной N ячейки но уже в столбце A и перенести значение в столбец B. (Это все происходит в строке, где нашлось значение "-1")
Продолжить поиск.
SmalllSMK вне форума Ответить с цитированием
Старый 20.09.2013, 12:47   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно так:
Код:
Sub Main()
    Application.ScreenUpdating = False
    [A:A].Copy [B:B]: [N:N].SpecialCells(xlCellTypeBlanks).Offset(, -12).ClearContents
    [N:N].SpecialCells(xlCellTypeConstants).Offset(, -13).ClearContents
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 20.09.2013, 12:53   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

5.Если в N25368 содержится "-1" , то что делать с A1?
Ну ладно, это прояснили через двое суток
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 20.09.2013, 12:58   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

И кстати - specialcells после 8-с-чем-то тысяч раздельных диапазонов глючит. Так что с дампом может не получиться...
Я бы не мудрил и делал циклом на массивах - чуть дольше, но зато надёжно.
А без примера файла я ленюсь
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 21.09.2013, 08:13   #9
RAN.
Форумчанин
 
Аватар для RAN.
 
Регистрация: 05.07.2011
Сообщений: 208
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
А без примера файла я ленюсь
Ну, наконец то!
RAN. вне форума Ответить с цитированием
Старый 21.09.2013, 11:51   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Я избегаю делать примеры за ТС - т.к. велик риск работать зря.
А по этой задаче - думаю риск более 50%
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование строк по условию MaxxVer Microsoft Office Excel 7 07.09.2012 16:06
копирование строк, соответствующих условию фильтра и копирование на новый лист xorek Microsoft Office Excel 0 09.07.2012 18:13
Копирование данных по условию (по названию месяца) mlm1 Microsoft Office Excel 4 14.03.2012 16:21
Копирование данных по условию. sirius24 Microsoft Office Excel 6 06.04.2010 09:17
Отбор данных по условию и копирование на новый лист Эдик12 Microsoft Office Excel 4 03.03.2010 23:16