返回列表 上一主題 發帖

請教合併儲存格問題

請教合併儲存格問題

程式是合併多個工作表的值,如何寫成讀到沒有值才離開,而不是註解中的BB及50是設定固定值


Sub Compare()
        Dim Sh As Worksheet, i%, iRowEnd%, Ar()
     With ActiveWorkbook                 
        .Sheets.Add(, .Sheets(.Sheets.Count)).Name = "合併"            
      End With
    With Sheets("合併")
        .Move Sheets(2)                     
        .UsedRange.Offset(1).ClearContents   
        For i = 2 To Sheets.Count           
            iRowEnd = Sheets(i).Cells(Rows.Count, 1).End(xlUp).Row
            Ar = Sheets(i).Range("A2:BB" & iRowEnd).Value                                           '<========BB
            .Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(UBound(Ar), 50) = Ar         '<====50        
        Next
    End With
End Sub
Simon

感謝大大的幫忙
由於前10行有空白,所以
iColEnd = Sheets(i).Cells(1, Columns.Count).End(xlToLeft).Column
改為
iColEnd = Sheets(i).Cells(10, Columns.Count).End(xlToLeft).Column
Simon

TOP

再請教大大,為何無法將多個檔案合併丫
可以將檔案變成範例1,檔案如附件

範例1.zip (81.88 KB)

文件範例1

test20130531.zip (128.58 KB)

主程式

Simon

TOP

感謝版大的幫忙,我的VBA很弱,這程式我已經研究很久,一直寫不出來。
再次感謝版大的協助。
Simon

TOP

再請教一下有些地方我不太了解

For C = 1 To Sheets(3).UsedRange.Columns.Count                                                                                    '我的頁面是(menu, 合併, 4.log, 5.log)為何是1 To Sheets(3),而不是Sheets(3) to.....
            For i = 3 To Sheets.Count
                   TheCoL = .Cells(R, .Columns.Count).End(xlToLeft).Column + 1
                   If .Cells(R, .Columns.Count).End(xlToLeft) = "" Then TheCoL = 1                                         ' 為何讀到xlToLeft為空白時,TheCol=1,而不是用xlToright
                      With Sheets(i)
                          .Range(.Cells(R, C), .Cells(.Rows.Count, C)).Copy Sheets("合併").Cells(R, TheCoL)   '為何用到2次Cells
                      End With
            Next
Next
Simon

TOP

感謝大大的幫忙
Simon

TOP

感謝板大超詳細的解譯,一看就懂
Simon

TOP

        靜思自在 : 看別人不順眼,是自己修養不夠。
返回列表 上一主題