首页 > 范文大全 > 正文

浅议EXCEL中的转置

开篇:润墨网以专业的文秘视角,为您筛选了一篇浅议EXCEL中的转置范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

一、转置的概念

查看数学中转置的定义如下:设A为m×n阶矩阵(即m行n列),第i行j列的元素是aij,即:A=(aij)m×n定义A的转置为这样一个n×m阶矩阵B,满足B=(aji),即bij=aji(B的第i行第j列元素是A的第j行第i列元素)。记AT=B。直观来看,将A的所有元素绕着一条从第1行第1列元素出发的右下方45度的射线作镜面反转,即得到A的转置。一个矩阵M,把它的第一行变成第一列,第二行变成第二列,…,最末一行变为最末一列,从而得到一个新的矩阵N,这一过程称为矩阵的转置。

从上述定义中我们可以明确以下信息,被转置的区域和转置后的区域都为一个矩形区域,且转置前的行列数刚好等于转置后的列行数。

如下表中,表1为转置前的,区域为A1:C10,表2为转置后的,区域为E1:N3。

二、转置的方法

1、手工操作一

先用光标选定拟转置的数据区域,再“复制”,点选原区域的最左上角位置,点右键,“选择性粘贴”,下面有个“转置”,选上后确定即可。

2、手工操作二

若要将表格中的行列标识项相互转置,可以使用TRANSPOSE函数按如下方法实现:

首先选中被粘贴区域A1:J3单元格区域,在编辑栏中输入公式:=TRANSPOSE (A1:C10)。按组合键,即可将原行标识项转置为列标识项.

函数说明:TRANSPOSE函数用于返回转置单元格区域,即将一行单元格区域转置成一列单元格区域,反之亦然。在行列数分别与数组行列数相同的区域中,必须将TRANSPOSE,输入为数组公式。使用TRANSPOSE可在工作表中转置数组的垂直和水平方向。

3、VBA操作一

利用Transpose函数进行区域的转置。

Dim myRng1,myRng2 As Range‘定义区域

Set myRng1=Worksheets("sheet1").Range("A1:C10")‘设置需要被转置的区域

numRows=myRng1.Rows.Count‘计算被转置区域的行数

numColumns= myRng1.Columns.Count‘计算被转置区域的列数

Set myRng2=Range("A1").Resize(numColumns,numRows)‘利用上面计算区域的行数与列数以及开始单元格,取得垂直粘贴区域

myRng2=Application.Transpose(myRng1)‘利用Transpose获得区域内容

4、VBA操作二

先定义转置函数如下:

Function MyTranspose(ByVal Arr)

Dim i&,j&

Dim ArrJG

ReDim ArrJG(LBound(Arr,2)To UBound(Arr,2), LBound(Arr,1)

To UBound(Arr,1))

For i=LBound(Arr,1)To UBound(Arr,1)

For j=LBound(Arr,2)To UBound(Arr,2)

ArrJG(j,i)=Arr(i,j)

Next j

Next i

MyTranspose=ArrJG

End Function

调用函数例子

Private Sub Accept_Click()

Dim rng1,rng2 As Range

Dim arr2,arr3 As Variant

Dim myRange As Range

‘设置对单元格区域的引用

Set myRange=Range("A1:C10")

arr2=myRange

arr3=MyTranspose(arr2)

Range(“E1”).Resize(UBound(arr3, 1),UBound(arr3, 2))=arr3

If Application.Dialogs(xlDialogPrinterSetup).Show Then

Worksheets(“通知书").Activate

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

Worksheets(“企事业").Activate

End If

End Sub

5、宏方法

将方法一的过程,录制一个宏。实现操作的重现,宏代码(alt+F8,可以显示)如下:

'Macro4 Macro

‘宏由 User 录制,时间:2013/10/28

Range("A1:C10").Select

Application.CutCopyMode=False

Selection.Copy

Range("E1").Select

Selection.PasteSpecial Paste:=xlPasteAll,Operation:=xlNone, SkipBlanks:= _

False,Transpose:=True

End Sub

三、小结

上述方法都能达到将数据区域转置的要求,且难易程度,可操作性,使用场合均有所不同,此外适用的用户群也不一样。

方法一:通过图形化操作,方便实用,适合于普通用户。但是不能批量使用,也只能通过人工获得相关的转置区域与被转置区域。且不能复用于程序。

方法二:适用于对excel函数比较清楚的财会人员,能比较快地达到目的,一旦熟练使用便可达到相关目的。与方法一相比较,方法一为WINDOWS下的图形化配置,方法二就是命令行设置。

方法三:程序可以复用,转置区域与粘贴区域不限于鼠标选取,可以由程序设定。

方法四:效果与方法三类同,区别就是自己写区域与利用代码自己写转置算法,个人倾向还是用方法三。

方法五:此方法仅仅是一个转置的方法,因为宏主要是作用于重复操作。在转置方面不能重新选定粘贴区域。此外可以将宏的代码复用于程序。同样也是新增一种代码实现的方法。

作者简介:陈彪(1968-),男,海南万宁人,主任科员,现供职于中国人民银行海口中心支行。