重新组织数据(Microsoft Excel)
如果将数据列表导入Excel,则在A列中包含大量数据是很平常的。实际上,在任何其他列中都没有任何内容并不稀奇。 (当然,这完全取决于您要导入的数据的性质。)作为在Excel中使用数据的一部分,您可能希望“重新组织”数据,以便将其拉到比A列更多的列中。
例如,假设您导入了数据,并且最终占据了列A的第1到212行。您真正想要的是数据占据列A到F的列,但是要保留数据需要很多行。因此,需要将A2移动到B1,从A3到C1,从A4到D1,从A5到E1,从A6到F1,然后从A7到A2,从A8到B2,等等。
要以这种方式重组数据,可以使用以下宏。
选择要重组的数据,然后运行宏。询问您要在重组数据中有几列,然后开始数据转移。
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("How many columns?")) 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
宏通过定义两个范围来传递信息:运行宏时选择的源范围和目标范围,目标范围是根据所需的列数由计算的大小定义的。源范围由rSource变量对象表示,目标范围由rTarget表示。 For … Next循环用于实际传输值。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(8188)适用于Microsoft Excel 2007、2010和2013。您可以在以下旧版Excel菜单界面中找到本技巧的版本:
链接:/ excel-Reorganizing_Data [重组数据]。