Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
28.03.2024, 11:24:23

Войти
На форуме добавлена возможность подписки на RSS-ленты любого раздела форума. Подписаться можно, нажав на иконку RSS , расположенную левее наименования раздела.
33 233 Сообщений в 5 454 Тем от 6 750 Пользователей
Последний пользователь: Alex1210
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Добавление и удаление строк по нескольким условиям
Страниц: [1]   Вниз
Печать
Автор Тема: Добавление и удаление строк по нескольким условиям  (Прочитано 2379 раз)
0 Пользователей и 1 Гость смотрят эту тему.
firestarter
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 26


Просмотр профиля E-mail
« : 25.11.2020, 15:33:22 »

Здравствуйте, уважаемые специалисты!
Всем-всем-всем добра и хорошего настроения!

Хочу Вас побеспокоить еще одной задачкой, поскольку не могу найти полноценного решения своего вопроса, а половинчатые - не подходят.

Имеется таблица в диапазоне "A1:B400" такого вида (Статьи - "A", Страницы - "B"):
Статьи                  Страницы
Название статьи   1
Название статьи   2
Фамилия И.О.   

Название статьи   3
Фамилия И.О.   
Название статьи   4
Фамилия И.О.   
   
Название статьи   5
Фамилия И.О.   
Название статьи   6
Название статьи   7
Название статьи   8
...
и мне нужно сделать из нее вот такой вариант:
Статьи                  Страницы
Название статьи   1
без автора
Название статьи   2
Фамилия И.О.   
Название статьи   3
Фамилия И.О.   
Название статьи   4
Фамилия И.О.   
Название статьи   5
Фамилия И.О.   
Название статьи   6
без автора
Название статьи   7
без автора
Название статьи   8
без автора
...
Т.е. нужно сделать так, чтобы выполнились одновременно условия:
1. Удалить полностью пустые строчки после строчек с фамилией;
2. Добавить строчки в случае, если после названия статьи НЕТ фамилии, внести (в строчку столбика А) "без автора" и подсветить красным. В этом случае, думаю, лучше ориентироваться на столбик "B", т.к. добавить строчку и внести "без автора" нужно только тогда, когда страницы в B идут подряд.

Уточню, что в диапазоне "A1:B400" после последней заполненной строчки могут быть пустые строки; последняя заполненная, например, может быть 389.

Заранее благодарю за беспокойство.
« Последнее редактирование: 25.11.2020, 15:37:57 от firestarter » Записан
vikttur
Глобальный модератор
Ветеран
*****

Репутация: +124/-0
Офлайн Офлайн

Сообщений: 1 816



Просмотр профиля
« Ответ #1 : 25.11.2020, 15:39:11 »

Имеется таблица
Пример нужно показывать, а не текст в сообщении.
Записан
firestarter
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 26


Просмотр профиля E-mail
« Ответ #2 : 25.11.2020, 19:16:22 »

Файл "пример" с таблицами (можно добавить вместо таблиц в первом сообщении).
Записан
firestarter
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 26


Просмотр профиля E-mail
« Ответ #3 : 26.11.2020, 02:34:54 »

Товарищи специалисты, помогите, пожалуйста, дорешать задачку.
Пока получилось вот так:

Код: (vb)
Sub Procedure_1()
 
    Dim lLastRow As Long
    Dim i As Long
    
    'Определение последней заполненной ячейки в столбце С.
    lLastRow = Cells(Rows.Count, "B").End(xlUp).Row
    
    'Двигаемся от последней заполненной строки вверх.
    For i = lLastRow To 4 Step -1
        If Cells(i, "B") = "" Then
                Rows(i).Delete
        End If

        If Cells(i, "B") <> "" And Cells(i - 1, "B") <> "" Then
                Rows(i).Insert
                Cells(i, "A") = "без автора"
                Cells(i, "A").Font.Color = RGB(255, 0, 0)
        End If
    Next i
 
End Sub

Но есть пара моментов:
- если в "For..." меняется 4 на 3 или 2, то "без автора" также подставляется выше первой статьи, а это не нужно;
- "без автора" не ставится после последней строчки с названием статьи и без автора.

Вероятно, все это, конечно, решается весьма просто, но для меня, не программиста, даже эта простота представляет затруднения.
Еще раз спасибо за внимание и помощь.
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #4 : 26.11.2020, 08:10:15 »

в "For..." меняется 4 на 3 или 2
это мы про какую сейчас 4? Которая задает верхнюю ячейку для цикла? Или может еще что-то?
"без автора" не ставится после последней строчки
Ну у Вас вообще странная логика в коде. Строки с ФИО вроде нужны(если судить по примеру), но судя по структуре в файле и логике кода - они у Вас удаляются, т.к. для них в столбце В нет данных(If Cells(i, "B") = "" Then). Либо файл нам приложили не такой, какой он есть на самом деле.
Я бы так делал:
Код: (vb)
Sub Procedure_1()
   
    Dim lLastRow As Long
    Dim i As Long
     
    'Определение последней заполненной ячейки в столбце С.
    lLastRow = Cells(Rows.Count, "B").End(xlUp).Row
     
    'Двигаемся от последней заполненной строки вверх.
    For i = lLastRow To 1 Step -1
        'нашли заголовок - завершаем цикл
        If Cells(i, "A").Value = "Статьи" Then
            Exit For
        End If
        If Trim(Cells(i, "A").Value) = "" Then
            Rows(i).Delete
        End If
        'нашли строку с названием статьи
        If Cells(i, "B") <> "" And Cells(i, "A") <> "" Then
            If Cells(i + 1, "B") <> "" Or i = lLastRow Then
                Rows(i + 1).Insert
                Cells(i + 1, "A") = "без автора"
                Cells(i + 1, "A").Font.Color = RGB(255, 0, 0)
            End If
        End If
    Next i
   
End Sub

только тут еще нюанс: в столбец А у Вас есть не только пустые ячейки, но и с пробелами(в том числе, неразрывные(финансовые) с кодом 160.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
firestarter
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 26


Просмотр профиля E-mail
« Ответ #5 : 26.11.2020, 15:08:08 »

Дмитрий, спасибо за помощь!
Разобрался, внес изменения к себе, работает.
Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru