Excel VBA笔记2

原创 2007年09月15日 13:10:00
 Sub RowTransfer()
    Dim row As Long
    Dim col As Long
   
    Dim rangeStr As String
    Dim tempStr As String
   
    ' 目标Sheet页中的行标
    Dim i As Integer
   
    '源Sheet页与目标Sheet页
    Dim sourceSheet As String
    Dim destSheet As String
   
    ' 最大的行号,列号
    Dim maxRow As Integer
    Dim maxCol As Integer
   
    ' 目标表中的帐目编号、帐目名、帐目细项编号、帐目细项名的列号
    Dim acctIdCol As Integer
    Dim acctNameCol As Integer
    Dim acctItemIdCol As Integer
    Dim acctItemNameCol As Integer
   
    ' 目标表中的起始行号
    i = 2
   
    sourceSheet = "Sheet1"
    destSheet = "Sheet3"
   
    acctIdCol = 1
    acctNameCol = 2
    acctItemIdCol = 4
    acctItemNameCol = 3
    acctItemrateCol = 5
   
    '获取源Sheet最大行号
    maxRow = Worksheets(sourceSheet).Range("A65536").End(xlUp).row
   
    For row = 2 To maxRow
       
        '删除 首单元格 为空的行
        If Trim(Worksheets(sourceSheet).Cells(row, 1).Value) <> "" Then
            'Worksheets(sourceSheet).Cells(row, 1).EntireRow.Delete shift:=xlUp
           
            ' 获取该行最大列号
            rangeStr = "IV" & CStr(row)
            maxCol = Worksheets(sourceSheet).Range(rangeStr).End(xlToLeft).Column
           
            For col = 3 To maxCol Step 2
               
                '判断单元格是否为空, 若为空则退出循环
                If Trim(Worksheets(sourceSheet).Cells(row, col).Value) <> "" Then
                   
                    '获取源Sheet行首的项目号, 放入目标Sheet的第1列
                    Worksheets(destSheet).Cells(i, acctIdCol).Value = _
                        Worksheets(sourceSheet).Cells(row, 1).Value
                       
                    '获取源Sheet的项目名, 放入目标Sheet的第2列
                    Worksheets(destSheet).Cells(i, acctNameCol).Value = _
                        Worksheets(sourceSheet).Cells(row, 2).Value
                   
                    tempStr = Worksheets(sourceSheet).Cells(row, col).Value
                   
                    If InStr(tempStr, "*") > 0 Then
                   
                        '获取帐目内容,放入第二列
                        Worksheets(destSheet).Cells(i, acctItemNameCol).Value = _
                            Left(tempStr, InStr(tempStr, "*") - 1)
                   
                        '取分成比例,放入第四列
                        Worksheets(destSheet).Cells(i, acctItemrateCol).Value = _
                            Right(tempStr, Len(tempStr) - InStr(tempStr, "*"))
                    Else
                        Worksheets(destSheet).Cells(i, acctItemNameCol).Value = tempStr
                        Worksheets(destSheet).Cells(i, acctItemrateCol).Value = 1
                    End If
                   
                   
                    '获取帐目项编号, 放入第三列
                    Worksheets(destSheet).Cells(i, acctItemIdCol).Value = _
                        Worksheets(sourceSheet).Cells(row, col + 1).Value
                       
                    '目标表游标下移一行
                    i = i + 1
               
                End If
            Next col
        End If
    Next row
End Sub
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Excel VBA 代码笔记

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...

Excel VBA 宏速查笔记

  • 2008-12-09 23:09
  • 376KB
  • 下载

VB热身:走进VBA&Excel高级应用

几个vb小程序在给大家讲Excel宏之前,让我们通过几个VB小例子来了解一下VB这门语言吧: 首先说明,VB编程是基于控件的,也就是你要先从左边控件窗口拖一个控件到窗口中去,然后双击控件进行编程。...

Excel VBA学习笔记

  • 2011-05-27 13:41
  • 757KB
  • 下载

使用VBA开发EXCEL通用功能 --办公大师系列经典丛书(试读章节)

一般来说,一个通用功能是用于EXCEL的加强,添加实用功能或使现有功能更加容易使用。EXCEL通用功能不是类似季度报表的成品,更确切地说,它是一个帮你制做成品的工具。一个EXCEL通用功能(几乎总)是...

Excel VBA利用Transform函数+SQL交叉汇总数据

一、VBA中transform函数基本语法:Creates a crosstab query. Syntax TRANSFORM aggfunction selectstatement PIVOT p...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)