答案1
我可能会使用数据透视表。月份将放在列中,而 B、C 和 D 将放在值中(这基本上会使表格看起来与您的表格大致相同)。然后需要将选择参数放入过滤器中以仅显示您想要的内容。
不好的地方是,当您想显示每个团队的变化时,您需要刷新数据透视表(RMB 并刷新或通过分析;或者您可以使用宏定期为您执行此操作)。
答案2
步骤 1 - 列表
首先,您可以使用下拉列表添加“选定”部分。选定
后E1
,转到数据选项卡并选择数据验证。 选择列表和写选定作为来源。
现在E1
向下拖动E12
以获取所有单元格的列表。
第 2 步 - 代码
添加行
要跟踪这些单元格,更改Worksheet_Change
Sub 非常有用。右键单击“Sheet1”(或同等学历)并选择显示代码。
要跟踪和复制选定的行,我们可以执行以下操作:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer, r As Integer
On Error GoTo EndM
If Target.Value = "Selected" And Target.Column = 5 And Target.Row < 13 Then
For r = 15 To 30
If Cells(r, 1).Value = "" Then
Range("A" & r & ":D" & r).Cells.Value = Range("A" & Target.Row & ":D" & Target.Row).Cells.Value
i = 1
End If
If i > 0 Then GoTo EndM
Next r
End If
EndM:
End Sub
这将查找工作表中的更改。如果将任何单元格从E1
更改为“选择”,则它将同一行的列复制到从第 15 行开始的第一个空行中E12
。A
D
笔记
这不会阻止您两次选择相同的条目,即获取两行一月的数据。它还设置为第 30 行的限制。第 30 行之后不会添加更多条目可以通过更改30
中的值进行更改For r = 15 To 30
删除行
当我们删除“选定”值时,我们可以使用基本相同的方法再次删除行,方法是添加
If Target.Column = 5 And Target.Row < 13 And Target.Value = "" Then
For r = 15 To 30
If Cells(r, 1).Value = Cells(Target.Row, 1) Then
Range("A" & r & ":D" & r).Cells.Delete
End If
Next r
End If
在前面的例子中End If
,和之间。EndM:
需要错误处理程序来确保工作表不会在您每次尝试一次删除多个单元格时向您抛出错误。
笔记
如果您一次删除多个单元格,则此功能将不会运行,并且如果同一个月份连续出现两次,则不会删除每一行。
当然,您可以添加或更改功能,例如通过添加来限制添加多个条目:
ElseIf Cells(r, 1).Value = Cells(.Row, 1).Value Then
MsgBox ("Multiple entries are not allowed!")
GoTo EndM
在i = 1
和之间的End If
添加部分。
祝你好运!