【问题标题】:Selecting a dynamic range of cells选择动态范围的单元格
【发布时间】:2019-11-20 11:14:40
【问题描述】:

我正在自动生成每周报告,该报告执行一些重复性工作来清理和清理数据集。在清理过程结束时,我会运行几份报告。

在上一份报告中,我在名为“数据透视”的工作表上的数据透视表中汇总数据。我需要选择一个动态范围以在名为“图表”的工作表上生成折线图。

我在选择动态范围时遇到了问题。我喜欢创建的图表部分。

我的数据透视表看起来像这样;

 |    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 个月的图表。因此,如果我在 8 月运行报告,我希望脚本选择 I2:D2,然后复制到剪贴板,这样我就可以粘贴到“图表”工作表以生成我的折线图。

这是我的挑战;

第一个挑战 - 我需要选择当前月份 (I2) 追溯到 6 个月 (D2)。

第二次挑战 - 假设我在 3 月 (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) 添加到变量中。我不知道从这里去哪里。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    试试这个:

    1) 将“Pivot”工作表的 VBA 名称更改为“Pivot”

    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
    

    一些建议: 一个。避免选择单元格(我只是给你演示) 湾。创建图表时,将源设置为原始范围,而不是创建副本

    注意:如果这有帮助,请记住标记问题,以便其他人可以找到它们。

    【讨论】:

    • 感谢您对此的快速回复。我能够理解您对我认为是一个复杂问题的非常简单的解决方案。你的建议帮助我走得更远。睡了一会儿后,我将发布与该项目相关的另一个问题。我将添加一些更好的示例和我正在尝试做的屏幕截图。然而,您的回应是正确的。
    猜你喜欢
    • 2012-08-17
    • 2018-10-12
    • 2014-01-16
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    相关资源
    最近更新 更多