Excel复制和粘贴数据到多个单元格

我有一个Excel问题来自两部分:首先,如果我想从一个工作表复制数据到另一个工作表1:

A B C D E 

对于工作表2,我希望每个单元格重复三次,这样当我将前五个单元格粘贴到工作表2中时,每个单元格都会出现三次:

 A A A B B B C CC D D D E E E 

我怎么做? 我个人现在知道任何公式或function,可以让我这么做,真的期待你的build议。

一旦完成,有没有办法用VBA写出来? 我对VBA非常新,只是在想可能。 否则,我只会logging一个macros。 非常感谢你!

使用Sheet1中的数据就像:

在这里输入图像说明

在Sheet2中,单元格A1input:

 =INDEX(Sheet1!A:A,ROUNDUP(ROW()/3,0)) 

并抄下来:

在这里输入图像说明

(如果你想要每个数据项的4个副本,在公式中使用4

一个VBA的方式:

 Option Explicit Sub main() Dim data As Variant, datum As Variant Dim iDatum As Long, nTimes As Long With Worksheets("Sheet 1") '<--| reference your "source" worksheet (change "Sheet 1" to your actual "source" sheet name data = Application.Transpose(.Range("A1", .Cells(.Rows.count, 1).End(xlUp)).Value) '<--| store its column A cells values from row 1 down to last not empty one into an array End With nTimes = 3 '<--| set how many times you want to copy the same value With Worksheets("Sheet 2") '<--| reference your "target" worksheet (change "Sheet 2" to your actual "target" sheet name .Range("A1").Resize(nTimes) = data(LBound(data)) '<--| write 1st 'data' array value 'nTimes' from its cell A1 down For iDatum = LBound(data) + 1 To UBound(data) '<--| loop through other 'data' array values .Cells(.Rows.count, 1).End(xlUp).Offset(1).Resize(nTimes) = data(iDatum) '<--| write them 'nTimes' from first empty row after last not empty one down Next iDatum End With End Sub 

最后,我做了一步一步的老式的做法,它的工作原理:

 LastRow = have.Cells(have.Rows.Count, "A").End(xlUp).Row Dim p As Long pp = 3 For p = 1 To LastRow want.Range("A" & pp) = have.Range("A" & p).Value pp = pp + 1 want.Range("A" & pp) = have.Range("A" & p).Value pp = pp + 1 want.Range("A" & pp) = have.Range("A" & p).Value pp = pp + 1 Next p