2012-11-16 32 views
2

之間說我有這樣的如何在Excel中多次在一次粘貼數據

A B C 
1 Jim 1 10  
2 Jim 2 20 
3 Jim 3 30 
4 Tom 1 20 
5 
6 
7 Jos 1 15 
8 
9 

數據我要的是複製的行2和3,然後粘貼到排5,6,然後8,9 , 等等。空行總是2.

單元格2C和3C中有一個公式計算列B中的值乘以單元格C1。

所以,結果會是這樣

A B C 
1 Jim 1 10  
2 Jim 2 20 
3 Jim 3 30 
4 Tom 1 20 
5 Tom 2 40 
6 Tom 3 60 
7 Jos 1 15 
8 Jos 2 30 
9 Jos 3 45 

問題是我必須粘貼幾百倍,這將是耗時。

如果有人能幫到,我將不勝感激。

+0

你會檢查'A列乘以細胞B1'?此列包含名稱。 –

+0

你能給出用於計算空白單元格的公式嗎? –

+0

對不起,我的錯誤,我的意思是B列乘以C1單元格。我現在編輯。 – Wakanina

回答

0

請記住:

  • 你需要確保你有在列A1的值,否則 只是增加的i值到第二行數據。

  • Var是一個虛擬變量,用於在發生新名稱時保持跟蹤。

  • firstValue將包含每個名稱的第一行的rownumber。

代碼

Sub test() 

Var = 0 
LastRow = Cells(Rows.Count, "A").End(xlUp).Row + 2 

For i = 2 To LastRow 
    If Range("A" & i).Value = "" Then 
     If Var = 0 Then 
      firstValue = i - 1 
      Range("A" & i).Value = Range("A" & i - 1).Value 
      Range("B" & i).Value = Range("B" & i - 1).Value + 1 
      Range("C" & i).Value = Range("C" & firstValue).Value + Range("C" & i - 1).Value 
      Var = Var + 1 
     Else 
      Range("A" & i).Value = Range("A" & i - 1).Value 
      Range("B" & i).Value = Range("B" & i - 1).Value + 1 
      Range("C" & i).Value = Range("C" & firstValue).Value + Range("C" & i - 1).Value 
      Var = Var + 1 
     End If 
    Else 
     Var = 0 
    End If 
Next i 

End Sub 
+0

哇......這個工作就像一個魔法。我必須設置爲我= 2到9以滿足我的要求。非常感謝。 – Wakanina

+0

Hi @ t.thielemans,因爲最後一行並不總是相同的。在上面的問題中,最後一行是9.但在我的數據中,最後一行是107行,127行或254行。因此,如果我使用上面的代碼,我應該先檢查最後一行的位置,然後更改'爲我'。任何想法? – Wakanina

+0

@Wakanina,我編輯了我的答案。 LastRow將查找列A中的最後一條數據! ;) – CustomX

0
Sub MakeRows() 
    Dim Sh As Worksheet, DataRng As Range, CopyRng As Range, TargetRng As Range 

    Set Sh = Sheets(1) 'select your sheet here 
         'you can also do it like this = Worksheets("name") 

    Set DataRng = Sh.Range("B2") 
    Set TargetRng = Sh.Range("A4") 

    While IsEmpty(TargetRng) = False 
     TargetRng.Copy TargetRng.Offset(1, 0) 
     TargetRng.Copy TargetRng.Offset(2, 0) 

     Set CopyRng = Sh.Range(DataRng, DataRng.Offset(1, 1)) 
     CopyRng.Copy TargetRng.Offset(1, 1) 

     Set TargetRng = TargetRng.Offset(3, 0) 
     Set DataRng = DataRng.Offset(3, 0) 
    Wend 
End Sub 

在單元格2C和3C中使用相對引用。

+0

我測試了它。如果您完全按照TS描述填充行(請注意,在2C和3C中有公式),它應該已經正確填充所有數字。我忘了名字,但我剛剛編輯它。 – grozhd

+0

我的代碼完全符合我想要的TS要求。爲什麼我應該考慮第2行和第3行是否填滿?這裏提出了一個問題,我的代碼解決了這個問題。爲什麼它不適用於高於3的任何事情?它用公式複製前三行,所以如果你在第二行中改變2代表5,它將與5一起工作。我認爲你誤解了這個問題。我得到和他一樣的結果。 – grozhd

+0

對不起,但上面的代碼沒有工作grozhd。 – Wakanina