如何以编程方式将我的数据放入excel中的网格?

时间:2017-03-07 22:49:19

标签: excel excel-formula

我在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获取我想要的数据,但这是站不住脚的,因为我需要更改每行代码。有没有一种简单的方法可以完成我想要的而不需要编辑每一行?

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分: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