簡體   English   中英

將動態范圍復制並組合到新工作表Excel宏

[英]Copy and combine dynamic ranges to new sheet Excel Macro

我一直試圖弄清楚這一點,但無法讓它工作,因為宏代碼需要更加動態。 我是編寫宏的新手,非常感謝你的幫助。

Sheet1有兩個范圍:

  • 第一個范圍來自A2:MXXX(取決於我評估的行數)
  • 第二個范圍是A3001:M3XXX(也取決於我評估的行數)。

    1. 我想復制第一個范圍,直到A列中包含Sheet2值的最后一行。
    2. 然后,我想復制第二個范圍,直到A列中包含值的最后一行,並將其放在Sheet2中的第一個范圍之后。
    3. 然后我想根據B列對新的組合范圍進行排序。(升序)
    4. 然后,如果可能,將排序和組合范圍導出到.csv

(請注意,我只想復制每個單元格中的值,而不是公式)。

非常感謝,亞當

練習第一個。

選擇要復制的第一個范圍。 例如,選擇單元格A2:A3000按F5鍵並選擇特殊單元格選中常量然后單擊確定,您將看到已選擇所有非空單元格。 在其中一個選擇單元格上單擊鼠標右鍵(或單擊“復制圖標”),然后選擇“復制”,“轉到紙張2”並選擇“A1”和“選擇粘貼特殊值”。

選擇要復制和重復的下一個單元格范圍,直到粘貼,再次進入工作表2,再次轉到特殊單元格並選擇最后一個單元格並單擊確定選擇下面的單元格並粘貼。

練習這個,直到你做對了。

完成這些操作后,使用宏記錄器制作宏。 選擇單元格特殊細胞Non_Blank細胞復制在此輸入圖像描述

如果我正確理解你在尋找什么,那么這應該可以解決問題。 這不會為你做.csv保存。 如果您遇到問題,請告訴我們。

Sub moveRows()

    Dim lastRow1 As Integer
    Dim lastRow2 As Integer
    Dim secondRangeSize As Integer

    With Sheets("Sheet1")
        lastRow1 = .Cells(3000, "A").End(xlUp).Row
        lastRow2 = .Cells(6000, "A").End(xlUp).Row
    End With

    secondRangeSize = lastRow1 + (lastRow2 - 3000)

    With Sheets("Sheet2")
        .Range("A1:M" & lastRow1) = Sheets(1).Range("A1:M" & lastRow1).Value
        .Range("A" & (lastRow1 + 1) & ":M" & secondRangeSize) = Sheets(1).Range("A3001:M" & lastRow2).Value
    End With

    With Sheets("Sheet2").Sort
        .SortFields.Add Key:=Range("B:B"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("A1:M" & secondRangeSize)
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub

暫無
暫無

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

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