2012-11-13 180 views
1

我有必要在以下格式Excel的VBA合併CSV和和值

  • 第1列是一個數字合併報表列表
  • 第2列是一個字符串
  • 最大行數是動態

在這樣的方式來總結在塔1中的號碼相匹配的字符串(刪除重複)

銅rrently我合併的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很糟糕。

UPDATE: 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.

回答

2

1)ActiveCell.Value = files(i)前添加ThisWorkbook.Activate避免覆蓋問題。 ThisWorkbook始終是指宏在運行的工作簿。

2)在dataset_workbook.Close之前加上Application.CutCopyMode = False來處理剪貼板提示問題。

+0

號碼2已解決,但號碼1無效,似乎ThisWorkbook沒有ActiceCell。 – TetraFlash

+0

你的第一個答案讓我想到我的答案,謝謝 – TetraFlash