修法布施得聪明智慧,多分享让生霰翌倡戈活更美好。上次分享《Excel如何快速将纵向数据表根据条件转置成横向》,介绍了按“户主”分行多列转成横向表处理方法。下面通夸臾蓠鬏过一实例分享把数据表转成首列与其它列数据对调表处理方法,更加方便我们处理表格,提高效率。实例如下图:表1转表2。
工具/原料
MicrosoftOfficeExcel2007
ExcelVBA
处理方法/步骤
1、首先打开MicrosoftOfficeExcel2007,将上例文件另存文件名为《Excel怎样把数据表转成首列与其它列数据对调表.xlsm》(演示文件,下面代码复制到能运行宏的工作簿都可以)如图。
2、然后按下快捷键ALT+F11打开VBE(宏)编辑界面,然后点菜单栏【插入】下拉中列表中点【模块(M)】如图。
3、然后插入了一个模块1,在代码框中复制如下代码:Sub首列与其它列对调转表()咯悝滩镞'2020-11-921:09:35DimmyrAsRang髫潋啜缅e,rAsLong,cAsLong,iAsLong,jAsLong,dAsObject,mb()DimkAsLong,mc,mmb(),nAsLongSetmyr=Selectionr=myr.Rows.Countc=myr.Columns.CountOnErrorResumeNextSetd=CreateObject("scripting.dictionary")ReDimmb(1Tor*c,1To3)Fori=2TorForj=2TocIfmyr.Cells(i,j).Value<>""Thenk=k+1mb(k,1)=myr.Cells(i,j).Valuemb(k,2)=myr.Cells(1,j).Valuemb(k,3)=myr.Cells(i,1).Valued.Addmyr.Cells(i,j).Value,""EndIfNextjNextiReDimmmb(1Tod.Count+1,1Toc)mc=d.keysmmb(1,1)=myr.Cells(1,1).ValueFori=0Tod.Count-1mmb(i+2,1)=mc(i)NextiFori=2Tocmmb(1,i)=myr.Cells(1,i).ValueNextiFori=2Tod.Count+1Forj=2TocForn=1ToUBound(mb,1)Ifmmb(i,1)=mb(n,1)Andmmb(1,j)=mb(n,2)Thenmmb(i,j)=mb(n,3)ExitForEndIfNextnNextjNextiSetmyr=Application.InputBox(Prompt:="选输出转表一个单元格",Type:=8)myr.Resize(d.Count+1,c)=mmbEndSub
4、以上操作动态过程如下:
5、回到工作表窗口,首先选要转数据表单元格区域,然后运行【首列与其它列对调转表】宏(菜单栏中点【视图】中下列表中【宏】列表【查看宏(V)】打开宏对方框,选该宏名,执行),提示“选输出转表一个单元格”,选好后输出结果,运行过程如下图。
6、如果觉得这篇经验帮到了您,请点击下方的“投票点赞"或者“收藏”支持我!还有疑问的话可以点击下方的“我有疑问”,谢谢啦!