我有一个这样的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感兴趣,因为那里存在错误。
答案 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)), "")
答案 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
如果有人有更好的方式编写此代码,我很想听听。