Добрый день! Есть некая таблица. В колонке "A" встречается цифра "1". В колонке "B" введены формулы - какое-то значение (переменное) плюс значение соседней ячейки "C". Нужны 2 макроса на выполнение следующего условия: 1. Если в колонке "A" встречается цифра 1, необходимо по данной строке полученную сумму в колонке "B" сохранить как значение, а данные в колонке "C" удалить. Если в колонке "A" ничего нет, соответственно по данной строке выполнять ничего не надо. 2. При том-же самом условии, после выполнения 1-го макроса, необходимо ввести формулу: к полученному значению в колонке "B" прибавить соседнюю ячейку "C"
Макросы нужны по отдельности, при необходимости сам объеденю. Буду очень благодарен за помощь.
Добрый день! Есть некая таблица. В колонке "A" встречается цифра "1". В колонке "B" введены формулы - какое-то значение (переменное) плюс значение соседней ячейки "C". Нужны 2 макроса на выполнение следующего условия: 1. Если в колонке "A" встречается цифра 1, необходимо по данной строке полученную сумму в колонке "B" сохранить как значение, а данные в колонке "C" удалить. Если в колонке "A" ничего нет, соответственно по данной строке выполнять ничего не надо. 2. При том-же самом условии, после выполнения 1-го макроса, необходимо ввести формулу: к полученному значению в колонке "B" прибавить соседнюю ячейку "C"
Макросы нужны по отдельности, при необходимости сам объеденю. Буду очень благодарен за помощь._Shurik_
Sub Скругленныйпрямоугольник2_Щелчок() Set r = Range(Cells(1, 2), Cells(1, 2).End(xlDown)) For Each cl In r.Cells If cl.Offset(0, -1) = 1 Then cl.Value = cl.Value cl.Formula = "=" & cl.Value & "+" & cl.Offset(0, 1).Address cl.Offset(0, 1).Clearcontents End If Next End Sub
[/vba]
Добрый день. два в одном сразу [vba]
Код
Sub Скругленныйпрямоугольник2_Щелчок() Set r = Range(Cells(1, 2), Cells(1, 2).End(xlDown)) For Each cl In r.Cells If cl.Offset(0, -1) = 1 Then cl.Value = cl.Value cl.Formula = "=" & cl.Value & "+" & cl.Offset(0, 1).Address cl.Offset(0, 1).Clearcontents End If Next End Sub
Без цикла по каждой ячейке, все сразу сначала забираем, потом вставляем [vba]
Код
Sub tt1() r0_ = 1 r1_ = Range("B" & Rows.Count).End(3).Row n_ = r1_ - r0_ + 1 arf = Range("A" & r0_).Resize(n_, 3).Formula arz = Range("A" & r0_).Resize(n_, 3) For i = 1 To n_ If arz(i, 1) = 1 Then arf(i, 2) = arz(i, 2) arf(i, 3) = "" End If Next i Range("A" & r0_).Resize(n_, 3).Formula = arf End Sub
Sub tt2() r0_ = 1 r1_ = Range("B" & Rows.Count).End(3).Row n_ = r1_ - r0_ + 1 ar = Range("A" & r0_).Resize(n_, 3) For i = 1 To n_ If ar(i, 1) = 1 Then ar(i, 2) = "=" & ar(i, 2) & "+RC[1]" End If Next i Range("A" & r0_).Resize(n_, 3).Formula = ar End Sub
[/vba]
Без цикла по каждой ячейке, все сразу сначала забираем, потом вставляем [vba]
Код
Sub tt1() r0_ = 1 r1_ = Range("B" & Rows.Count).End(3).Row n_ = r1_ - r0_ + 1 arf = Range("A" & r0_).Resize(n_, 3).Formula arz = Range("A" & r0_).Resize(n_, 3) For i = 1 To n_ If arz(i, 1) = 1 Then arf(i, 2) = arz(i, 2) arf(i, 3) = "" End If Next i Range("A" & r0_).Resize(n_, 3).Formula = arf End Sub
Sub tt2() r0_ = 1 r1_ = Range("B" & Rows.Count).End(3).Row n_ = r1_ - r0_ + 1 ar = Range("A" & r0_).Resize(n_, 3) For i = 1 To n_ If ar(i, 1) = 1 Then ar(i, 2) = "=" & ar(i, 2) & "+RC[1]" End If Next i Range("A" & r0_).Resize(n_, 3).Formula = ar End Sub
Sboy, не выполняется условие для колонки "C" - удаляются все данные, надо только по тем строчкам, где находятся единицы. Boroda, Ваш вариант мне больше нравится, но 2-й макрос также не учитывает условие - там, где отсутствует единица, данные сохраняются как значения, а надо их не затрагивать. 1-й макрос - то, что нужно.
Sboy, не выполняется условие для колонки "C" - удаляются все данные, надо только по тем строчкам, где находятся единицы. Boroda, Ваш вариант мне больше нравится, но 2-й макрос также не учитывает условие - там, где отсутствует единица, данные сохраняются как значения, а надо их не затрагивать. 1-й макрос - то, что нужно._Shurik_