您的位置: 首页 > EXCEL技巧 > ExcelVBA >

用VBA将多行多列区域转为一列

时间:2014-10-12 整理:docExcel.net

有时需要在Excel中将某个多行多列的区域转换到一列中,下面的VBA代码可以实现这个目的。

1.按快捷键Alt+F11,打开VBA编辑器,在右侧代码窗口中粘贴下列代码:

Sub RangeToOneCol()
Dim TheRng, TempArr
Dim i As Integer, j As Integer, elemCount As Integer
On Error GoTo line1
Range("a:a").ClearContents
If Selection.Cells.Count = 1 Then
  Range("a1") = Selection
Else
  TheRng = Selection
  elemCount = UBound(TheRng, 1) * UBound(TheRng, 2)
  ReDim TempArr(1 To elemCount, 1 To 1)
  For i = 1 To UBound(TheRng, 1)
   For j = 1 To UBound(TheRng, 2)
     TempArr((i - 1) * UBound(TheRng, 2) + j, 1) = TheRng(i, j)
   Next
  Next
  Range("a1:a" & elemCount) = TempArr
End If
line1:
End Sub

上述代码可以将所选择的区域转换到A列中。

2.关闭VBA编辑器,返回Excel工作表界面。

3.如果A列包含数据,先在工作表的最左侧插入一列,以便放置转换后的数据。

4.选择需要转换的区域,按Alt+F8,打开“宏”对话框,选择上述代码中的宏名“RangeToOneCol”运行代码。

在Excel2007中让单元格内容小写转为大写 问题:在Excel2007中让单元格内容小写转为大写
回答:...搞的很不正规。那么,有没有什么办法能将小写内容批量转为大写形式呢?当然有,下面,小编就来告诉大家方法。 案例教程 ①启动Excel2007,打开表格,看到D列里面都是小写形式的,我们需要将其转为大写形式,在单元格输...
在VBA中使用非连续区域 问题:在VBA中使用非连续区域
回答:如果要在VBA中使用非连续区域,可以用类似Range( A1, B2, C3:D10 )的语句,如下例: Sub NonContiguousRange() Dim oRng As Range Set oRng = Range( A1, B2, C3:D10 ) oRng.Value = 100 oRng.Interior.ColorIndex = 2 End Sub 上述代码设置非连续区域A1、B2、C3:D10的值为100...
用VBA选择活动单元格所在的数组区域 问题:用VBA选择活动单元格所在的数组区域
回答:如果在某个区域中输入了相同的数组公式,选择其中某一部分单元格进行修改时,Excel将提示“不能更改数组的某一部分”,这时需要选择全部的数组进行修改。当活动单元格在数组区域中时,可以用下面的VBA代码选择当前整个...
用VBA设置或取消打印区域 问题:用VBA设置或取消打印区域
回答:如果需要用VBA代码在Excel工作表中设置打印区域,可以用下面的方法。 一、设置打印区域 方法一: 用PageSetup.PrintArea属性。代码如下: Sub SetPrintArea() Sheet1.PageSetup.PrintArea = A1:F15 End Sub 上述代码将区域A1:F15设置为打印区域。...
用VBA互换两个单元格或区域中的数据 问题:用VBA互换两个单元格或区域中的数据
回答:有时需要在Excel工作表中互换两个区域中的数据,如果区域相邻可以直接用拖动鼠标并按住Shift键的方法进行互换。而当两区域不相邻且两个区域中的数据量较大时用VBA则较为快捷。例如在互换两列时可以直接单击工作表上方的...
在选定区域中进行数量统计的VBA代码 问题:在选定区域中进行数量统计的VBA代码
回答:如果在Excel中选择了一个或多个区域,用下面的VBA代码可以统计当前工作表所选区域中单元格(或行、列)的数量: 1. 统计选定区域中的单元格数量: Sub CountCellsInSelection() Dim CellsNum As Integer CellsNum = Selection.Count MsgBox 所选区域...
相关推荐: