簡體   English   中英

如果單元格在Excel中為紅色/綠色/黃色,則復制並粘貼整行

[英]Copy paste entire row if the cell has red/green/Yellow color in excel

我在第一列中有一個表格,其中包含基於月度值和產品的值,如下所示(說“ sheet1”)。 此表已應用條件格式,以根據目標突出顯示紅色/黃色/綠色的單元格顏色。 因此,我只想選擇特定的月份(當前月份-五月)列,並希望VBA檢查該列中是否有紅色單元格,請選擇整行並將其復制到另一個帶有標題的表中,例如“ Sheet2”。

Product   =  Target   Feb Mar Apr May
Wood     >=    5      10  10  10  10
wood     >=    5      28  28  28  28
Tree     >=   12      30  45  60  68
plastic  >=   45      50  50  50  50
tree     >=   50      50  50  50  50
iron     >=   100     64  75  75  80

這些值將每月更改一次,有時甚至是目標值,因此有時着色可能完全是綠色/黃色/紅色。 因此,我想使用VBA自動化該過程,每月檢查“ Sheet1”並提取該月紅色單元格突出顯示的任何行。 甚至按鈕功能也可能有幫助,因此我可以將此宏分配給按鈕,此操作應通過單擊按鈕來完成。 即使是它也應該清除Sheet2上一個月前的所有行,這些行可能在上個月已突出顯示,但在本月未突出顯示。

我嘗試了不同的方法來執行此操作,因為它無法識別單元格顏色。 當我使用表格中的隨機/常規單元格並用紅色填充並使用find(ctrl + f)彈出框使用顏色格式突出顯示時,它可以工作,但不能使用表格中具有條件格式的單元格。 因此,我不知道是否有一種方法可以識別使用VBA以紅色突出顯示的表中的所有單元格。

輸入(在工作表1中):

MYIMAGE

輸出(在工作表2中):

MYIMAGE

    Sub newnew()

聲明工作表,Sheet2和Sheet3應該更改為與工作表名稱匹配

    Dim ws As Worksheet
        Set ws = Sheets("Sheet2")

    Dim wsTwo As Worksheet
       Set wsTwo = Sheets("Sheet3")

清除wsTwo中的先前數據

    wsTwo.Cells.Clear

查找ws的最后一行和最后一列,其中包含數據

    Dim lastRow As Integer
        lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    Dim lastColumn As Integer
        lastColumn = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column

我們在這里設置標題

    ws.Range("A1:F1").Copy
    wsTwo.Range("A1:F1").PasteSpecial xlPasteAll
    Application.CutCopyMode = False

從最后一行開始循環,然后向上移動直到達到第2行。我們正在檢查rowNum和lastColumn顯示格式內部的顏色是否為紅色。 如果是這樣,我們將復制該范圍,然后將其粘貼到wsTwo中。 請注意,在進入for循環之前,我們已經設置了rowCounter。 我們將其用作占位符,每次粘貼兩次ws時都會遞增,這樣就不會粘貼剛剛粘貼的數據。

     Dim rowCounterWsTwo As Integer
         rowCounterWsTwo = 2

    For rowNum = lastRow To 2 Step -1
            If Cells(rowNum, lastColumn).DisplayFormat.Interior.Color = vbRed = vbRed Then
                ws.Range(Cells(rowNum, 1), Cells(rowNum, lastColumn)).Copy
                wsTwo.Range("A2:F2").Insert
                Application.CutCopyMode = False
                rowCounterWsTwo = rowCounterWsTwo + 1
            End If
    Next rowNum

End Sub

暫無
暫無

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

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