2017-03-07 90 views
0

我有一组数据的Excel文件,例如:如何在Excel中以编程方式将数据放入网格中?

RIH2329 
SCC272 
CRT041 
WS13-14 
WS13-16 
RIH2602 
VT001 
CRT035 
RIH2874 
RIH2876 
CRT067 
RIH2744 
RIH2750 
RIH2368 
RIH2374 
RIH2378 
RIH2376 
RIH2373...etc 

我想把这个数据到一个9x9的网格。像这样:

RIH2329 SCC272 CRT041 WS13-14 WS13-16 RIH2602 VT001 CRT035 RIH2874 
RIH2876 CRT067 RIH2744 RIH2750 RIH2368 RIH2374 RIH2378 RIH2376 RIH2373...etc 

我有很多数据,所以它不可能手工完成。我试过使用 =offset来获取我想要的数据,但这是站不住脚的,因为我需要更改每行代码。是否有一种简单的方法可以在不编辑每一行的情况下完成我想要的功能?

回答

0

随着A1 RIH2329,把这个在B1:

=OFFSET($A$1, MOD(COLUMN(A:A)-1, 9)+(ROW(1:1)-1)*9, 0) 

填充至J1然后填写B1:J1到B9:J9。

enter image description here

1

可以实现与此VBA宏代码。

Sub makeDataGrid() 

Range("A1").Activate 'asumes data starts at this cel 
'Put all data into memory down to the bottom assumes there are no blank cells in between 
data = Range(Selection, Selection.End(xlDown)).Value 
'Delete column containing all data 
Range(Selection, Selection.End(xlDown)).Delete 

colOffset = 0 
rowOffset = 0 
For i = 1 To UBound(data) 
    ActiveCell.Offset(rowOffset, colOffset).Value = data(i, 1) 
    colOffset = colOffset + 1 
    If colOffset = 9 Then 
     colOffset = 0 
     rowOffset = rowOffset + 1 
    End If 
Next i 

End Sub 

在将宏放入数组中之后,宏将删除包含所有数据的列,然后创建网格。

相关问题