Скрытие строк на основе значений в двух столбцах одной строки - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь создать кнопку макроса, которая выполняет одно действие в два этапа. Это для отслеживания прогресса, если задача помечена как завершенная в столбце G, тогда мне нужно скрыть строку.

Эта команда, которую я выполнил ниже, однако второй шаг - если значение в столбце c «Имя» скрыто (основано на первой команде), тогда мне нужны все остальные значения в столбце C , равный значениям скрытых строк, а также скрытых. Цель этого состоит в том, чтобы вернуть все элементы, находящиеся в процессе выполнения, удалив все имена в строке C, у которых есть «выполненная» задача.

'Шаг 1: (Работает, чтобы скрыть завершенные строки)

Sub HideCompletes()
For Each cell In ActiveSheet.Range("G5:G200") 'would love to have this work for all cells after G5, but not sure how to acomplish that either
If cell.Value = "Completed" Or cell.Value = "" Then
cell.EntireRow.Hidden = True
End If
Next cell

'Шаг 2: (не функциональная идея)

For Each cell In ActiveSheet.Range("G5:G200")
If cell.RowHeight = 0 And cell.Value In ActiveSheet.Range("C5:C200")
cell.EntireRow.Hidden = True
End If
Next cell
End Sub

1 Ответ

0 голосов
/ 06 марта 2020

Попробуйте это:

Sub HideCompletes()
    ' first find the last row in the spreadsheet that has data
    Dim lastrow As Long
    lastrow = ActiveSheet.Cells.SpecialCells(xlLastCell).Row

    ' now loop through the cells in G and hide them if they are completed
    For Each cell In ActiveSheet.Range("G5:G" & lastrow)
        If cell.Value = "Completed" Or cell.Value = "" Then
            cell.EntireRow.Hidden = True

            ' get the value from column C for that row
            Dim hiddenvalue As Variant
            hiddenvalue = ActiveSheet.Range("C" & cell.Row)

            ' now loop through the cells in C and hide them if they match our hidden value
            ' the value 0 will match an empty cell so we need to check both conditions
            For Each othercell In ActiveSheet.Range("C5:C" & lastrow)
                If othercell.Value <> "" And othercell.Value = hiddenvalue Then
                    othercell.EntireRow.Hidden = True

                End If
            Next othercell

        End If
    Next cell
End Sub

Я думаю, что он делает то, что вы хотите. Если ячейка в G "Завершена" или "", то она скрывает эту строку. Затем после этого он проходит по всем строкам и скрывает те, которые имеют в столбце C то же значение, что и строка, которая была изначально скрыта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...