VBA从文件夹中的工作簿复制单元格值

时间:2012-08-30 07:24:06

标签: excel vba loops copy

我需要为大约150种产品创建计算,每种产品包含大约50-60个子产品。根据子产品是从外部来源生产还是购买,价格的计算方式不同。基本上我需要复制粘贴产品中包含的每个子产品的重量和价格,并确定源是什么。

我想excel在同一个文件夹(所有不同的工作簿)中查看以前进行的计算,如果在其中一个工作簿中找到一个单元格,那么将权重,价格和来源复制粘贴到当前打开的工作簿。我完全迷失了如何比较细胞以及是否找到匹配,然后将其复制到正确的位置。我相信.Find和.FindNext在这里很有用,但我不完全确定如何使用它们。

以下是我的数据结构的示例: enter image description here

这是我到目前为止所发现的:

    Sub RunCodeOnAllXLSFiles()
            Dim lCount As Long
            Dim wbResults As Workbook
            Dim wbCodeBook As Workbook


       Application.ScreenUpdating = False
       Application.DisplayAlerts = False
       Application.EnableEvents = False

       On Error Resume Next
           Set wbCodeBook = ThisWorkbook
               With Application.FileSearch
                    .NewSearch
                    'Change path to suit
                    .LookIn = "C:\ahjualune\stuff"
                    .FileType = msoFileTypeExcelWorkbooks
                    'Optional filter with wildcard
                    .Filename = "*NAV*.xls*"
            If .Execute > 0 Then 'Workbooks in folder
                For lCount = 1 To .FoundFiles.Count 'Loop through all
                    'Open Workbook x and Set a Workbook variable to it
                    Set wbResults = Workbooks.Open(Filename:=.FoundFiles(lCount), UpdateLinks:=0)

                    'DO YOUR CODE HERE
                    With ActiveSheet
                             For Each c In .Range("B2:B90").Cells
   ' problematic place         If c.Value = Then


                                  End If
                            Next c
                    End With

                    wbResults.Close SaveChanges:=False
                Next lCount
            End If
    End With
    On Error GoTo 0
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Application.EnableEvents = True
    End Sub

2 个答案:

答案 0 :(得分:0)

  • 这就是我从你那里得知的问题你有150个产品。
  • 每种产品将有50到60个子产品。
  • 您将拥有每个子产品的重量和价格。根据您拥有的那种子产品的数量,您将乘以每套的价格和套数来找到该子产品的总价格。
  • 之后,您将添加所有子产品价格以查找一个产品价格。

如果您正在寻找这个我有一个想法。

将所有主要产品类型放在一个工作簿的sheet1中。

从第二张纸起,将每个产品子产品放在一张纸上。使用Excel工作表公式来乘以和添加价格。

记录宏以将子产品的价格复制到sheet1。

答案 1 :(得分:0)

将源存储在变量

计算当前行-add到变量的价格

当源更改时,将总计放在右侧的列中

可能会使用类似

的内容
range("A2").select

dim sSource as string
dim dPrice as decimal
Dim dWeight as decimal
dim dtotal as decimal

Do Until ActiveCell = ""
    sSource = ActiveCell.Offset(0,8).value
    dprice = Activecell.offset(0,7).value
   Activecell.Offset(1,0).Select
   etc.....
   when your source changes write out to a column to the right...or something like that
Loop 

抱歉,没时间为你写出完整的代码......但是试着让你走上正轨......