|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
24.03.2011, 21:28 | #1 |
Пользователь
Регистрация: 16.02.2011
Сообщений: 36
|
копирование и вставка данных в заданном порядке
Sub ProrisovkaFO()
Sheets.Add j = ActiveSheet.Name Worksheets(j).Name = "TEST" For i = 9 To 80 If Worksheets("ОТЧЁТ").Cells(i, 2) <> 0 Or Worksheets("ОТЧЁТ").Cells(i, 7) <> 0 _ Or Worksheets("ОТЧЁТ").Cells(i, 10) <> 0 Or Worksheets("ОТЧЁТ").Cells(i, 13) <> 0 Then _ Worksheets("ОТЧЁТ").Cells(i, 1).Copy Worksheets("TEST").Cells(i, 1) Next i End Sub Есть такой макрос... надо сделать так, чтобы в ЛИСТ ТЕСТ данные вставлялись по порядку... придать цикличность вставки данных в лист ТЕСТ за место i должна быть друггая переменная как я понимаю.. но как это сделать |
24.03.2011, 21:53 | #2 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Два варианта - перед копированием увеличиваете переменную x, и копируете в
Worksheets("TEST").Cells(x, 1) Или - каждый раз перед копированием определяйте iLastRow = Worksheets("TEST").Cells(Rows.Count , 1).End(xlUp).Row и копируете в Worksheets("TEST").Cells(iLastRow+1 , 1) Ещё - если в ячейках, где <>0 подразумеваются цифры, то быстрее будет проанализировать на >0 их сумму. Код:
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 24.03.2011 в 22:14. |
24.03.2011, 22:03 | #3 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
может так:
r = 1 For i = 9 To 80 If Worksheets("ОТЧЁТ").Cells(i, 2) <> 0 Or Worksheets("ОТЧЁТ").Cells(i, 7) <> 0 _ Or Worksheets("ОТЧЁТ").Cells(i, 10) <> 0 Or Worksheets("ОТЧЁТ").Cells(i, 13) <> 0 Then Worksheets("ОТЧЁТ").Cells(i, 1).Copy Worksheets("TEST").Cells(r, 1) r = r+1 end if Next i
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
Последний раз редактировалось IgorGO; 24.03.2011 в 22:05. |
24.03.2011, 22:20 | #4 |
Пользователь
Регистрация: 16.02.2011
Сообщений: 36
|
Спасибо, всем...
вариант IgorGo будет оптимальнее... и проще... а я за простые решения =) |
24.03.2011, 22:25 | #5 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
И чем же он проще? 1:1 как мой по сути, только букв больше
Хотя если цифры могут быть отрицательные, или это не цифры - тогда суммировать нельзя. И кстати вместо Application.Sum() можно просто плюсов понаставлять...
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 24.03.2011 в 22:27. |
24.03.2011, 22:40 | #6 | |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Цитата:
Hugo121, эти ифы If Worksheets("ОТЧЁТ").Cells(i, 2) <> 0 Or Worksheets("ОТЧЁТ").Cells(i, 7) <> 0 _ Or Worksheets("ОТЧЁТ").Cells(i, 10) <> 0 Or Worksheets("ОТЧЁТ").Cells(i, 13) <> 0 Then Worksheets("ОТЧЁТ").Cells(i, 1).Copy Worksheets("TEST").Cells(r, 1) и If Application.Sum(.Cells(i, 2), .Cells(i, 7), .Cells(i, 10), .Cells(i, 13)) > 0 Then проверяют разные условия. и потом - я лишь чуть-чуть поправил исходный код автора, а ты его безжалостно покромсал... какой бы вариант ты выбрал будучи на месте Dog_DinGo? ответ довольно очевиден))) это психология...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
|
24.03.2011, 22:54 | #7 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Ну да - цифры/числа - обычное дело... согласен, неверно выразился.
А по условиям (если положительные числа) - суть одна проверяется: если хоть одно число <>0 (т.е. >0), то копируем. Но если нужно копировать и тогда, когда вместо 0 есть запись "Злостный должник" - тогда нужно каждую на <>0 проверять... Ну не нравится мне нагромождение OR... Сам стараюсь избегать.
webmoney: E265281470651 Z422237915069 R418926282008
|
24.03.2011, 23:12 | #8 | |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Цитата:
Cells(i, 2) <> 0 Or Cells(i, 7) <> 0 Or Cells(i, 10) <> 0 Or Cells(i, 13) <> 0 и Sum(.Cells(i, 2), .Cells(i, 7), .Cells(i, 10), .Cells(i, 13)) > 0 дадут разные разультаты при Cells(i, 2) = -1 Cells(i, 7) = 0 Cells(i, 10) = 0 Cells(i, 13) = 0
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
|
24.03.2011, 23:19 | #9 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
из каких исходных - предположил исходя из практики
В 90% анализируют положительные числа. И вполне начинающий может положительные проверять на <>0 Я только предложил, как вариант попрозрачней, с оговоркой (чуть правда запоздалой...)
webmoney: E265281470651 Z422237915069 R418926282008
|
24.03.2011, 23:47 | #10 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Dog_DinGo уже уснул, наверное... а мы все еще копья ломаем)))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Переход по нажатию ENTER в заданном порядке | Dog_DinGo | Microsoft Office Excel | 9 | 28.02.2011 12:18 |
Поиск значения в заданном диапазоне данных | Варвар | Microsoft Office Excel | 2 | 21.01.2011 11:23 |
Копирование и вставка данных как значение. | Shkoda | Microsoft Office Excel | 1 | 10.07.2010 13:51 |
Копирование и вставка текста | Lemo | Общие вопросы Delphi | 1 | 01.07.2010 21:13 |
Копирование и вставка значений | tae1980 | Microsoft Office Excel | 7 | 29.05.2009 09:15 |