我正在自动执行一个每周报告,该报告做了一些重复的工作来清理和清理数据集。在清理过程结束时,我运行了多个报告。
在上一份报告中,我正在汇总工作表“数据透视表”中数据透视表中的数据。我需要选择一个动态范围以在工作表“图表”上生成折线图。
我在选择动态范围时遇到了麻烦。我很喜欢创建图表部分。
我的数据透视表看起来像这样;
| A | B | C | D | E | F | G | H | I | J
1| | | | | | | | | |
2| |Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Total
3|Duration| 3 | 3 | 2 | 1 | 2 | 3 | 4 | 5 | 23
数据集包括2017年,2018年和2019年的数据。
我仅过滤2019年数据。我们只想创建最近6个月的图表。因此,如果我在八月份运行报表,我希望脚本选择I2:D2,然后复制到剪贴板,以便粘贴到“图表”工作表中以生成折线图。
这是我的挑战;
第一次挑战-我需要选择要追溯到6个月(D2)的当前月份(I2)。
第二个挑战-假设我在三月份(D3)运行了该报告,脚本只能选择(D3:B3)
我想出了如何找到当月的单元格,选择它,然后将地址添加到变量中。
MyMonth = MonthName(Month(Date)) ' In this case: August
With Worksheets("Pivot").Cells
Set cellFound = .Find(MyMonth, LookIn:=xlValues)
If Not cellFound Is Nothing Then
cellFound.Select ' Selects I2
End If
End With
上面的操作符合我的期望,找到当月的单元格,选择单元格,然后将地址($ I $ 2)添加到变量中。我不知道从这里去哪里。
答案 0 :(得分:0)
尝试一下:
1)将“数据透视表”工作表的VBA名称更改为“数据透视表”
2)复制此代码并将其粘贴到模块中,并逐步执行以查看其工作原理。
Sub SelectCells()
Dim searchRange As Range
Dim cellFound As Range
Dim currentMonth As Single
Dim firstMonth As Single
Dim pastMonths As Single
pastMonths = 6
currentMonth = Month(Date) ' In this case: August
firstMonth = WorksheetFunction.Max(currentMonth - pastMonths, 1)
' Select current month going back 6 months
Pivot.Range("B3").Offset(0, firstMonth - 1).Select
Pivot.Range("B3").Offset(0, currentMonth - 1).Select
Pivot.Range(Pivot.Range("B3").Offset(0, firstMonth - 1), Pivot.Range("B3").Offset(0, currentMonth - 1)).Select
End Sub
一些建议: 一种。避免选择单元格(我仅向您演示) b。创建图表时,请将源设置为原始范围,而不要创建副本
注意:如果有帮助,请记住标记问题,以便其他人可以找到它们。