1
我想在Excel中自动执行我的待办事项列表,使用VBA创建Eisenhower matrix。自动创建一个艾森豪威尔矩阵从任务列表
我构建了我的待办事项列表以下列方式:
Task | Urgent | Important | done
T1 | x | x |
T2 | | x |
T3 | x | |
T4 | | |
我能够过滤两个紧迫性和importancy我的任务列表,并排除其被表示为“完成”的行。
我想以这样的方式来创建我的矩阵,它看起来像这样:
__________|IMPORTANT|NOT IMPORTANT
URGENT | T1 | T3
----------|---------|--------------
NOT URGENT| T2 | T4
我不知道怎么我的VBA这样的代码,它会选择我的过滤行,决定了矩阵将会变大,并相应地填充它。
我想在excel VBA中使用range.count()
属性来计算行数,但我无法获得T2和T4对齐。此外,它还会每次复制'任务'标题。
我到目前为止的代码如下:
Sub populate_matrix()
Dim i As Integer
ActiveSheet.Range("$A$1:$E$55").AutoFilter Field:=5, Criteria1:="="
ActiveSheet.Range("$A$1:$E$55").AutoFilter Field:=2, Criteria1:="<>"
ActiveSheet.Range("$A$1:$E$55").AutoFilter Field:=3, Criteria1:="<>"
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
i = Range(Selection).Count
Selection.Copy
Sheets("work matrix").Select
Range("B2").Select
ActiveSheet.Paste
Sheets("tasks").Select
ActiveSheet.Range("$A$1:$E$55").AutoFilter Field:=5, Criteria1:="="
ActiveSheet.Range("$A$1:$E$55").AutoFilter Field:=2, Criteria1:="<>"
ActiveSheet.Range("$A$1:$E$55").AutoFilter Field:=3, Criteria1:="="
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("work matrix").Select
Range("B" & i).Select
ActiveSheet.Paste
Sheets("tasks").Select
ActiveSheet.Range("$A$1:$E$55").AutoFilter Field:=5, Criteria1:="="
ActiveSheet.Range("$A$1:$E$55").AutoFilter Field:=2, Criteria1:="<>"
ActiveSheet.Range("$A$1:$E$55").AutoFilter Field:=3, Criteria1:="="
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("work matrix").Select
Range("c2").Select
ActiveSheet.Paste
Sheets("tasks").Select
ActiveSheet.Range("$A$1:$E$55").AutoFilter Field:=5, Criteria1:="="
ActiveSheet.Range("$A$1:$E$55").AutoFilter Field:=2, Criteria1:="="
ActiveSheet.Range("$A$1:$E$55").AutoFilter Field:=3, Criteria1:="="
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("work matrix").Select
Range("C" & i).Select
ActiveSheet.Paste
末次
请添加你编辑到目前为止已完成。如果你正在计算行数,你应该使用'Range.Rows.Count'! ;) – R3uK