Проверка данных Excel + фильтр строк - PullRequest
0 голосов
/ 21 марта 2019

У меня есть таблица Excel, как так (упрощенно):

ID       1/18       2/18         3/18       4/18      5/18      6/18
 1        T           T            T          T         F         T       
 2        T           T            T          T         T         T       
 3        T           F            T          T         T         T

T и F отображаются на основе оператора if, который сравнивает два листа - то есть, результат человека 1 за все периоды, но 5/18 одинаковы для двух листов.

То, что я пытаюсь сделать сейчас, - это попытаться исправить / проверить случаи, когда они не совпадают. Поскольку моя таблица огромна, я надеялся использовать фильтр строк, где я мог бы получить что-то вроде этого:

ID           2/18        5/18 
 1             T           F         
 3             F           T  

Здесь меня интересует только просмотр лиц 1 и 3 в периоды 2/18 и 5/18, поскольку там есть ошибки.

Ответы [ 3 ]

1 голос
/ 21 марта 2019

Согласно следующему образцу изображения поместите его в J1 и перетащите вправо еще на 5 столбцов.

=IFERROR(AGGREGATE(15, 7, ($B$1:$G$1)/(INDEX($B$2:$G$9, MATCH($I$2, $A$2:$A$9, 0), 0)<>INDEX($B$2:$G$9, MATCH($I$3, $A$2:$A$9, 0), 0)), COLUMN(A:A)), "")

Поместите это в J2 и перетащите вправо и вниз.

=IFERROR(INDEX($B$2:$G$9, MATCH($I2, $A$2:$A$9, 0), MATCH(J$1, $B$1:$G$1, 0)), "")

enter image description here

0 голосов
/ 26 марта 2019

Это не самый сложный код VBA, но он работает для меня:

Sub filter1()

Dim lrow As Long
Dim lcol As Long

lrow = Cells(Rows.Count, 1).End(xlUp).Row
lcol = Cells.Find(What:="*", After:=Range("A1"), LookAt:=xlPart, LookIn:=xlValues, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False).Column

For i = 1 To lcol
    Cells(1, i).Select
    If Application.WorksheetFunction.CountIf(Columns(i).EntireColumn, "F") = 0 Then
    Columns(i).Hidden = True
    Else
    Columns(i).Hidden = False
    End If
Next i


For j = 1 To lrow
    Cells(j, 1).Select
    If Application.WorksheetFunction.CountIf(Rows(j).EntireRow, "False") = 0 Then
    Rows(j).Hidden = True
    Else
    Rows(j).Hidden = False
    End If
Next j


End Sub

Если у кого-то есть лучший способ написания этого кода, я бы хотел услышать.

0 голосов
/ 22 марта 2019

Если вас устраивает VBA, вы можете использовать следующий код.Сначала выберите столбцы с датами, затем выполните подпрограмму:

Sub hideCols()
  Dim col as Range
  For Each col in Selection
     If Application.WorksheetFunction.CountIf(col.EntireColumn, “F”) = 0 then col.EntireColumn.Hidden = True
  Next col
End sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...