2013-03-07 82 views
0

请问我该怎么做? 我有一张excel工作手册,里面有60页,所有的60个都有相同的列标题和列数。使用VBA在Excel 2010中报告

每个片是一个国家的名称,并且行中的列A具有名称和B中的状态和代码d

我需要制作使用所有60片,列出了在由所述名称的报告值B =“XYV”的国家,并在D中显示相应的值。

希望有道理!

我一直试图在工作表中使用数据透视表,但是如果我只选择需要的列(这需要永远做!)或者如果我选择整个工作表,我会得到无效的引用。

我可以在VBA宏中做到这一点吗?

对不起,我以这种方式因此任何帮助,将不胜感激是新来的Excel文档...

+0

检索数据,您可以使用VLOOKUP,或间接与MATCH公式 - 看看[Excel用户MVP(http://exceluser.com/blog/465/excels- best-lookup-method-index-match.html) – 2013-03-07 13:46:14

+0

谢谢菲利普我会读一读这个 – Adrian 2013-03-07 17:36:08

回答

1

使用VBA,这个工作(尽管它需要整理 - 我包括它给你的想法):

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 

末次

+0

谢谢你改变了一些值,以满足我的需求这工作很好:) – Adrian 2013-03-07 17:35:02