Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 07.11.2012
Сообщений: 42
1

Скрыть строки по условию

17.02.2017, 20:44. Показов 2285. Ответов 8
Метки нет (Все метки)

Здравствуйте господа-товарищи!

у меня стоит следующая задача:
имеется файл эксель с N количество листов. в каждом листе забиты данные. необходимо по следующему услововию:
1) Если в ячейке С5 не пусто (а в идеале содержится текст "текст 1" или "текст 2" или "текст 3") тогда
проверяем ячейку В7, В8, В9.. В15 -Если в ячейке пусто тогда нужно скрыть всю строку. Если нет тогда тогда оставлять как есть.

2) После строки в которой имеется ячейка содержащая дату в формате "25.12.2017" следующие 5 строк удалить. и так по циклу пройтись по всему листу.

(2 отдельных макроса) выбирать в каком листе какой использовать уже буду в ручную

Задача далее будет усложняться..
Скидывать сразу всю задачу и забивать мозг вам не вижу смысла.

с макросами сталкиваюсь "почти впервые" эту задачу иначе решить я так понял нельзя.
Разбираться в этой теме времени особо нету, учитывая что задача состоит только в обработке одного файла по заданному алгоритму.



В связи с непониманием полных возможностей Екселя понимаю что конечные цели могли быть сформулированы не корректно или не полно.
Поэтому буду благодарен за любую поддержку и помощь: в том числе за команду, которая выполняет определенные операции ( такие как скрытие строки, действие по условию, удаление строки, чтение содержимого строки на наличие данных и на сравнение их с заданным текстом и т.д)
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.02.2017, 20:44
Ответы с готовыми решениями:

Скрыть строки по условию
Добрый вечер! Возникла такая проблема, необходимо часто скрывать строки в файле, в зависимости...

Скрыть/раскрытие строки по условию
Добрый день, уважаемые форумчане. Прошу помочь со следующей задачей. Необходимо написать...

Скрыть лист по условию
доброго времени суток! помогите пожалуйста! нужен макрос который скрывать будет лист по...

Скрыть столбцы по условию
Уважаемые знатоки, подскажите пожалуйста. Sub Hide() Dim cell As Range ...

8
223 / 134 / 45
Регистрация: 08.09.2012
Сообщений: 281
Записей в блоге: 1
18.02.2017, 19:02 2
Цитата Сообщение от ЭСАУ Посмотреть сообщение
конечные цели могли быть сформулированы не корректно или не полно
Так кто Вам мешает сформулировать цели подробнее и приложить файл с образцом? И начинать предложения с большой буквы...
Цитата Сообщение от ЭСАУ Посмотреть сообщение
Если в ячейке пусто тогда
В ячейке или ячейках?
Цитата Сообщение от ЭСАУ Посмотреть сообщение
имеется ячейка содержащая дату в формате "25.12.2017"
В каком столбце или он может быть случайным? Перебирать все ячейки на листе может быть длительным по времени.
0
11 / 11 / 1
Регистрация: 19.02.2017
Сообщений: 26
19.02.2017, 07:07 3
Один к одному Ваша задача, только условие чуть чуть под себя рехтуйте ,
Копирование нных ячеек из основного листа в другие листы согласно определенного критерияопределё
0
223 / 134 / 45
Регистрация: 08.09.2012
Сообщений: 281
Записей в блоге: 1
19.02.2017, 12:13 4
Цитата Сообщение от free-lance Посмотреть сообщение
Один к одному Ваша задача
Да там по ссылке немного не то...
Имхо, ТС это хотел:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Sub ПервыйОтдельныйМакрос()
Dim y As Byte
   If Range("C5").Value = "текст 1" Or Range("C5").Value = "текст 2" _
       Or Range("C5").Value = "текст 3" Then
          For y = 7 To 15
              If Cells(y, 2).Value = "" Then
                 Rows(y).Hidden = True
              End If
          Next y
   End If
End Sub
 
