Подскажите, пожалуйста, какой код дописать, чтобы решить эту задачу: В кратце: Есть два столбца (артикул и цена), и в какой-то из строк есть артикул, но нет цены, и наоборот (пример прикреплен). Надо, чтобы с помощью макроса, удалялись эти строки со смещение вверх (смог сделать, чтобы удалялась пустая ячейка, но это не то, надо чтобы целая строка, чтобы не сползли данные) Есть вот такой макрос, надо просто его дополнить с вот этой функцией описанной выше:
Подскажите, пожалуйста, какой код дописать, чтобы решить эту задачу: В кратце: Есть два столбца (артикул и цена), и в какой-то из строк есть артикул, но нет цены, и наоборот (пример прикреплен). Надо, чтобы с помощью макроса, удалялись эти строки со смещение вверх (смог сделать, чтобы удалялась пустая ячейка, но это не то, надо чтобы целая строка, чтобы не сползли данные) Есть вот такой макрос, надо просто его дополнить с вот этой функцией описанной выше:
Sub qq() Dim lr&, r As Range lr = Cells.Find("*", , , , xlByRows, xlPrevious).Row On Error Resume Next Set r = Range(Cells(2, 1), Cells(lr, 2)).SpecialCells(xlCellTypeBlanks) r.EntireRow.Delete On Error GoTo 0 lr = Cells.Find("*", , , , xlByRows, xlPrevious).Row Set r = Range(Cells(2, 3), Cells(lr, 3)) r.FormulaR1C1 = "=RC[-1]+RC[-1]*R1C4" r.Value = r.Value End Sub
Sub qq() Dim lr&, r As Range lr = Cells.Find("*", , , , xlByRows, xlPrevious).Row On Error Resume Next Set r = Range(Cells(2, 1), Cells(lr, 2)).SpecialCells(xlCellTypeBlanks) r.EntireRow.Delete On Error GoTo 0 lr = Cells.Find("*", , , , xlByRows, xlPrevious).Row Set r = Range(Cells(2, 3), Cells(lr, 3)) r.FormulaR1C1 = "=RC[-1]+RC[-1]*R1C4" r.Value = r.Value End Sub
Sub qq() Dim lr&, r As Range lr = Cells.Find("*", , , , xlByRows, xlPrevious).Row Range(Cells(2, 1), Cells(lr, 2)).Replace What:=0, Replacement:=Empty, LookAt:=xlWhole On Error Resume Next Set r = Range(Cells(2, 1), Cells(lr, 2)).SpecialCells(xlCellTypeBlanks) r.EntireRow.Delete On Error GoTo 0 lr = Cells.Find("*", , , , xlByRows, xlPrevious).Row Set r = Range(Cells(2, 3), Cells(lr, 3)) r.FormulaR1C1 = "=RC[-1]+RC[-1]*R1C4" r.Value = r.Value End Sub
[/vba]
[vba]
Код
Sub qq() Dim lr&, r As Range lr = Cells.Find("*", , , , xlByRows, xlPrevious).Row Range(Cells(2, 1), Cells(lr, 2)).Replace What:=0, Replacement:=Empty, LookAt:=xlWhole On Error Resume Next Set r = Range(Cells(2, 1), Cells(lr, 2)).SpecialCells(xlCellTypeBlanks) r.EntireRow.Delete On Error GoTo 0 lr = Cells.Find("*", , , , xlByRows, xlPrevious).Row Set r = Range(Cells(2, 3), Cells(lr, 3)) r.FormulaR1C1 = "=RC[-1]+RC[-1]*R1C4" r.Value = r.Value End Sub
Sub Макрос2() Dim r As Long, rng As Range arr = Range("A2:B" & Cells(Rows.Count, 1).End(xlUp).Row) For r = 1 To UBound(arr) If arr(r, 1) = "" Or arr(r, 2) = "" Or arr(r, 1) = 0 Or arr(r, 2) = 0 Then If rng Is Nothing Then Set rng = Rows(r + 1) Else Set rng = Union(rng, Rows(r + 1)) End If End If Next r If Not rng Is Nothing Then rng.Delete Range("C2:C" & Cells(Rows.Count, 1).End(xlUp).Row).FormulaR1C1 = "=RC[-1]+RC[-1]*R1C4" End Sub
[/vba]
можно ещё так [vba]
Код
Sub Макрос2() Dim r As Long, rng As Range arr = Range("A2:B" & Cells(Rows.Count, 1).End(xlUp).Row) For r = 1 To UBound(arr) If arr(r, 1) = "" Or arr(r, 2) = "" Or arr(r, 1) = 0 Or arr(r, 2) = 0 Then If rng Is Nothing Then Set rng = Rows(r + 1) Else Set rng = Union(rng, Rows(r + 1)) End If End If Next r If Not rng Is Nothing Then rng.Delete Range("C2:C" & Cells(Rows.Count, 1).End(xlUp).Row).FormulaR1C1 = "=RC[-1]+RC[-1]*R1C4" End Sub