簡體   English   中英

Excel VBA:在for循環中跳過復制的單元格

[英]Excel VBA: Skip the copied cell in for loop

我有一些數據,我有一些條件。 如果 B 列中的每個單元格都包含諸如“and”、“or”、“and/or”之類的詞,則創建該行的副本並將其插入到復制行之后的下一行。

目前我的數據是這樣的: 在此處輸入圖片說明

這是我的代碼:

Sub Macro2()
    Dim rng As Range, cell As Range, rowRange As Range
        
    Set rng = Range("B1", Range("B1").End(xlDown))
    
    Dim values As Variant
    Dim Result() As String
    connectorArray = Array("and/or", "or", "and")
    Dim findConnectorWord As String
        
    'Worksheets("Sheet1").Activate
    'Range("B1", Range("B1").End(xlDown)).Select
    
    For Each cell In rng
        findConnectorWord = FindString(cell.Value, connectorArray)
        If findConnectorWord <> vbNullString Then
            Result() = Split(cell, findConnectorWord)
            Set rowRange = Range("A" & cell.Row, Range("B" & cell.Row).End(xlToRight))
            rowRange.Copy           
            rowRange .Offset(1, 0).Insert Shift:=xlDown
    
            'Logic to skip the next cell

        End If
    Next cell    
End Sub

Function FindString(SearchString As String, arr As Variant) As String
    For Each searchWord In arr
        If InStr(SearchString, searchWord) > 0 Then
            FindString = searchWord
            Exit For
        End If
    Next
End Function

我遇到的問題是,一旦該行被復制並插入下一行,下一次迭代就會讀取復制的行(“房主或住宅火災”)並創建另一個副本。 我想要做的是在復制行后跳過單元格,在 if 條件內並查看單元格 B3(假設在復制新單元格時傘 (C) 被推下)。 什么是最好的方法來做到這一點?

實現@freeflow 在他的評論中所寫內容的可能選項之一:

    ...
    Set cell = Range("B1").End(xlDown)  ' start from last cell
    Do Until False
        findConnectorWord = FindString(cell.Value, connectorArray)
        If findConnectorWord <> vbNullString Then
            ...
            Set rowRange = cell.EntireRow
            rowRange.Copy
            rowRange.Offset(1, 0).Insert Shift:=xlDown
        End If
        If cell.Row = 1 Then Exit Do ' First row? Enough
        Set cell = cell.Offset(-1, 0)   ' Shift up
    Loop
   ...

還有一點要注意 - 在為 connectorArray 定義值時,在術語中添加空格: " and "而不是"and" 否則,您可以使用一些 Brandon 或 Alexandra 復制該行

暫無
暫無

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

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