从Excel的多个工作表中提取某些位置单元格值以及工作表名称

时间:2019-03-22 08:19:52

标签: excel vba

我在工作中遇到问题。

我的excel中有一百多个工作表,我想从每个位置(I25:K25,I50:K50,I95:K95)的某个位置提取值以及每个工作表的旁边的工作表名称。

我想将这些提取的值粘贴到新的工作表上。

有人知道我可以使用任何Excel公式或Excel宏来实现目标吗?

3 个答案:

答案 0 :(得分:0)

我对公式不熟练,但是使用VBA肯定可以。

查看For Each..Next循环,我认为您应该使用它遍历所有工作表。

接下来,.Name属性将为您提取工作表的名称。您可以将其保存到变量中,并用填充单元格。

从一个单元格到另一个单元格获取值就像

一样容易
.Sheets(1).Range("A1:B1").Value = .Sheets(2).Range("A1:B1").Value

请注意,SO不是免费的代码编写服务,因此我不会为您编写整个过程。如果您有一些代码但遇到问题,请返回给我们。

有用的链接:

looping through sheets

Copying cell values

Workbook and -sheet objects

答案 1 :(得分:0)

此代码循环所有表,除了称为结果的表,A列中的代码表名称和B:D列中的范围值。

Option Explicit

Sub test()

    Dim ws As Worksheet, wsResults As Worksheet
    Dim Lastrow As Long

    With ThisWorkbook

        Set wsResults = .Worksheets("Results")

        For Each ws In .Worksheets
            If ws.Name <> "Results" Then
                Lastrow = wsResults.Cells(wsResults.Rows.Count, "A").End(xlUp).Row
                wsResults.Range("A" & Lastrow + 1 & ":A" & Lastrow + 3).Value = ws.Name
                ws.Range("I25:K25").Copy wsResults.Range("B" & Lastrow + 1)
                ws.Range("I50:K50").Copy wsResults.Range("B" & Lastrow + 2)
                ws.Range("I95:K95").Copy wsResults.Range("B" & Lastrow + 3)
            End If
        Next ws

    End With

End Sub

答案 2 :(得分:0)

进入新的主工作表

  • Workbook Download (Dropbox)
  • 调整常量(char *ft_strrev (char *str) { int i = 0, j = 0; while (str [j] != '\0') j++; while (i < --j) { char t = str [i]; str [i++] = str [j]; str [j] = t; } return str; } )部分中的值以适合您的 需求。
  • 该代码只会影响包含它的工作簿。
  • 该代码将删除一个可能的现有工作表,命名为 Const,但只会从所有其他工作表中读取。然后它将 创建一个以cTarget命名的工作表,并将读取的数据写入其中。
  • 要运行代码,请转到cTarget标签,然后单击Developer,然后 点击Macros
RangesToNewMasterWorksheet