EXCEL高手请进。通过宏或者公式实现,当一行数据中的某个单元格等于某个数时,则下一行自动复制此行

2025-01-08 05:45:59
推荐回答(2个)
回答1:

附件中有样本文件。

代码如下

Sub 数据拆分()

Dim ary, i As Long, j As Integer, str As String, str1 As String
For i = 2 To [b65536].End(3).Row
    str = VBA.Replace(Cells(i, "B"), ";", ";")
    ary = Split(str, ";")
    sj = Sheets(2).[c65536].End(3).Row + 1
    Range("c" & i & ":I" & i).Copy Sheets(2).Cells(sj, "C").Resize(UBound(ary) + 1, 7)
    For j = 0 To UBound(ary)
        For k = 1 To Len(ary(j))
            If IsNumeric(Mid(ary(j), k, 1)) Then
                Sheets(2).Cells(Sheets(2).[a65536].End(3).Row + 1, "A") = Right(ary(j), Len(ary(j)) - k + 1)
                Exit For
                End If
        Next k
        Sheets(2).Cells(Sheets(2).[b65536].End(3).Row + 1, "B") = Application.Substitute(ary(j), "x" & Sheets(2).Cells(Sheets(2).[b65536].End(3).Row + 1, "A"), "")
        Next j
Next i
End Sub


回答2:

民间彩票爱好者,呵呵
有一个笨一点的办法供你参考:
如果最多是复制3行,那就让每一行数据下面都跟着三行复制出来的数据
在F列加一个给分号计数的函数,函数的值取0,1,2
A列为例:A2=A1
A3=IF(F1=1,A1,"")
A4=IF(F1=2,A1,"")
这样做完之后 在第一行加“自动筛选” 把空行删掉。
再去掉筛选就是你要的结果。