Sub ВторойОтдельныйМакрос()
Dim objSht As Object
Dim LRow As Long
Dim LCol As Long
Dim i As Long
Dim objTeh As Range
Set objSht = Sheets(1)
LRow = objSht.Cells.SpecialCells(xlLastCell).Row
LCol = objSht.Cells.SpecialCells(xlLastCell).Column
Set objTeh = Range(Cells(1, 1), Cells(LRow, LCol))
   For i = 1 To objTeh.Count
      If objTeh(i).Value = "25.12.2017" Then
         Range(Cells(objTeh(i).Row + 1, 1), Cells(objTeh(i).Row + 5, 1)).EntireRow.Delete
      End If
   Next i
End Sub
1
1 / 1 / 0
Регистрация: 07.11.2012
Сообщений: 42
20.02.2017, 06:59  [ТС] 5
А если не только С5, а нужно пробежаться по ячейкам с определенной последовательностью.
например С5, С20, С35... С305.
И соответственно циклы по проверки значения в ячейке на "пусто" будут y=7 to 15, y= 22 to 30 и т.д.
только думаю что цифры 7, 15... нужно как то заменить на буквы.

что то вроде если CJ (где J=5 + 0*15, J=5+1*15 J=5+2*15 и т.д.) - y=J+2 to J+2+8
0
223 / 134 / 45
Регистрация: 08.09.2012
Сообщений: 281
Записей в блоге: 1
20.02.2017, 10:52 6
Вам самим понятно, что написали? Мне не очень. Если 0 (ноль) умножить на 15 (или любое число), произведение будет равно нулю. Какой смысл в этом выражении - "0*15"?
Для того, чтобы использовать переменные в адресации ячеек, можно написать так:
Cells(1, 2) - где первая цифра номер строки, а вторая - номер столбца. И "букв" тогда не нужно. Вместо цифр подставить переменные (например, Cells(y, 2)) и запустить всё в цикл.
Чтобы Вам могли помочь, прикладывайте к сообщению заполненный образец файла с Вашими "хотелками", где в свободных ячейках распишите подробно и внятно, что из конкретных ячеек нужно получить и где вывести результат.
0
1 / 1 / 0
Регистрация: 07.11.2012
Сообщений: 42
21.02.2017, 18:43  [ТС] 7
смысл непременно есть:
если J=5 + 0*15 = 5; J=5 + 1*15 = 20 и т.д. Т.е. текущее значение J в цикле будут каждый раз на 15 больше предыдущего.
возможно можно было по другому оформить эту запись)
0
223 / 134 / 45
Регистрация: 08.09.2012
Сообщений: 281
Записей в блоге: 1
22.02.2017, 09:57 8
Цитата Сообщение от aequit Посмотреть сообщение
Чтобы Вам могли помочь, прикладывайте к сообщению заполненный образец файла с Вашими "хотелками", где в свободных ячейках распишите подробно и внятно, что из конкретных ячеек нужно получить и где вывести результат.
Давайте свой файл, посмотрим...
0
1 / 1 / 0
Регистрация: 07.11.2012
Сообщений: 42
27.02.2017, 12:43  [ТС] 9
Зеленым цветом выделил что хочу получить в итоге
Красным какие строки нужно скрыть и рядом условия.

В примере один листок. таких для обработки всего штук 25-30. в связи с чем в ручную перебирать муторно.

Основная цель: получить удобный читабельный журнал без лишних строк.


доп.вопрос: можно ли для строк выставить автоподбор высоты строки. ( в форматировании ячейки обычно только автоподбор ширины предлагается на выбор)
0
Вложения
Тип файла: xlsx Обработка журнала.xlsx (81.5 Кб, 4 просмотров)
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2017, 12:43

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Скрыть часть строк по условию?
КАк можно сделать невидимыми строки, которые содержат в одной из своих ячеек определенное значение?

Скрыть строки по условию в форме
Здравствуйте уважаемые. Как в ленточной подчиненной форме скрыть т.е отфильтровать те строки в...

DataGrid. Скрыть/показать строки по условию
На прикреплённой картинке имеется DataGrid, который содержит 2 столбца, первый - название...

Скрыть столбец по условию
Добрый день. Подскажите, возможно ли скрыть столбец по определенному условию: CASE ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.