Excel数据检查+行过滤器

时间:2019-03-21 09:44:30

标签: excel filter

我有一个这样的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
根据比较两张纸的if语句显示

T和F-又是除5/18以外的所有期间,人1的结果在两张纸上是相同的。

我现在要尝试的是尝试纠正/检查两个不相同的实例。由于我的桌子很大,所以我希望有一个这样的行过滤器,我可以得到这样的东西:

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

在这里,我只对在2/18和5/18期间的人1和3感兴趣,因为那里存在错误。

3 个答案:

答案 0 :(得分:1)

根据下面的示例图像,将其放入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

答案 1 :(得分:0)

如果您熟悉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

答案 2 :(得分:0)

这不是最复杂的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

如果有人有更好的方式编写此代码,我很想听听。