我正在寻找一些帮助,我在一个团队中工作,该团队帮助教堂/清真寺/庙宇等开发解决当地贫困的项目(或者如果他们已经有一个项目,我们可以帮助他们提高效率),并且一年来,我们有一项艰巨的工作,试图了解我们在美国不同地区所做的工作。
我制作了一个excel工作簿,其中每个人都有一张工作表来记录我们与哪些组一起工作以及花费的时间和时间,并且wee宏会在每次更新时自动按字母顺序排列。第一张工作表将所有这些页面合并在一起,这个宏意味着当我和我的同事每次访问一个本地项目时都进行记录,而在主表上只显示一次
`Sub HideRows()
BeginRow = 5
EndRow = 400
ChkCol = 2
For RowCnt = BeginRow To EndRow
If Cells(RowCnt, ChkCol).Value = Cells((RowCnt - 1), ChkCol).Value
Then
Cells(RowCnt, ChkCol).EntireRow.Hidden = True
End If
Next RowCnt
End Sub`
然后我用此公式添加一列
`SUMIF($B$1:$B$400,$B5, $E$5:$E$400)`
因此,基本上每个可见行末尾的框都会显示该组所花费的总时间,因为这些行都还在那里,只是不可见。
我本来很聪明,但是有一个问题-如果我们两个人支持同一个教会怎么办?因为它们只是在我们的各个页面中按字母顺序排列,所以“隐藏”宏不会覆盖它,因此使情况更糟的是SUMIF函数将全部计数,因此我们将对其进行重复计数。
我可以看到两个方法来解决此问题,因为我正在努力寻找一种解决方法
是否可以使用宏来隐藏任何重复数据的行?目前,宏基本上说
“如果您说同样的话,请隐藏起来,请直接在上方查看组名”,我尝试在该值检查行中输入“ Range”,而我做错了,因为它使整个事情崩溃了。
另一种选择是尝试使首页按字母顺序排列,但我正在使用另一个IF函数来编译各个工作表中的数据
=IF(ROW()-4<=$B$1,INDEX(Chris!B:B,ROW()),IF(ROW()
<=$B$1+$C$1+4,INDEX(Pauline!B:B,ROW()-$B$1),IF(ROW()
<=$B$1+$C$1+$D$1+4,INDEX(Alan!B:B,ROW()-$B$1-$C$1),"")))
我的阅读告诉我,如果显示的是公式的结果,则无法按字母顺序对列进行字母排序。
有人对我如何解决此问题有任何提示吗?还是其他解决问题的方法?我知道显而易见的答案是使用数据库,但是Microsoft Access不再是Office的标准配置,或者什么原因是基本的答案是花费更多的钱,而我将努力让人们学习新的知识程序。
即使您对我没有答案,也感谢所有阅读过本文的人。
样本数据:
这是工作人员表之一的示例
首页会将其转换为
答案 0 :(得分:1)
谢谢大家的建议,
我通过使用公式
将另一列添加到合并表中来解决了这个问题 =COUNTIF($B$5:$B18, B18)
然后将我的VBA代码更改为
Private Sub Worksheet_Activate()
BeginRow = 5
EndRow = 400
ChkCol = 7
For RowCnt = BeginRow To EndRow
If Cells(RowCnt, ChkCol).Value >= 2 Then
Cells(RowCnt, ChkCol).EntireRow.Hidden = True
Else: Cells(RowCnt, ChkCol).EntireRow.Hidden = False
End If
Next RowCnt
End Sub
最优雅的做事方式还算有效。