[英]Defining last nine rows of data as range to copy values and transpose paste into another worksheet
VBA 定義一個始終為最后九行數據的范圍的代碼是什么?
我有一個 data.table,每月手動更新 9 個主題。 我想從最近的條目中復制特定的單元格值,並使用這些值填充另一個工作表上的記分卡。
我不知道該怎么做是從最后一行開始定義一個動態范圍 9。
我可以使用定義最后一行
Last = Cells(Rows.Count, “B”).End(xlUp).Row
但是我如何定義最后 9 行呢?
Last = Cells(Rows.Count, “B”).End(xlUp).Row
'第一的???
For i=Last To ‘first Step -1
'如果是“名稱”,則將單元格值復制到記分卡中定義的單元格
Range(Cells(max(1,Last-9),2),Cells(Last,2))
處理少於 9 行數據的情況。
將列設置為您需要最終范圍的任何寬度。
Sub PrintLastRowsAddress()
Const LAST_ROWS_COUNT As Long = 9
Dim ws As Worksheet: Set ws = ActiveSheet ' improve!
Dim lrg As Range
With ws.UsedRange
Set lrg = .Resize(LAST_ROWS_COUNT).Offset(.Rows.Count - LAST_ROWS_COUNT)
End With
Debug.Print lrg.Address(0, 0)
End Sub
Sub TransposeLastRows()
Const SRC_NAME As String = "Sheet1"
Const SRC_LAST_ROWS As Long = 9
Const DST_NAME As String = "Sheet2"
Const DST_FIRST_CELL As String = "A1"
Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
Dim sws As Worksheet: Set sws = wb.Sheets(SRC_NAME)
Dim srg As Range
With sws.UsedRange
Set srg = .Resize(SRC_LAST_ROWS).Offset(.Rows.Count - SRC_LAST_ROWS)
End With
Dim dws As Worksheet: Set dws = wb.Sheets(DST_NAME)
Dim dfCell As Range: Set dfCell = dws.Range(DST_FIRST_CELL)
Dim drg As Range: Set drg = dfCell.Resize(srg.Columns.Count, SRC_LAST_ROWS)
drg.Value = Application.Transpose(srg.Value)
MsgBox "Last " & SRC_LAST_ROWS & " rows transposed.", vbInformation
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.