Vba 填充系列,很多系列的?

Vba 填充系列,很多系列的?,vba,excel,Vba,Excel,在Excel中,我在B列中有顺序的方框编号,每个方框都有几十个文件,需要在C列中按方框位置编号顺序排列。我通常的做法是将C列中该方框的所有单元格手动选择的一系列内容填充下来,如果你有几个方框要做,这很好,但是现在我有几百个 [我有一个394x290示例屏幕截图,我想包括它来说明我的意思,但由于这是我的第一篇文章,我没有足够的代表,对不起- 我想我可以将一些VBA代码放入宏中,以选择具有相同箱号的相邻单元格,向右偏移一列[offset 0,1,yeah?],从1开始填充这些单元格,然后进入下一个框

在Excel中,我在B列中有顺序的方框编号,每个方框都有几十个文件,需要在C列中按方框位置编号顺序排列。我通常的做法是将C列中该方框的所有单元格手动选择的一系列内容填充下来,如果你有几个方框要做,这很好,但是现在我有几百个

[我有一个394x290示例屏幕截图,我想包括它来说明我的意思,但由于这是我的第一篇文章,我没有足够的代表,对不起-


我想我可以将一些VBA代码放入宏中,以选择具有相同箱号的相邻单元格,向右偏移一列[offset 0,1,yeah?],从1开始填充这些单元格,然后进入下一个框。但我没有找到任何类似的方法,也没有找到任何我查找过的方法来解决这个问题。这并不奇怪,因为我很少尝试VBA,希望我的问题对这个网站来说不太常见。

据我所知,你想要Plc专栏要填充从1开始的同一方框编号的序列

可能存在一种快速的方法,但简单的方法是遍历行。请尝试以下方法:

Sub FillUpPlc()
    Dim oRng As Range, n As Long ' n used for series filling

    Application.ScreenUpdating = False
    n = 1
    Set oRng = Range("B2")
    Do Until IsEmpty(oRng)
        ' Increment n if it's same as cell above, otherwise reset to 1
        If oRng.Value = oRng.Offset(-1, 0).Value Then
            n = n + 1
        Else
            n = 1
        End If
        oRng.Offset(0, 1).Value = n  ' Store n to next column
        Set oRng = oRng.Offset(1, 0) ' Move to next row
    Loop
    Set oRng = Nothing
    Application.ScreenUpdating = True
End Sub

不需要分解VBA。这可以通过公式来完成。从C2开始并复制下来

=IF(B2<>B1,1,C1+1)

比VBA在数千行中循环快得多。

re屏幕截图:使用文件共享服务并发布链接。这工作非常漂亮,速度很快,只花了20秒,感谢您的帮助!VBA循环不需要很长时间,我很高兴有工作代码,这样我就可以看到我做错了什么,但您的解决方案更简单比我所知道的要多出一点-谢谢!酷@teylyn!我没想清楚…@kickair8p你可以将VBA与teylyn的公式结合起来,这样你就不必拖动填充序列!你也不需要VBA来避免拖动填充公式。只需双击填充句柄。这就是它的作用。它将公式填充到重新填充的最后一个单元格范围。如果B列没有空行,将公式放入C2,双击填充手柄,然后-砰!你几乎没有时间吸气呼气。将其与仅用20秒的时间相比。来吧,让我们不要打架-它们都是漂亮的解决方案,我对它们都很满意。再次感谢!我不是有意要打架的。如果那发生在我身上,我很抱歉通过这种方式。我对使用开箱即用的功能非常感兴趣,甚至在考虑代码之前。在这样一个网站上,我看到很多解决方案使用页面和页面的代码,在方框中打个勾也可以做同样的事情。人们只是不太了解Excel已经有多强大,即使没有VBA。真的很迷人。Enj哦。