|
以下是引用linigood在2005-7-12 21:55:00的发言:
我经常需要用电子表格处理很多数据,其中有一个工作就是把一列数据变成若干列的数据,比如,有一列100行的数据,如何能迅速转变成10列10行的数据呢?
如果不数据的顺序不重要的话,那下面这个宏可以帮你解决一列分为多列。使用时请注意:先选取含有数据的列(A列),假设折成3列,则折到A列,B列和C列,其中B列和C列原有数据将会被覆盖。
Sub CompressData()
Dim rSource As Range
Dim rTarget As Range
Dim iWriteRow As Integer
Dim iWriteCol As Integer
Dim iColCount As Integer
Dim iTargetCols As Integer
Dim J As Integer
iTargetCols = Val(InputBox("要改成多少列?请输入一个正整数。"))
If iTargetCols > 1 Then
Set rSource = ActiveSheet.Range(ActiveWindow.Selection.Address)
If rSource.Columns.Count > 1 Then Exit Sub
iWriteRow = rSource.Row + (rSource.Cells.Count / iTargetCols)
iWriteCol = rSource.Column + iTargetCols - 1
Set rTarget = Range(Cells(rSource.Row, rSource.Column), _
Cells(iWriteRow, iWriteCol))
For J = 1 To rSource.Cells.Count
rTarget.Cells(J) = rSource.Cells(J)
If J > (rSource.Cells.Count / iTargetCols) Then _
rSource.Cells(J).Clear
Next J
End If
End Sub |
|