基于连续值连接字段

时间:2018-01-25 14:35:06

标签: excel vba concatenation

我有2列,200k行:

F1  1
F2  0
F3  0
F4  0
F5  0
F6  1
F7  1
F8  0
F9  10

对于所有值= 0,我想将关联字段与先前关联的字段连接起来。 当有更多连续的字段(4)时,我希望将所有(5)个相关字段连接在一起。

我想:

F1  1    
F2  0   F1|F2|F3|F4|F5
F3  0    
F4  0    
F5  0    
F6  1    
F7  1    
F8  0   F7|F8
F9  10   

目前我有:

Sub mfewj()
N = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To N
    If Cells(i, 2) = 0 Then Cells(i, 3).FormulaR1C1 = "=CONCATENATE(R[-1]C[-2],""|"",RC[-2])"
Next i
End Sub

返回:

F1  1    
F2  0   F1|F2
F3  0   F2|F3
F4  0   F3|F4
F5  0   F4|F5
F6  1    
F7  1    
F8  0   F7|F8
F9  10  

感谢任何建议

1 个答案:

答案 0 :(得分:1)

你可以在列表中向后循环:

Option Explicit

Sub ConCatMacro()
Dim i As Long
Dim str As String

i = ActiveSheet.Range("A" & ActiveSheet.Rows.Count).End(xlUp).Row

For i = i To 1 Step -1 'Loops backwards
    If Cells(i, 2).Value = 0 Then
        If Len(str) > 0 Then
            str = Cells(i, 1).Value & "|" & str
        Else
            str = Cells(i, 1).Value
        End If
        Else
            If Len(str) > 0 Then
                Cells(i + 1, 3).Value = Cells(i, 1).Value & "|" & str
                str = ""
            End If
    End If
Next

End Sub