Excel 笔记

实际问题记录

VBA脚本实现特殊的行转列

已知:位于同一Excel工作簿文件中的两个工作表:Sheet1、Sheet2。

问题:现要将Sheet2中的每一行,按Sheet1中的样子进行转置:

  1. Sheet2中每一行的黄色单元格,为列头。要求以合并3列单元格的方式纵向排列。
  2. Sheet2中每一行黄色单元格之后的3个单元格,分别为一级次列、二级次列和三级次列。要求纵向排列。

答:

vbnet 复制代码
Sub doAction()
    For i = 0 To 12 '处理Sheet2中的每一行
        Sheets("Sheet2").Select
            Range(Cells(i + 2, 2), Cells(i + 2, 2)).Select
            Selection.Copy
        Sheets("Sheet1").Select
            '当i=0时,黄色单元格应置于Sheet1的C3位置;当i=1时,黄色单元格应置于Sheet1的C6位置;当i=2时,黄色单元格应置于Sheet1的C9位置。
            '所以发现规律:i=0, 0*3+3=3; i=1, 1*3+3=6; i=2, 2*3+3=9。
            '所以应将每行的黄色单元格粘贴到Sheet1中的i * 3 + 3位置。
            Cells(i * 3 + 3, 3).Select
            ActiveSheet.Paste
            Range(Cells(i * 3 + 3, 3), Cells(i * 3 + 5, 3)).Merge 
            Range(Cells(i * 3 + 3, 3), Cells(i * 3 + 5, 3)).Interior.ColorIndex = xlNone
            
            For j = 0 To 2 '处理Sheet2中的每一行黄色单元格后的3个单元格
                Sheets("Sheet2").Select
                    Range(Cells(i + 2, j + 3), Cells(i + 2, j + 3)).Select
                    Selection.Copy
                Sheets("Sheet1").Select
                    Cells(i * 3 + 3 + j, 4).Select
                    ActiveSheet.Paste
            Next j
    Next i
End Sub
相关推荐
CHEN5_027 小时前
【CouponHub项目开发】EasyExcel解析Excel并使用线程池异步执行和延时队列兜底
java·数据库·excel
我想起个名字7 小时前
sqlserver2008导入excel表数据遇到的问题
sqlserver·excel
Metaphor6927 小时前
Java 如何在 Excel 中添加超链接?使用 Spire.XLS for Java 轻松实现
java·经验分享·excel
JAVA不会写9 小时前
EasyExcel:阿里开源的高效 Excel 处理工具,轻松解决 POI 内存溢出问题
excel
小雪人82815 小时前
wps的excel如何转为谷歌在线表格
excel·wps
Brown.alexis17 小时前
处理省市区excel数据加工成SQL
python·sql·excel
瓶子xf21 小时前
第三家公司虽然用了powerbi,但更适合用excel
excel·powerbi
揭老师高效办公1 天前
打开多个Excel文件后快速关闭所有的文档,并且退出Excel应用
word·powerpoint·excel
l1t2 天前
美团龙猫(longcat.AI)编写的利用二分查找优化Excel的sheet.xml指定范围输出C程序
xml·c语言·excel·解析器
小羔羊的官方学习账号2 天前
整理期初数据用到的EXCEL里面的函数操作
excel·sap·期初数据整理