Страницы: 1
RSS
как сделать цикл по строкам с изменениями и добавлениями строк при определенном условии
 
Нужна программа которая циклически проверяет строки при наличии в одной ячейке строки определенного условия, копирует эту строку, вносит в нее изменения и в новую тоже.  
 
проще говоря есть список с числами(например в столбцах 45, 70, 24...). где числа больше определенного числа (например 30) он, дублирует строки, а число распределяет на несколько строк( например 30, 15, 30, 30, 10, 24...) То есть 45 разбил на 30 и 15, 70 на 30, 30 и 10, 24 оставил..  
Извините что так разжевываю, надеюсь что понятно ..  
 
единственно что придумал: делать для каждой строки -  If Range("D5") > 1 Then  
  Range("A5:F5").Select  
   Selection.Copy  
   Range("A6:F6").Select  
   Selection.Insert Shift:=xlDown  
   Range("C6").Select  
   ActiveCell.FormulaR1C1 = Range("C5") - Range("E6")  
   Range("C5").Select  
   ActiveCell.FormulaR1C1 = Range("G1")  
   End If  
         
   If Range("D6") > 1 Then  
  Range("A6:F6").Select  
   Selection.Copy  
   Range("A7:F7").Select  
   Selection.Insert Shift:=xlDown  
   Range("C7").Select  
   ActiveCell.FormulaR1C1 = Range("C6") - Range("E7")  
   Range("C6").Select  
   ActiveCell.FormulaR1C1 = Range("G1")  
   End If  
.....  
 
но это глупо
 
For each x in Columns(1).Cells ' Цикл по ячейкам 1-го столбца  
next
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
а как этот "х" использовать в Range? саму логику подскажите...пожалуйста)
 
x в данном случае - переменная    
 
For each x in Columns(1).Cells 'перевод: для каждой ячейки, входящей в множество ячеек первого столбца.  
 
делаем то-то и то-то  
 
next ' следующая ячейка
 
Я бы сказал, что x в данном случае - ячейка.  
У неё есть адрес, формат, значение - всё как у ячейки :)  
Так с ней и поступайте - x.copy или x.EntireRow.Copy и т.д.
 
ну а вот то-то и то-то как делать для переменной?? Range(Cx)?  
 
модераторы! я перепутал не ту кнопку нажал, тему создал простите, удалите!
 
Sub tt()  
Dim x As Range  
For Each x In [a1:a10].Cells
x.Value = "test"  
x.Font.Bold = True  
x.Interior.Color = vbRed  
x.Font.ColorIndex = 6  
x.Font.Size = 20  
Next  
End Sub
 
x - ссылка на объект. В данном случае на ячейку. Цвет, шрифт, значение, все чем обладает объект, на кот. ссылается переменная.  
 
Sub io()  
Dim x as Object  
For each x in Columns(4).cells  
If x.Value > 1 Then  
msgbox 1  
end if  
Next  
End sub
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
мне кажется или два последние ответа не в тему?
 
Чёж не в тему?  
"циклически проверяет строки ... вносит в нее изменения"  
Диапазон можно поменять, оффсетом нарастить вбок например...  
Т.е. бежим по одному столбцу, а сдвигом проверяем некоторые ячейки рядом.  
Копирование ещё выше было, изменение выше, изменение в новой - по аналогии...
 
темщики, млин. Комментарии - (почти) цитаты Сарказм  
 
Sub io()  
Dim v, x As Object  
For Each v In Array(24, 45, 70) 'список с числами в столбцах 45, 70, 24...)  
   For Each x In UsedRange.Columns(v).Cells ' циклически проверяет строки  
       MsgBox x.Address  
   Next  
Next  
End Sub
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
И гдеж Сарказм делся? :)  
Я уже даже и алгоритм примерно прикинул... а примера файла всё нет.
 
Sub tt  
просто заменяет первые сколькото строк на то-то  
 
Sub io 1  
просто непонятно какоето действие при условии...  
Sub io 2 не работает  
 
как связать объект над которым будет совершаться действие с условием??
 
Связать через If ... Then  
Какое условие? Какие объекты? Пример где?
 
ячейки желтым я заполняю. столбцы В и С типа дублируют друг друга. хочу макрос который бы сделал 10 строк(по количеству коробок) и в с5, с6, с7...с14 было бы по 500. смотрите мое первое сообщение и тот макрос. но надо сделать цикл ибо городов может быть сотни
 
Мне не понятно...  
5000х10=50000, а у Вас вокруг 500 да 5000...  
Может быть кто понял и сейчас напишет код, но я нет...  
 
Если абстрагироваться от формул и только смотреть на D и вставлять столько строк, сколько там написано, с числами в С Cn/Dn, то простым циклом снизу вверх от последней строки до D5 это несложно сделать.  
 
Можно ещё один пример написать - что есть, и как нужно, а то по одной Самаре непонятно.
 
\
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
вот плюс еще один город...посмотрите что делает макрос. это мне и нужно...только если строк больше нескольких сот, то макрос будет оооочень большим.
 
форумчане! неужели чем точнее вопрос, тем сложнее ответить?)
 
Может, как-то так? Рез-т пишем на Лист2, номинальное кол-во берем из G1.
 
Спасибо тебе nilem! то что нужно!
 
Ну вот, а говорили - строки вставить, да ещё с формулами...  
 
Сильно не вникал, но мне кажется, что тут тонко:  
UBound(x) * 50  
Надо бы это 50 с листа высчитать. Только я так сразу не понял, сколько именно нужно получить, из чего высчитывать :)
 
ну да! не совсем то как видел я, но результат тот!
 
здравствуйте!  
срочно нужна помощь, прикрепляю книгу с 2-мя листами.  
Если в столбце F кол-во n>1, то продублировать эту строку ниже n-1 раз. И в столбце F поменять значение на 1, а суммы в столбцах T,W поделить на n.  
И если возможно протянуть номера в столбце А как в примере.  
 
В прошлый раз делала эту работу целый день, очень много строк которые надо дублировать, помогите пожалуйста.
Zhuldyz
 
в принципе в этой теме создан подобный макрос, но адаптировать под свой файл я его не смогу  
 
отзовитесь кто нибудь пжл
Zhuldyz
Страницы: 1
Читают тему
Наверх