2017-10-11 143 views
0

我正在使用具有各種工作表的工作簿。我想要複製最後5張在其「J」列中值爲「Pending」的所有行。我想創建一個名爲「Pending week」的新標籤,並將所有這些行粘貼在那裏。任何幫助將非常感激。 感謝篩選並複製多個Excel表中的某些行到另一個

+1

到目前爲止您嘗試過什麼? – newacc2240

+0

另外,它總是最後5張?如果用戶重新安排工作表或添加/刪除工作表,會發生什麼情況? – QHarr

+0

它總是最後5張@QHarr –

回答

1

您可以非常輕鬆地自己創建這個,如果你只是把它分解:

  • 添加新表
  • 名稱將片材掛起周
  • 找到五張最新。
  • 創建某種循環的副本,如果細胞J列包含值粘貼行「待定」

您沒有提供任何代碼,所以我會給你一個基地,從工作:

您使用添加一個新表&命名爲:

Worksheets.Add 
ActiveSheet.Name = "Pending week" 

找到五張最新

據我所知,你找不到最新的牀單。表格不包含創建時間的日期和時間。但是,如果我們忽視這一點,並期望將最新的五張工作表放在工作簿中的最右側(新創建的工作表的默認位置)。然後你需要弄清楚你有多少張紙並向後計數。

您可以使用:Worksheets.Count來統計所有工作表。使用此號碼並向後計數。我首先想到的是使用一個For Loop

Dim X As Integer 
For X = (Worksheets.Count - 4) To Worksheets.Count 

Next 

X將標識符來找到我們的最新表。所以你應該把它融入下面的循環中。你想把循環放在這個For Block中。

有很多方法可以找到在紙張上的價值,但你需要弄清楚你的牀單的最後一排的。沒有它,我們不知道代碼何時應該停止。

如果所有J單元中都有值,則可以使用Do Until循環。然後,你可以簡單地插入整個行到等待一週

它看起來是這樣的:

Dim XLrow As Integer 
XLrow = 1 

Do Until Worksheets(1).Cells(XLrow, "J") = "" 

    If Worksheets(1).Cells(XLrow, "J") = "Pending" Then 
     Worksheets(1).Range(XLrow & ":" & XLrow) = Worksheets("Pending week").Cells(XLrow, "J").Value 
    End If 

XLrow = XLrow + 1 
Loop 

您需要將範圍更改爲您要複製的範圍的長度。 注意:值Pending是區分大小寫的,所以請記住。

好吧,這就是你需要創建你的代碼。當然,您需要更改值以適合您自己的工作簿,但這是基礎。

+0

OP剛剛添加了一張紙,所以最後5張會包含他們正在粘貼的紙張而不是它?也許在添加表單部分中指定條件之前? – QHarr

+0

這是一個很好的觀點,但它似乎並沒有像這樣工作。 'Worksheets.Add'在工作簿的最左邊添加工作表。所以它不應該影響其他代碼。爲了確保這一點,我們可以使用'Before:= Worksheets(1)'。 – EliasWick

+0

你好@EliasWick我想感謝你的答案。這是很好解釋。首先,我想從最後5張紙張中取出值,即只將紙張放在最右邊。當我嘗試運行你的代碼時,我達到了Do while循環,它跳過條件並直接進入下一張表單。你可以模擬一次,如有必要糾正它。 –

相關問題