簡體   English   中英

將最后九行數據定義為范圍以復制值並將粘貼轉置到另一個工作表中

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

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