簡體   English   中英

如果單元格中有文本,則復制行

[英]Copy a Row if a Cell has Text

我正在嘗試編寫一個宏,如果該行中的特定單元格包含文本(C列),則該行將復制一行,我已經在互聯網上搜索並找到了用於處理復制具有特定文本的行的宏,但是我想編寫一個可以復制的行不管單元格中包含什么文本。

例如,如果有30行但CI列中只有10行包含文本,則希望它復制這10行並將其粘貼到“操作摘要”表中。

目前,我正在使用條件格式為沒有文本的所有單元格着色,然后將它們過濾掉並復制剩余的行,但這有點混亂,我想知道是否有一種更干凈的方法。

謝謝。

也許:

Sub SmartCopy()
    Dim s1 As Worksheet, s2 As Worksheet
    Dim N As Long, i As Long, j As Long
    Set s1 = Sheets("Sheet1")
    Set s2 = Sheets("Action Summary")
    N = s1.Cells(Rows.Count, "C").End(xlUp).Row
    j = 1
    For i = 1 To N
        If s1.Cells(i, "C").Value = "" Then
        Else
            s1.Cells(i, "C").EntireRow.Copy s2.Cells(j, 1)
            j = j + 1
        End If
    Next i
End Sub

更新工作名稱以符合您的要求。

嘗試這個

Private Sub CopyNonBlank()
    Dim destWS As Worksheet ' Destination worksheet
    Set destWS = ThisWorkbook.Worksheets("Action Summary")
    Dim i As Long: i = 1
    For Each cell In Range("C2:C32")
        If Len(cell.Value) > 0 Then ' if cell is not empty lenght would be greater than 0
            destWS.Range("A" & i).Value = cell.Value
            i = i + 1
        End If
    Next cell
End Sub

然后是這樣的:

昏暗的整數

y = 1
For x = 1 To 30
    If Sheets(1).Cells(x, 3) <> "" Then
        Do While Sheets("Action Summary").Cells(y, 3) <> ""
            y = y + 1
        Loop
        Sheets(1).Rows(x).Copy Destination:=Sheets("Action Summary").Rows(y)
        y = 1
    End If

Next x

它循環通過工作表的前30行,然后在c列(即第3列)中找到一個值,就循環遍歷“動作摘要”表的c列值,並遞增y變量,直到找到空白行為止。粘貼,然后將工作表1的整行x復制到“操作摘要”工作表的y行中。

您可以使用If語句使用以下方式確定單元格是否包含文本:

If IsNumeric(rCell.Value) = False And _
IsError(rCell.Value) = False And _
IsDate(rCell.Value) = False Then

第一行檢查值不是數字,下一行檢查它不是來自公式的錯誤消息,最后一行檢查它不是日期,因為根據格式的不同,這些可能會誤認為文本。

然后添加您的代碼以復制您已經找到的行。

暫無
暫無

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

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