Доброе утро. Таблица содержит ненужные пустые строки, которые нужно удалить. Строки эти начинаются с (A20) всегда. Заканчиваются неизвестно какой строкой. Вторая ячейка строк подлежащих удалению содержит "..." или пуста. Она имеет границу ( в отличие от ячеек из "бороды" (A37-A45 - их удалять нельзя)). Нужен макрос удаляющий эти всегда разные строки (27, 28, 30, 33)
Доброе утро. Таблица содержит ненужные пустые строки, которые нужно удалить. Строки эти начинаются с (A20) всегда. Заканчиваются неизвестно какой строкой. Вторая ячейка строк подлежащих удалению содержит "..." или пуста. Она имеет границу ( в отличие от ячеек из "бороды" (A37-A45 - их удалять нельзя)). Нужен макрос удаляющий эти всегда разные строки (27, 28, 30, 33)Yar4i4
For r = 20 To Cells.Rows.Count If Cells(r, 1).Borders(xlEdgeRight).LineStyle = xlNone Then Exit For If Cells(r, 2) = "" Or Cells(r, 2) = "..." Or Cells(r, 2) = "…" Then Rows(r).Delete: r = r - 1 Next r
[/vba]
Вариант - [vba]
Код
For r = 20 To Cells.Rows.Count If Cells(r, 1).Borders(xlEdgeRight).LineStyle = xlNone Then Exit For If Cells(r, 2) = "" Or Cells(r, 2) = "..." Or Cells(r, 2) = "…" Then Rows(r).Delete: r = r - 1 Next r
Sub Мяу() Dim lr&, i& Application.ScreenUpdating = False With ActiveSheet lr = .Columns(1).Find("Исполнитель", , , xlPart).Row - 3 For i = lr To 20 Step -1 If Len(.Cells(i, 2)) = 0 Or Left$(.Cells(i, 2).Value, 1) Like "[. " & Chr(133) & "]" Then .Rows(i).Delete Next End With End Sub
[/vba]
[vba]
Код
Sub Мяу() Dim lr&, i& Application.ScreenUpdating = False With ActiveSheet lr = .Columns(1).Find("Исполнитель", , , xlPart).Row - 3 For i = lr To 20 Step -1 If Len(.Cells(i, 2)) = 0 Or Left$(.Cells(i, 2).Value, 1) Like "[. " & Chr(133) & "]" Then .Rows(i).Delete Next End With End Sub
Интересно, кто ставит в одном месте три точки в другом троеточие - Chr(133)? Так можно ставить что попало и как попало - пробел три точки, точка пробел точка и т. д. Порядок какой то нужен.
Интересно, кто ставит в одном месте три точки в другом троеточие - Chr(133)? Так можно ставить что попало и как попало - пробел три точки, точка пробел точка и т. д. Порядок какой то нужен.Wasilich
Доброго постпраздничного дня Вам! Пользуюсь Вашей версией макроса. Сегодня увидел, что макрос не сработал, т.к. ко мне данные поступили в неверном виде. В ячейке, определяющей удаление всей строки троеточие (или три точки) располагались не в начале, а в конце. Я скопировал содержимое ячейки: "М/к труб стальных бесшовных горячедеформированных..." Как можно учесть эти точки, если они встречаться будут в ячейке? (все первоначальные условия такие же , только точки (троеточие - не понял пока что это) не стационарны в ячейке. Спасибо.
Доброго постпраздничного дня Вам! Пользуюсь Вашей версией макроса. Сегодня увидел, что макрос не сработал, т.к. ко мне данные поступили в неверном виде. В ячейке, определяющей удаление всей строки троеточие (или три точки) располагались не в начале, а в конце. Я скопировал содержимое ячейки: "М/к труб стальных бесшовных горячедеформированных..." Как можно учесть эти точки, если они встречаться будут в ячейке? (все первоначальные условия такие же , только точки (троеточие - не понял пока что это) не стационарны в ячейке. Спасибо.
День добрый дамы и господа. Пользуюсь данным кодом, всё замечательно, но... В результате объединения сдвоенных строк происходит сдвиг вниз полупустой строки. И данная полупустая строка всегде лежит под массивом заполненных ячеек A1:M... (в нашем случае M44). И у этой полупустой строки всегда заполнены столбец M, I и L (в нашем примере это 45 строка). Думал удалить её через: [vba]
Код
s = Range("A" & Rows.Count).End(xlUp).Row Cells(s + 1, 1) =
[/vba] Но вот куда вставить .Delete?
День добрый дамы и господа. Пользуюсь данным кодом, всё замечательно, но... В результате объединения сдвоенных строк происходит сдвиг вниз полупустой строки. И данная полупустая строка всегде лежит под массивом заполненных ячеек A1:M... (в нашем случае M44). И у этой полупустой строки всегда заполнены столбец M, I и L (в нашем примере это 45 строка). Думал удалить её через: [vba]
Код
s = Range("A" & Rows.Count).End(xlUp).Row Cells(s + 1, 1) =
да я знаю. я неверно написал... не в результате "объединения", а в результате "разъединения". Я разъединяю уже объединённое ранее каким-то хулиганом и вот!) Причем разъединяю сразу как только скопирую видимые ячейки на новый лист. Далее запускаю макрос удаляющий все строки, если ячейка B пуста, начиная с конца, но остается 45 строка. Так как в 45ой строке ячейка В пуста.
да я знаю. я неверно написал... не в результате "объединения", а в результате "разъединения". Я разъединяю уже объединённое ранее каким-то хулиганом и вот!) Причем разъединяю сразу как только скопирую видимые ячейки на новый лист. Далее запускаю макрос удаляющий все строки, если ячейка B пуста, начиная с конца, но остается 45 строка. Так как в 45ой строке ячейка В пуста.Yar4i
а куда -1 вписать? (или +1) По столбцу М думал, но этот столбец не стабилен. В первых же двух столбцах идет нумерация (нет номера - строку не берем, а коль номер есть - то милости просим))
а куда -1 вписать? (или +1) По столбцу М думал, но этот столбец не стабилен. В первых же двух столбцах идет нумерация (нет номера - строку не берем, а коль номер есть - то милости просим))Yar4i
В одиннадцатом сообщении файл с новой кучкой данных и через FIND не выйдет, т.к. мы не знаем где заканчиваются данные внизу. В данном случае они заканчиваются 45ой строкой и её-то и нужно удалить, т.к. у неё пустые ячейки A45, B45, C45, D45, E45 и т.д., а вот G45, I45 и L45 содержат нули (они всегда содержат цифры, но какая это строка не известно, иногда может быть и вторая -
т.е. начиная с последней неизвестной строки и заканчивая второй строкой нужно найти строки с пустой ячейкой A и удалить её. [vba]
Код
PS = Range("A" & Rows.Count).End(xlUp).Row For i = PS To 2 Step -1 If Cells(i, 1) = "" Then Rows(i).Delete End If Next
[/vba] Этот код удаляет все строки между последней первой/верхней и самой нижней 44ой (по столбцу "A") и не удаляет 45ую строку.
В одиннадцатом сообщении файл с новой кучкой данных и через FIND не выйдет, т.к. мы не знаем где заканчиваются данные внизу. В данном случае они заканчиваются 45ой строкой и её-то и нужно удалить, т.к. у неё пустые ячейки A45, B45, C45, D45, E45 и т.д., а вот G45, I45 и L45 содержат нули (они всегда содержат цифры, но какая это строка не известно, иногда может быть и вторая -
т.е. начиная с последней неизвестной строки и заканчивая второй строкой нужно найти строки с пустой ячейкой A и удалить её. [vba]
Код
PS = Range("A" & Rows.Count).End(xlUp).Row For i = PS To 2 Step -1 If Cells(i, 1) = "" Then Rows(i).Delete End If Next
[/vba] Этот код удаляет все строки между последней первой/верхней и самой нижней 44ой (по столбцу "A") и не удаляет 45ую строку.Yar4i
Сообщение отредактировал Yar4i - Среда, 25.01.2017, 17:31