使用VBA在Excel 2010中报告

使用VBA在Excel 2010中报告,excel,excel-2010,vba,Excel,Excel 2010,Vba,请问我怎么做!? 我有一本excel工作手册,有60张工作表,所有60张都有相同的列标题和列数 每张表都是一个国家的名称,行的名称在a列,状态在B列,代码为D 我需要使用所有60张表格生成一份报告,这些表格按国家列出了所有名称,其中值B=“XYV”,并在D中显示相应的值 希望这有意义 我一直在尝试在整个工作表中使用透视表,但是如果我只选择所需的列,则得到的引用无效(这需要花费很长时间!),或者如果我选择整个工作表,则得到的内存不足 我可以在VBA宏中执行此操作吗 很抱歉,我不熟悉这种方式,因此非

请问我怎么做!? 我有一本excel工作手册,有60张工作表,所有60张都有相同的列标题和列数

每张表都是一个国家的名称,行的名称在a列,状态在B列,代码为D

我需要使用所有60张表格生成一份报告,这些表格按国家列出了所有名称,其中值B=“XYV”,并在D中显示相应的值

希望这有意义

我一直在尝试在整个工作表中使用透视表,但是如果我只选择所需的列,则得到的引用无效(这需要花费很长时间!),或者如果我选择整个工作表,则得到的内存不足

我可以在VBA宏中执行此操作吗

很抱歉,我不熟悉这种方式,因此非常感谢您提供的任何帮助…

使用VBA,这是可行的(尽管需要整理-我将其包括在内是为了让您了解这一点):


End Sub

要检索数据,您可以使用VLookup或间接匹配公式-查看感谢Philip我将阅读此感谢您在更改某些值以满足我的需要后这非常有效:)
Sub FindItems()

Const Thing As String = "XYV"

'remember which workbook you are on
Dim wb As Workbook
Set wb = ActiveWorkbook

'create new book for answer
Dim AnswerBook As Workbook
Set AnswerBook = Workbooks.Add

'loop over sheets in original workbook
Dim ws As Worksheet
Dim c As Range
Dim BCells As Range

For Each ws In wb.Worksheets

    'check each cell in column B
    wb.Activate
    ws.Select

    Range("B1").Select
    Set BCells = Range(ActiveCell, ActiveCell.End(xlDown))

    For Each c In BCells

        If LCase(c.Value) = LCase(Thing) Then

            'add to list
            AnswerBook.Activate
            ActiveCell.Value = ws.Name
            ActiveCell.Offset(0, 1).Value = c.Value
            ActiveCell.Offset(0, 2).Value = c.Offset(0, 2).Value

            ActiveCell.Offset(1, 0).Select

        End If
    Next c

Next ws