2017-10-13 33 views
0

免責聲明:這可能是一個初學者容易提出的問題。請在我身上輕鬆一點。如何在單列中的10行中插入數字1,然後在接下來的10行中插入數字2等等?

目前我正在一個簡單的實驗中,我在一個按鈕中指定了一個宏。我想讓這個宏在列A的行1中插入數字1.直到10.一旦完成,數字將增加到2,並填充下10行,依此類推。

該公式將繼續,直到我在代碼中爲其設置的範圍。如下圖所示:

Sub fill() 

    Dim ID 

     For c = 1 To 34 
      ID = 1 
      ActiveWorkbook.Sheets("Sheet1").Cells(c, 1) = ID 
      ActiveWorkbook.Sheets("Sheet1").Cells(c + 1, 1) = ID 
      c = c + 1 
     Next c 

End Sub 

在這一點上填滿整個細胞1.對於命令增加數爲2個,我想用IF語句,以增加它的。

If c = c * 10 Then 
    ID = ID + 1 
End If 

很明顯,這並沒有工作,我也不知道我應該把它放在整個代碼中。這是解決這個問題的正確方法嗎?或者我應該使用另一種方法?

更新問題:

現在我想爲代碼在第3行開始起。這樣做在3 1號開始,到10時

Sub fill() 
Dim ID 
ID = 1 
For c = 3 To 34 

    ActiveWorkbook.Sheets("Sheet1").Cells(c, 1) = ID 
    ActiveWorkbook.Sheets("Sheet1").Cells(c + 1, 1) = ID 
    c = c + 1 
    If (c Mod 10) = 0 Then 
     ID = ID + 1 
    End If 

Next c 

End Sub 

然而,然後繼續向前:意爲我的發言中,我把它改成。含義1僅創建7次。我想從第3行開始有1個開始,重複到12,2從第13行開始到第22行,依此類推。這個公式還能做到嗎?

+0

您應該觀看本系列文章[Excel VBA簡介 - YouTube](https://www.youtube.com/playlist?list=PLNIs-AWhQzckr8Dgmgb3akx_gFMnpxTN5) – 2017-10-13 09:21:56

回答

0

有一個簡單的方法,只是一些數學技巧。

Sub fill() 
    For c = 1 To 34 
     ActiveWorkbook.Sheets("Sheet1").Cells(c, 1) = (c - 1) \ 10 + 1 
    Next c 
End Sub 

介紹:\運算符將返回兩個數的商。例如11 \ 4 = 2和12 \ 4 = 3

我刪除了這一行c = c + 1變量c控制着For循環,因此改變它的值是危險的。如果在For循環中有c = c + 1,它將只執行c = 1,3,5,7,...因爲Next c也在c上加1。我想這不是你想要的。

+0

這個答案似乎對我最好。謝謝。 – hjh93

+0

@ hjh93我編輯了我的答案,看一看。 – newacc2240

0

一種方式與if語句來做到這一點,是使用模(如果你不知道模做什麼,看到here

的代碼應該是這樣的:

If (c Mod 10) = 0 Then 
    ID = ID + 1 
End If 

所以它除以10,每次其餘值爲0(在10,20,30等) 它會增加ID

你也可以使用兩個for循環,但你的限制yould會搞砸了,所以我認爲解決方案a波夫應該這樣做。至於在何處放置它,在這裏:

Sub fill() 

Dim ID 
    ID = 1 
    For c = 1 To 34 
     ActiveWorkbook.Sheets("Sheet1").Cells(c, 1) = ID 
     ActiveWorkbook.Sheets("Sheet1").Cells(c + 1, 1) = ID 
     c = c + 1 
     If (c Mod 10) = 0 Then 
      ID = ID + 1 
     End If 
    Next c 

End Sub 
+0

當我嘗試使用它時,似乎出現語法錯誤。我需要在設置中進行一些更改嗎? – hjh93

+0

我必須道歉,在VB它不是%,但國防部,我會改變答案 – Elias

+0

使用@sktneer的答案,其方式比我的 – Elias

0

你可以試試這個...

Sub Fill() 
Dim ws As Worksheet 
Dim i As Long, lr As Long 
Set ws = Sheets("Sheet1") 
lr = 1 
For i = 1 To 34 
    ws.Range("A" & lr).Resize(10).Value = i 
    lr = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1 
Next i 
End Sub 

編輯:

Sub Fill() 
Dim ws As Worksheet 
Dim i As Long, ID As Long 
Set ws = Sheets("Sheet1") 
ID = 1 
For i = 1 To 34 
    ws.Range("A" & i).Value = ID 
    If i Mod 10 = 0 Then ID = ID + 1 
Next i 
End Sub 
+0

謝謝,但這不是我想要的... 1至34是我使用的單元格(A1到A34)。這意味着我要A1到A10有數字1,A11到A20有數字2等,直到A34的範圍結束。該代碼所做的是按照升序將數字1至34複製十次。 – hjh93

+0

根據您的要求編輯答案。 – sktneer

相關問題