1

我需要合并以下格式的报告列表

  • 第 1 列是一个数字
  • 第 2 列是一个字符串
  • 最大行数是动态的

以将第 1 列中匹配字符串的数字相加的方式(删除重复项)

目前我正在将 csv 文件与此合并

Dim files() As String
files = AllFiles(GetFolder) 'returns array of files in folder
Dim i As Long
For i = 0 To UBound(files)
    Windows("Monthly KB Page Access Report Generator.xls").Activate
    ActiveCell.Value = files(i)
    wrkbookvar2 = Dir(files(i))
    ActiveCell.Offset(1, 0).Activate
    Workbooks.Open Filename:=GetFolder & "\" & files(i)
    Set dataset_workbook = ActiveWorkbook
    Range(ActiveCell.SpecialCells(xlLastCell), Cells(1)).Copy
    Windows("Monthly KB Page Access Report Generator.xls").Activate
    Cells(ActiveCell.SpecialCells(xlLastCell).Row, 1).Select
    ActiveSheet.Paste
    dataset_workbook.Close
Next

这与 2 个问题合并

  1. 每个报告的第一个单元格被报告文件名覆盖
  2. 打开每个文件后,它会提示用户说剪贴板中有大量数据,我想避免这种情况

我认为以下代码可能可以合并我的数据和总和值,但我不能确定,因为由于报告文件名出现,我目前的类型不匹配

' Sort
Windows("filename.xls").Activate
Columns("A:B").Sort Key1:=Range("B1"), Order1:=xlAscending

' merge
LastRow = ActiveSheet.UsedRange.Rows.Count
Set r = ActiveSheet.UsedRange.Resize(1)
With Application.WorksheetFunction
     For iRow = 2 To LastRow
        If Cells(iRow, 2) = Cells(iRow + 1, 2) Then
            Cells(iRow, 1) = Cells(iRow, 1) + Cells(iRow + 1, 1)
            Rows(iRow + 1).Delete
        End If
     Next iRow
End With

任何人都介意帮我解决这个问题,我在 VBA 上很糟糕。

更新:第 1 号已通过删除解决

Windows("Monthly KB Page Access Report Generator.xls").Activate
ActiveCell.Value = files(i)
wrkbookvar2 = Dir(files(i))
ActiveCell.Offset(1, 0).Activate

它们是我完全没有注意到的旧副本的一部分。

一切正常,除了我需要调整我的“合并”以考虑超过 2 个值的实例,现在它只会合并 2 个。

4

1 回答 1

2

1)添加ThisWorkbook.Activate之前ActiveCell.Value = files(i)以避免覆盖问题。ThisWorkbook总是指运行宏的工作簿。

2) 添加Application.CutCopyMode = Falsebeforedataset_workbook.Close处理剪贴板提示问题。

于 2012-11-13T17:59:44.687 回答