2014-05-06 59 views
0

在Excel中,我得到了在B列的順序箱號碼,每個盒子都有C列的方式,我通常這樣做是爲了填充系列下一個選擇(需要順序逐箱的地方數的幾十個文件C列中的所有單元格都是手動選擇的,如果你有幾個盒子可以做,這很好,但現在我有幾百個。填充系列,很多系列的?

[我有一個394x290例如屏幕截圖我要包括展示了我的意思,但因爲這是我的第一篇,我沒有足夠的代表,對不起 - link to it on g+ here.]

我想我可以將一些VBA代碼放入宏中以選擇具有相同框號的連續單元格,並向右偏移一列[Offset(0,1),是嗎?],從1開始填充這些單元格的序列,然後繼續到下一個框。但是,我沒有找到任何類似的工作,我也沒有能夠得到任何我期待爲此工作的東西。 (並不奇怪,因爲我很少嘗試VBA,希望我的問題不是這個網站太noobish。)

+0

重新截圖:使用文件共享服務併發布鏈接。 – teylyn

+0

完成,非常感謝! – kickair8p

回答

0

從我可以告訴,你想要的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 
+0

這工作很好(很快,幾乎花了20秒),感謝您的幫助! – kickair8p

0

無需打開VBA。這可以用公式完成。從C2開始並複製下來

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

很多,比VBA循環成千上萬行快得多。

+0

VBA循環不需要很長時間(我很高興有工作代碼,所以我可以看到我做錯了什麼),但是您的解決方案比我知道要求的更優雅 - 謝謝! – kickair8p

+0

Cool @teylyn!我沒有想清楚... @ kickair8p你可以將VBA和teylyn的配方結合起來,所以你不必拖動填充系列! – PatricK

+0

您也不需要VBA來避免填充公式。只需雙擊填充手柄。這就是它的目的。它將公式填入公認範圍內的最後一個單元格。如果B列沒有空白行,則將公式放入C2中,雙擊填充柄和 - BOOM !.你幾乎沒有時間吸氣。比較一下,「幾乎花了20秒」。 – teylyn