簡體   English   中英

VBA從工作簿的多個工作表中查找同一列中最后一行的行號或單元格地址

[英]VBA to find Row number or Cell adress of the last row in the same column from multiple sheets in a workbook

我有用於從工作簿的所有工作表到工作表“主”的特定列(在本例中為列A)的最后一行的值的代碼。

Sub CopyToMaster()
ShtCount = ActiveWorkbook.Sheets.Count
For i = 2 To ShtCount
Worksheets(i).Activate
LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
Range("A" & LastRow).Select
Selection.Copy
Sheets("Master").Activate
LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Select
'Required after first paste to shift active cell down one
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
Selection.PasteSpecial
Next I
End Sub

現在我想要單元格地址(例如Sheet1!A98)或至少單元格的行號,而不是單元格中的值。 如果可以的話,我可以用一半的時間做我的工作。 我找不到解決方案,因為我只通過上個星期的谷歌搜索才知道VB;)希望盡快得到答復。 謝謝

要檢索單元地址,您只需執行以下操作:

Dim sAddress as String

For i = 2 to ShtCount
    'No need to select a sheet
    sAddress = Worksheets(i).Cells(Rows.Count, "A").End(xlUp).Address
Next i

這是您要找的東西嗎?

我建議使用.Address屬性並將其存儲在變量中,以將其粘貼到與所引用工作表連接的單元格中。

以Nathan_Sav的觀點進行編輯,我添加了RowAbsolute和ColumnAbsolute,以具有更靈活的方法來引用來自不同工作表的單元格。

請注意,必須使用要引用的數據表的.Name

以下代碼不需要太多更改:

Sub CopyToMaster()

Dim LastRow as Long, a as String

ShtCount = ActiveWorkbook.Sheets.Count
For i = 2 To ShtCount
    Worksheets(i).Activate
    LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
    Range("A" & LastRow).Select

    'Storing the current location of the cell
    a = Selection.Address(RowAbsolute:= False, ColumnAbsolute:= False)

    Sheets("Master").Activate
    LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Select

    'Required after first paste to shift active cell down one
    Do While Not IsEmpty(ActiveCell)
        ActiveCell.Offset(1, 0).Select
    Loop

    ' Pasting in a formula the corresponding workbook it references to and the cell's position
    Selection.Formula = "='" & Worksheets(i).Name & "'!" & a
Next i

End Sub

希望這能解決這個問題。

這應該工作

Dim master_book As Workbook, ref_book As Workbook
Dim sh_cnt As Long, i As Long
Dim sheet As Worksheet

Set ref = ThisWorkbook
' set the master workbook

sh_cnt = ref_book.Sheets.Count
For i = 1 To sh_cnt
    Set sheet = ref_book.Sheets(1)
    master_book.Sheets(1).Range("A" & i) = sheet.Range("A" & sheet.Cells.CurrentRegion.Rows.Count)
Next

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM