Excel VBA
打开Microsoft Office Excel 2007,按下快捷键ALT+F11打开VBA(宏)编辑界面,然后点菜单栏【插入】下拉中列表中点【模块(M)】如图。
然后插入了一个模块1,在代码框中复制如下代码:Option Base 1Sub 数据排列() '2019-9-29 21:42:58 Dim r As Long, c As Long, yn, mb As Range, nb(), i As Long, j As Long, k As Long Set mb = Application.InputBox(Prompt:='选择要排列数据的单元格:', Type:=8) yn = MsgBox('排列方式:按先行后列(是),按先列后行(否)', vbYesNo) k = 0 If yn = vbYes Then r = Application.InputBox(Prompt:='输入排列数据行数:', Type:=1) c = Abs(Int(-1 * mb.Count / r)) ReDim nb(r, c) For j = 1 To c If k > mb.Count Then Exit For For i = 1 To r k = k + 1 If k > mb.Count Then Exit For nb(i, j) = mb.Cells(k).Value Next i Next j Else c = Application.InputBox(Prompt:='输入排列数据列数:', Type:=1) r = Abs(Int(-1 * mb.Count / c)) ReDim nb(r, c) For i = 1 To r If k > mb.Count Then Exit For For j = 1 To c k = k + 1 If k > mb.Count Then Exit For nb(i, j) = mb.Cells(k).Value Next j Next i End If Set mb = Application.InputBox(Prompt:='选择输出的一个单元格:', Type:=8) Range(mb, mb.Offset(r - 1, c - 1)) = nbEnd Sub
需数据排列运行上面宏代码可以达到你想要的排列,怎样运行宏呢?方法一,菜单栏中鼠标点【视图】,列表中找到【宏】,然后鼠标点【宏】的下箭头显示下拉列表,找到【查看宏】并鼠标点下,显示“宏”对话框,选宏名“数据排列”,鼠标点右边【执行】运行该宏,显示输入对话框,“选择要排列数据的单元格”,选择排列数据的单元格“ABCDEF”后,【确定】,再显示选择对话框“排列方式:按先行后列(是),按先列后行(否)”,这里的“先行后列”是先排完行再排列,“先列后行”是先排完列再排行。选“是”,显示输入对话框,要求“输入排列数据行数”,输1行,【确定】,再显示输入对话框,要求“选择输出的一个单元格”,选F7单元格后,【确定】,在F7单元格显示排列一行数据“ABCDEF”。
方法二:为了方便操作,在工作表上面制作一个操作运行宏的命令按键。操作方法是点工具栏最右边箭头显示下拉列表,找到【其它命令(M)】点下,打开“Excel选项”对话框,在“从下列位置选择命令(C):”下拉箭头选【开发工具选项卡】,在列表框中显示列表中选择【插入控件】,然后对话框中【添加(A)>>】按扭,在右边工具栏列表显示增加一个“插入控件”,点【确定】。这样在快速访问工具栏多了一个【插入控件】按扭工具。然后点下该工具,显示下拉列表“表单控件”选最左上第一个【按扭(窗体控件)】,然后在表格中光标变十字,点下按住鼠标左键不放生成方框再松开左键,弹出“指定宏”对话框,选宏名“数据排列”,点【确定】,选表中【按扭2】改名为【数据排列】按键,直接点该按扭可以运行该宏。
【数据排列】宏按扭工具操作开始的实例操作过程如下图: