修法布施得聪明智慧,多分享让生霰翌倡戈活更美好。上次分享了《Excel怎样把YXZ三列数据表转一列Y多列XZ数据表》,介绍了三列数据表转成多列数据处理方法,下面墩伛荨矧通过一实例分享快速将纵向数据表根据条件转置成横向处理方法。实例:图1表Sheet1按“户主”分行多列转成另表Sheet2图2。
工具/原料
MicrosoftOfficeExcel2007
ExcelVBA
处理方法/步骤
1、首先打开MicrosoftOfficeExcel2007,上例另存文件名《Excel如何快速将纵向数据表根据条件转置成横向.xlsm》(演示文件,下面代码复制到能运行宏的工作簿都可以)如图。
2、然后按下快捷键ALT+F11打开VBE(宏)编辑界面,然后点菜单栏【插入】下拉中列表中点【模块(M)】如图。
3、然后插入了一个模块1,在代码框中复制如下代码:Sub转表()'2廴类锾渭020-10-30婷钠痢灵21:30:30DimrAsLong,myrAsRange,nAsLong,mb(),iAsLong,kAsLong,mAsLongr=Range("E"&Rows.Count).End(xlUp).Rown=Application.WorksheetFunction.Max(Range("F2:F"&r))-1Setmyr=Range("B2:E"&r)ReDimmb(1Tor,1Ton+4)k=0Fori=1Tor-1Ifmyr.Cells(i,4).Value="户主"Thenk=k+1mb(k,1)=kmb(k,2)=myr.Cells(i,1).Valuemb(k,3)=myr.Cells(i,2).Valuemb(k,4)=myr.Cells(i,3).Valuem=4Elsem=m+1mb(k,m)=myr.Cells(i,2).ValueEndIfNextiWorksheets("Sheet2").UsedRange.ClearContentsWorksheets("Sheet2").Range("A1:D1")=Array("序号","整户编号","户主身份证号","户主")Fori=5Ton+4Worksheets("Sheet2").Cells(1,i).Value="家庭成员"&i-4&"身份证号"NextiWorksheets("Sheet2").Range("A2").Resize(k,n+4)=mbEndSub
4、以上操作动态过程如下:
5、回到工作表窗口,Sheet1表中,为了显示直观在Sheet2表生成转表数据,新建一个窗口垂直并列两个窗口,然后运行【转表】宏(菜单栏中点【视图】中下列表中【宏】列表【查看宏(V)】打开宏对方框,选该宏名,执行),在Sheet2表生成转表数据,运行过程如下图。
6、如果觉得这篇经验帮到了您,请点击下方的“投票点赞"或者“收藏”支持我!还有疑问的话可以点击下方的“我有疑问”,谢谢啦!