【问题标题】:How to reference a cell in VBA using values in another cell如何使用另一个单元格中的值引用 VBA 中的单元格
【发布时间】:2017-03-13 04:25:43
【问题描述】:

我需要从另一个工作表中复制一系列数据,其中包含单元格 A1 中的数据月份。所以我在单元格 A1 中有 2017 年 2 月,从 2017 年 1 月 1 日到 2017 年 12 月 31 日在另一张表中有一行数据,日期是 A 行,数据在下面的行中。我想创建一个宏,每当我运行它时,它都会读取单元格 A1,如果是 2017 年 2 月,它将复制 2017 年 2 月 1 日至 2017 年 2 月 28 日的数据列,如果单元格 A1 是 2017 年 3 月,它将从 2017 年 3 月 1 日到 2017 年 3 月 31 日的副本。我该怎么做?

我录制了宏,但引用的单元格已锁定,因此它始终会从 2017 年 2 月 1 日复制到 2017 年 2 月 28 日,这不是我想要的。

Windows("MASTERFILE.xlsm").Activate
Range("FA2:FT2").Select
Selection.Copy
Windows("NEW_FILE.xlsm").Activate
Sheets("borrowing").Select
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Windows("MASTERFILE.xlsm").Activate
Range("FA25:FT28").Select
Application.CutCopyMode = False
Selection.Copy
Windows("NEW_FILE.xlsm").Activate
Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Sheets("Main Page").Select

结束子

请帮忙。谢谢!

【问题讨论】:

    标签: vba excel reference


    【解决方案1】:

    这可能会有所帮助。

    Sub GetDataByMonth()
        Dim mth As Integer, year As Integer, data As Range, item As Range
    
        With Worksheets("Sheet1")
            mth = VBA.DatePart("m", .Range("A1"))
            year = VBA.DatePart("yyyy", .Range("A1"))
        End With
    
        Set data = Worksheets("Sheet2").Range("A1:A200")
    
        For Each item In data
            If VBA.DatePart("m", item) = mth And VBA.DatePart("yyyy", item) = year Then
                Range(Cells(Item.Row, 2), Cells(Item.Row, 40)).Copy
                Item.Offset(0, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            End If
        Next item
    End Sub
    
    • 假设您的日期格式为 s/sheet 中的日期
    • 它一次复制每一行。
    • 假设您要将 B 列 (2) 中的数据复制到 AN (40)

    【讨论】:

    • 您好,感谢您的帮助!它有效,但我如何使它只从 B 开始复制而不是整行?
    • 你知道行的宽度吗?例如,是否总是从 B 到 H?
    • 假设您要将行从 col B 复制到 H。将 item.EntireRow.Copy 更新为 Range(Cells(item.Row, 2), Cells(item.Row, 8)).EntireRow.Copy Destination:=Worksheets("Sheet3").Range("A" & rw)
    • 我想将列 B 中的行复制到 AN 并将值粘贴到同一行中。所以我做了这样的事情,但它没有工作: Range(Cells(item.Row, 2), Cells(item.Row, 40)).EntireRow.Copy Range(Cells(item.Row, 2), Cells(item.行,40)).EntireRow。 PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
    • 您要将单元格复制到哪里?单独的工作表但在同一行?
    猜你喜欢
    • 1970-01-01
    • 2020-12-14
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多