工作表行列转置:四种方式,你喜欢哪一种?

文摘   教育   2024-09-18 21:46   江苏  

点【关于本公众号】了解一下,欢迎关注谢谢!

快速浏览

实用案例

|日期控件||简单的收发存||收费管理系(Access改进版)|

|电子发票管理助手||电子发票登记系统(Access版)|

|文件合并||表格拆分||审计凭证抽查底稿|

|中医诊所收费系统(Excel版)||中医诊所收费系统(Access版)||银行对账单自动勾对|

|印章使用登记系统|

收费使用项目

|财务管理系统||工资薪金和年终奖个税筹划||新税法下工资表模版|

内容提要

  • 行列转置
大家好,我是冷水泡茶。
前两天在论坛上看到一个贴子,是关于工作表行列转置的。
我看了他的附件,愣是没能搞明白行列转置到底有什么难的地方?
在我们分享的案例中,有非常多的转置操作,主要是针对数组的,单元格区域的转置倒是没有怎么涉及。我们就一起来看看到底该怎么做(我自己简单模拟了一点数据):
1、手工操作:选择数据区域,复制,到目标区域,右击,选择性粘贴,转置

2、VBA代码,这里我们尝试了三种方法
(1)模仿前面手工操作,用VBA代码实现转置:
Sub myTranspose1()    '//复制单元格,选择性粘贴-转置    Dim rng As Range, targetRng As Range    Dim ws As Worksheet    Set ws = ThisWorkbook.Sheets("源表")    Set rng = ws.Range("A1").CurrentRegion    Set targetRng = ThisWorkbook.Sheets("结果1").Range("A1")    rng.Copy    targetRng.PasteSpecial Paste:=xlPasteAll, Transpose:=True    Application.CutCopyMode = FalseEnd Sub
(2)使用数组,先把源数据读入数组,再把数组转置后写入目标区域:
Sub myTranspose2()    '//数组转置    Dim rng As Range, targetRng As Range    Dim ws As Worksheet, arr()    Set ws = ThisWorkbook.Sheets("源表")    arr = ws.Range("A1").CurrentRegion.Value    Set targetRng = ThisWorkbook.Sheets("结果2").Range("A1")    targetRng.Resize(UBound(arr, 2), UBound(arr)) = Application.Transpose(arr)End Sub
3)区域转置,跟数组类似
Sub myTranspose3()    '//单元格区域转置    Dim rng As Range, targetRng As Range    Dim ws As Worksheet    Set ws = ThisWorkbook.Sheets("源表")    Set rng = ws.Range("A1").CurrentRegion    Set targetRng = ThisWorkbook.Sheets("结果3").Range("A1")    targetRng.Resize(rng.Columns.Count, rng.Rows.Count) = Application.Transpose(rng)End Sub

后记

1、我们可以发现,采用复制粘贴方式下,可以保留原来的格式,比如合并居中、单元格字体、颜色等。

2、在VBA中把一个区域转置输出的应用场景比较少,我基本上是没怎么碰到过,也想不出有哪些可能的应用场景。我们一般是在数组、字典中处理完数据后,再视情况,可能把数组、字典的Key、Item转置后写入工作表

好,今天就到这里,我们下期再会!


~~~~~~End~~~~~~

安利小店
安利的牙膏非常不错,用了以后就不想再用其他的了;洗洁精洗衣液也是日常必备,用过都说好!

合谷医疗
合谷医疗专攻各种疑难杂症,尤其擅长抑郁症焦虑失眠儿童神经发育异常多动症自闭孤独症腰颈椎疾病治疗,可谓神乎其技!体验过的直呼早点来就好了

喜欢就点个、点在看留言评论、分享一下呗!感谢支持!

  • Excel问题,请在文章下面留言讨论!或者加入我的付费交流群提问

VBA编程实战
Excel应用案例、Excel VBA、公式函数使用技巧分享,思路解读...... 这里有鲜活案例、实用的技巧......
 最新文章