【问题标题】:How to take certain cell values from multiple sheets如何从多个工作表中获取某些单元格值
【发布时间】:2020-04-28 15:09:52
【问题描述】:

我有一张表格,我正在尝试从以下表格中填充名称和一些单元格值。

我正在尝试复制指定单元格中的值,将它们转储到我的工作表中,然后移至下一张工作表。

这是我正在尝试构建的工作表的快照,并且我已在要查找的每个值的单元格位置中写入。

该脚本将获取随后每张纸上那些指定单元格中的值,然后移至下一张。

Sub EfficiencyReport001()
    
    Dim ws As Worksheet, rep As Worksheet, LastRow As Double
    With ThisWorkbook
        For n = 1 To Sheets.Count
            Set ws = Worksheets(n)
            Set rep = Worksheets("001 Efficiency Report")
            LastRow = rep.Range("A3", rep.Range("A3").End(xlDown)).Rows.Count
            If IsNumeric(ws.Name) Then
                If rep.Range("A3") = "" Then
                    ws.Range("E20", ws.Range("E20").End(xlDown)).Copy _
                    Destination:=rep.Range("A3")
                Else:
                    ws.Range("E20", ws.Range("E20").End(xlDown)).Copy _
                    Destination:=rep.Range("A" & LastRow)
                End If
            End If
        Next n
    End With
    
End Sub

【问题讨论】:

  • 因此,对于每张工作表,您都尝试将 E20E20 中的值复制到使用的最后一个单元格?

标签: excel vba


【解决方案1】:

我想你想要这样的东西。

  1. 遍历所有工作表(Rep 工作表除外)
  2. E20 复制值并在当前循环表上执行Last Cell
  3. Rep 工作表上的值粘贴到Column A 的第一个可用单元格中

Sub Shelter_In_Place()

Dim rep As Worksheet: Set rep = ThisWorkbook.Sheets("001 Efficiency Report")
Dim ws As Worksheet

Dim lr As Long

For Each ws In Worksheets
    If ws.Name <> rep.Name Then
        lr = rep.Range("A" & ws.Rows.Count).End(xlUp).Offset(1).Row
        ws.Range("E20:E" & ws.Range("E" & ws.Rows.Count).End(xlUp).Row).Copy
        rep.Range("A" & lr).PasteSpecial xlPasteValues
    End If
Next ws

End Sub

如果您只想从每张纸上抓取 4 个单独的单元格,那么您可以使用

Sub Shelter_In_Place()

Dim rep As Worksheet: Set rep = ThisWorkbook.Sheets("001 Efficiency Report")
Dim ws As Worksheet

Dim lr As Long

For Each ws In Worksheets
    If ws.Name <> rep.Name Then

        lr = rep.Range("A" & ws.Rows.Count).End(xlUp).Offset(1).Row

        rep.Range("A" & lr).Value = ws.Range("E20").Value
        rep.Range("B" & lr).Value = ws.Range("AD65").Value
        rep.Range("C" & lr).Value = ws.Range("AF65").Value
        rep.Range("D" & lr).Value = ws.Range("AH65").Value
        rep.Range("E" & lr).Value = ws.Range("AJ65").Value

    End If
Next ws

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多