[英]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.