2017-06-21 36 views
0

我有一个工作表,我将7000行数据粘贴到列A1中。当他的数据A1000,我想要下一1000行到列B,填充单元格B1:B1000。我希望下一个1000转到C列,填充单元格C1:C1000等。理想情况下,我希望通过公式来实现。我不想使用任何手动命令(即转置等)在Excel中批量转换列为其他列中的列

我看过类似的问题,并没有找到一个具体回答我的问题 - 预先感谢!

回答

2

使用这个公式:

=IF(ROW()>1000,"",IFERROR(INDEX(Sheet1!$A:$A,ROW()+(COLUMN(A1)-1)*1000),"")) 

工作表Sheet1 $ A:$ A是你在Sheet1
数据在另一个表写在A1上面的公式,并在列和

行拖动它

enter image description here

+0

的IFERROR似乎有点多余;我无法看到INDEX返回#N/A的任何方式,但它*可能*返回* 0 *而不是空白单元格。 – Jeeped

+0

它在1000处切断,但我希望数据表中的单元格A1001开始在我的其他表格中填充单元格B1:B1000。一旦B1000被填充,我希望它开始填充C1:C1000。那有意义吗? – TheJDScott

+0

只需将第一行中的公式水平拖动即可 – yass

1

在工作表的代码表中。

Option Explicit 
Const iMAX As Long = 5 

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Target, Range("A1")) Is Nothing Then 
     On Error GoTo safe_exit 
     Application.EnableEvents = False 
     Dim r As Long 
     For r = iMAX + 1 To Cells(Rows.Count, "A").End(xlUp).Row Step iMAX 
      With Cells(r, "A").Resize(iMAX, 1) 
       Debug.Print .Address 
       .TextToColumns Destination:=.Parent.Cells(1, 1).Offset(0, r/iMAX), _ 
           DataType:=xlFixedWidth, FieldInfo:=Array(0, 1) 
       .Clear 
      End With 
     Next r 
    End If 
safe_exit: 
    Application.EnableEvents = True 
End Sub 

enter image description here

+0

这是完美的。谢谢。 – TheJDScott