精华内容
下载资源
问答
  • 本文给大家汇总介绍了几种使用VBA处理EXCEL并生成JSON文件的方法和思路,非常的实用,有需要的小伙伴可以参考下。
  • Public Sub SplitData() Dim Wb As Workbook Dim Sht As Worksheet Dim NewSht As Worksheet Dim arr As Variant Dim Brr() Set Wb = Application.ThisWorkbook Set Sht...
    Public Sub SplitData()
    
        Dim Wb As Workbook
        Dim Sht As Worksheet
        Dim NewSht As Worksheet
    
        Dim arr As Variant
        Dim Brr()
    
        Set Wb = Application.ThisWorkbook
        Set Sht = Wb.Worksheets("总")
    
        With Sht
            endrow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
            Set Rng = .Range("A3:L" & endrow)
            arr = Rng.Value
    
            For J = 6 To UBound(arr, 2)
                ReDim Brr(1 To 6, 1 To 1)
                Index = 0
                mysum = 0
                Set NewSht = CopySheet("模板", arr(1, J))
                For i = LBound(arr) + 1 To UBound(arr)
                    If Len(arr(i, J)) > 0 Then
                        If arr(i, J) > 0 Then
                            Index = Index + 1
    
                            ReDim Preserve Brr(1 To 6, 1 To Index)
    
                            Brr(1, Index) = Index
                            Brr(2, Index) = arr(i, 2)    '品名
                            Brr(3, Index) = arr(i, 3)    '单位
                            Brr(4, Index) = arr(i, 5)    '单价
                            Brr(5, Index) = arr(i, J)    '数量
                            Brr(6, Index) = arr(i, 5) * arr(i, J)    '数量
                            mysum = mysum + Brr(6, Index)
                        End If
                    End If
                Next i
    
                With NewSht
    
                    .Range("E3").Value = arr(1, J)
    
                    Set Rng = .Range("A4")
                    Set Rng = Rng.Resize(UBound(Brr, 2), UBound(Brr))
                    Rng.Value = Application.WorksheetFunction.Transpose(Brr)
    
                    SetBorders Rng
    
                    Set Rng = .Cells(.Rows.Count, "E").End(xlUp).Offset(1, 0)
                    Rng.Value = "合计"
                    Set Rng = .Cells(.Rows.Count, "F").End(xlUp).Offset(1, 0)
                    Rng.Value = mysum
    
                    Set Rng = .Cells(.Rows.Count, "B").End(xlUp).Offset(2, 0)
                    Rng.Value = "注:一式三联,第三联为供应商所有,其它联为客户所有。"
                    Rng.HorizontalAlignment = xlLeft
    
                End With
    
            Next J
    
        End With
    
        Set Wb = Nothing
        Set Sht = Nothing
        Set NewSht = Nothing
    
    End Sub
    Sub SetBorders(ByVal Rng As Range)
        With Rng.Borders
            .LineStyle = xlContinuous
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
            .Weight = xlThin
        End With
    End Sub
    
    
    Public Function CopySheet(ByVal Model As String, ByVal NewName As String) As Worksheet
    
        Application.DisplayAlerts = False
    
        Dim Wb As Workbook
        Dim ModelSht As Worksheet
        Dim NewSht As Worksheet
    
        Set Wb = Application.ThisWorkbook
        Set ModelSht = Wb.Worksheets(Model)
    
        On Error Resume Next
        Wb.Worksheets(NewName).Delete
        On Error GoTo 0
    
        ModelSht.Copy After:=Wb.Worksheets(Wb.Worksheets.Count)
        Set NewSht = Wb.Worksheets(Wb.Worksheets.Count)
        NewSht.Name = NewName
    
        Application.DisplayAlerts = True
    
        Set CopySheet = NewSht
    
        Set Wb = Nothing
        Set NewSht = Nothing
        Set ModelSht = Nothing
    
    End Function
    

      

    转载于:https://www.cnblogs.com/nextseven/p/7270586.html

    展开全文
  • 利用VBA语言通过宏录制技术和嵌入控件及对象技术将Excel应用程序中的数据自动生成图表,并实现Excel工作簿和Word文档两个应用程序之间的数据无缝连接,进而通过Word文档的书签定位功能及VBA编程生成固定模式的Word...
  • VBA制成的可根据模板工作,批量生成新的工作,并能自动编号及工作命名。
  • 此工具是VBA开发,有录入绑定数据功能,可根据不同需求变更设置,扫描绑定数据自动录入Excel,可用于不同环境,工厂记录关联数据
  • 根据EXCEL表格中的数据表结构,一键自动生成sqlserver数据库结构,create语句。VBA方便快捷,一键生成。减去大量的重复工作,节省开发时间。同时支持sql语句生成excel数据表.
  • 自己做的excel库存,手工在[入库]和[出库]输入商品数据,[库存]实时实现自动刷新。此excel是vba写的,wps需装有vba插件,office自带vba,可打开。
  • Sub 由模板生成() Attribute 由模板生成.VB_ProcData.VB_Invoke_Func = " \n14" Dim outdir As String 'outdir 输出文件目录 outdir = "D:\output\" If dir(outdir) = "" Then MkDir outdir End If ...
    Attribute VB_Name = "模块"
    Sub 由模板生成()
    Attribute 由模板生成.VB_ProcData.VB_Invoke_Func = " \n14"
      
        Dim outdir As String
        
        'outdir 输出文件目录
        outdir = "D:\output\"
        If dir(outdir) = "" Then
            MkDir outdir
        End If
         
         
        If Sheets.Count > 2 Then
            For i = 3 To Sheets.Count
                Sheets(3).Delete
            Next
        End If
           
        For i = 2 To 4 Step 1
            Sheets("模板").Copy After:=Sheets(Worksheets.Count)
            Sheets(Worksheets.Count).Name = Sheets("数据源").Cells(i, 1)
            ActiveSheet.Cells(2, 2) = Sheets("数据源").Cells(i, 1)
            ActiveSheet.Cells(3, 2) = Sheets("数据源").Cells(i, 2)
            ActiveSheet.Cells(4, 2) = Sheets("数据源").Cells(i, 3)
            
        Next
        
        ActiveWorkbook.Save
        
        ' True:输出为单个文件
        ' False:输出到当前工作簿其他sheet
        If True Then
            If Sheets.Count > 2 Then
                For i = 3 To Sheets.Count
                    Sheets(3).Select
                    file = Sheets(3).Name
                    Sheets(3).Move
                    ActiveWorkbook.SaveAs Filename:=outdir + file + ".xlsx", _
                        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
                    ActiveWorkbook.Close
                Next
            End If
        End If
            
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        Application.Quit
            
    End Sub
    
    
    
    展开全文
  • 目录 示例 实现代码 工作对象(Worksheet)及其表示方法 1.序号表示法 2.工作名称表示法 ...现希望按照模板的格式生成若干张工作,各工作以银行名称作为表格名称,并将该银行信息填入内。如何用V...

    目录

    示例

    实现代码

    工作表对象(Worksheet)及其表示方法

    1.序号表示法

    2.工作表名称表示法

    3.对象名称表示法

    工作表集合和工作表

    工作表常用的基本属性

    工作表的添加与复制

    工作表对象(Worksheet)与单元格对象(Range)的关系

    工作表的删除

     Application. DisplayAlerts属性


    示例

        如图所示,该表为某公司在银行的余额汇总。现希望按照模板的格式生成若干张工作表,各工作表以银行名称作为表格名称,并将该银行信息填入表内。如何用VBA批量完成?

    实现代码

    Option Explicit
    
    Sub 按模板生成工作表()
        Dim RowN As Long
        Dim shtOld As Worksheet
        Dim shtNew As Worksheet
        Dim shtTemplate As Worksheet
        
        '设定模板
        Set shtTemplate = Sheets("Sheet2")
        '设定数据工作表
        Set shtOld = Sheets("Sheet1")
        '遍历所有的记录
        For RowN = 2 To Cells(Rows.Count, "A").End(xlUp).Row
            '创建工作表的副本,并将其放置于最后
            shtTemplate.Copy after:=Worksheets(Worksheets.Count)
            '变量赋值,指向新创建的工作
            Set shtNew = Worksheets(Worksheets.Count)
            '更改名称
            shtNew.Name = shtOld.Cells(RowN, "A").Value
            shtNew.Cells(3, "A").Value = shtOld.Cells(RowN, "A").Value
            shtNew.Cells(9, "A").Value = shtOld.Cells(RowN, "B").Value
            shtNew.Cells(9, "E").Value = shtOld.Cells(RowN, "C").Value
        Next
    End Sub
    

    工作表对象(Worksheet)及其表示方法

        工作表对象(Worksheet)是Excel中一个非常重要的对象,它代表一个工作表。在VBA中,若要表示当前工作簿中的工作表,可以采用以下几种表示方式。

    1.序号表示法

    序号表示法是以工作表在工作簿中的位置来表示的,其语法如下:

    Worksheets(indexNo)

        该表达式将返回一个工作表对象。其中,Worksheets表示当前工作簿中工作表的集合,即当前工作簿中所有的工作表。参数indexNo表示工作表的序号,该序号从1开始,最大为当前工作簿中工作表的数量。
        使用本方法表示工作表时,序号是以工作表在工作簿中的位置来决定的,如图所示。该工作簿中第1个工作表即“Sheet2”工作表,在此排序下,可以使用以下表达式来表示:

    而当工作表的位置交换后,Worksheets (1)可能表示其他工作表。

    2.工作表名称表示法

    本方法是以工作表的名称来表示工作表对象,其语法如下:

    Worksheets(sheetname)

        该表达式将返回一个工作表对象。其中,参数sheetname为工作表名称的文本表达式,该名称是工作表界面在工作表标签上所显示的名称。

    3.对象名称表示法

        对象名称是在VBE的工程资源浏览器所显示的名称,如图所示。用该名称可以直接表示某个工作表对象,相当于使用一个工作表类型(Worksheet)的变量,而该名称为该变量的名称。

        使用本方法表示工作表对象,则不会受工作表位置或者工作表标签名称变化的影响,可以使代码更加通用和稳定。

    工作表集合和工作表

        工作表集合对象(Worksheets)是若干个工作表对象(Worksheet)的集合。若不加任何限定,Worksheets对象可以直接表示工作簿中所有的工作表,工作表对象则必须使用上述表示方法来表示以特指某个工作表,如:工作表在其集合中特定的位置(indexNo)或者名称( sheetname)。在Excel VBA中,类似于worksheets和worksheet的关系还有单元格集合(Cells)和单元格对象(Range)、工作簿集合(Workbooks)和工作簿(Workbook)。
        需要注意的是,表达式Worksheets是VBA中的一个对象,可以直接使用。而表达式Worksheet是一个对象的类型,不可直接使用。若需使用工作表对象,则必须遵循本例中的3种表示方法表示某个工作表对象。

    工作表常用的基本属性

    工作表对象的属性有许多,其中常用的属性见表

                  工作表对象(Worksheet)常用的基本属性

     

        属  性

    Range

    代表工作表中的单元格或单元格区域

    Cells

    同Range

    UsedRange

    工作表中使用的区域

    Name

    工作表名称,即在工作袭标签所显示的名称

    CodeName

    工作表对象的名称

    Viiible

    工作表的可见性,可以为如下值

    xlSheetVisible:显示工作表

    xlSheetHidden:隐藏工作表,可以通过基本操作取消隐藏

    xlSheetVeryHidden:深度隐藏,无法通过摹本操作取消

    Next

    下一个工作表对象

    Previous

    前一个工作表对象

    工作表集合对象(Worksheets)对象常用的基本属性

        属  性

        说  明

    Count

    返回一个Long值,它代表集合中对象的数最

    Item

    从集合中返回一个工作表对象,可以使用以下两种形式:

    WorksheetsItem(indexNo)

    Worksheets.Item(sheetname)

    Visible

    工作表集合的可见性,可以为:

    xlSheetVisible:显示工作表

    xlSheetHidden:隐藏工作表,可以通过基本操作取消隐藏

    xlSheetVeryHidden:深度隐藏,无法通过基本操作取消

    Excel不允许隐藏所有的工作表,因而无法通过此方法隐藏所有的工作表

    工作表的添加与复制

    当需要添加工作表时,使用工作表集合对象(Worksheets)的Add方法即可,其语法为:

    Worksheets.Add(Before, After,Count,Type )

        本方法将返回一个工作表对象。由于在添加工作表后一般需要对该工作表进行各种操作,因而一般使用以下方式进行插入,以便后续使用Sht对新插入的工作表进行操作。

    Dim Sht As Worksheet
    Set  Sht = Worksheets.Add(Before,After,Count,Type)

        在Add方法中的四个参数均为可选参数。其中参数Before和After只能选择其一,该参数必须为一个工作表对象,分别表示新添加的工作表位于该工作表之前和之后。若省略这两个参数,则在所有工作表的最前面插入一个工作表。参数Count表示需要插入的工作表的数量。参数Type表示插入的工作表类型,可以为下表中的任何一个常量,或者为某个工作表模板(此时该参数为该工作表所在的工作簿的完整路径,在添加时会添加该工作簿内所有的工作表)。

                       Worksheets.Add方法的Type参数

        常  量

       

        说  明

    xlDialogSheet

    -4116

    对话框工作表

    xlExce141ntIMacroSheet

    4

    Excel版本4国际宏工作表

    xlExce14MacroSheet

    3

    Excel版本4宏工作表

    xlWorksheet

    -4167

    工作表

        若需要在所有工作表的最后插入一个工作表(如本例),则需要设定After参数,该参数应该设置为当前的最后一个工作表。一般使用以下表达式表示当前工作簿的最后一个工作表,该表达式以“Worksheets (indexNo)”的形式表示工作表,其中indexNo为Worksheets. Count(当前工作簿中所有工作表的数量),因而该表达式能够表示当前的最后一个工作表。

    Worksheets(Worksheets.Count)

        本例中,由于需要以当前工作簿中的某个工作表作为模板添加工作表,可以使用Add方法进行添加,然后复制所有的内容至新的工作表,也可以直接使用Copy方法进行工作表的复制。Copy方法的语法如下:

    Worksheet.Copy (Before,After)

        其中,Worksheet指需要被复制的工作表。参数Before和After只能选择其一,该参数必须为一个工作表对象,分别表示新复制的工作表位于该工作表之前和之后。若省略这两个参数,则在所有工作表的最前面插入一个复制的工作表。

    工作表对象(Worksheet)与单元格对象(Range)的关系

        单元格是存在于工作表中的,单元格对象是工作表对象的一个属性,当需要特指某个工作表的单元格时,可以采用以下表示方式:

    Worksheet.Range

    或者

    Worksheet.Cells (Row,Col)

        其中,Worksheet是某个工作表对象,Range和Cells表示单元格对象。当采用上述方式表示单元格对象时,所表示的单元格对象为特指的隶属于Worksheet所表示的工作表对象之中。而当单元格对象不加任何限定,仅以Range或者Cells表示时,指的是当前激活的工作表中的单元格对象。
        由于单元格必须依赖于工作表而存在,所以单元格又是工作表对象的一个属性。在VBA中,单元格对象和工作表对象是一对父子关系。单元格对象是工作表对象的子对象,工作表对象是单元格对象的父对象。开发者可以通过工作表对象的相应属性访问子对象单元格,也可以通过子对象单元格的Parent属性访问其父对象工作表。如以下语句可以返回当前激活的工作表,相当于对象ActiveSheet。

    Range("A1").Parent

    工作表的删除

        本例中的程序仅能运行一次,当运行第2次时会由于工作表名称重名而发生错误。对于此类添加工作表的情况,在添加之前通常将已经生成的结果工作表删除。当需要删除某个工作表时,使用Delete方法,其语法为

    Worksheet.Delete

        其中,Worksheet指需要被删除的工作表。默认情况下,当删除工作表之前,Excel会出现如图所示的警告信息。而在VBA程序执行删除工作表的操作时,同样会出现该警告信息。当需要删除大量的工作表时,该警告信息就变得非常恼人。若需要隐藏该信息,则应将Application. DisplayAlerts设置为False。

        一般地,可以使用For Each的循环结构遍历Worksheet集合中的所有工作表,然后判断其工作表的名称是否为需要保留的工作表的名称,若不是,则删除。

     Application. DisplayAlerts属性

        DisplayAlerts是Excel对象(Application)的一个属性,其表示是否显示特定的警告信息,若该值为True,表示显示警告信息,若为False,表示不显示。
        在VBA编程时,执行的代码同样会触发警告信息,该警告信息会破坏VBA程序的连续性。因而,在程序开始前,将DisplayAlerts设置为False,然后在结束程序前将DisplayAlerts设置为True。
     

     

     

     

    展开全文
  • VBA 数据透视的创建

    千次阅读 2021-01-21 15:21:37
    方法 读/写 值类别 默认值 说明 .ColumnGrand ...数据透视在刷新或移动域时自动设置格式 ...如果数据透视在有错误的单元格中显示用户自定义的错误字符串,则该值为 True。 .ErrorString 返回...

    创建一个数据透视表(PivotTable)

    创建方法一

    通常会先创建一个数据缓存(PivotCache),然后再创建透视表(PivotTable

    创建透视缓存的语法如下

    Workbook.PivotCaches.Create(SourceType, [SourceData], [Version])
    

    创建透视表的语法如下

    PivotCache.CreatePivotTable(TableDestination, TableName, ReadData, DefaultVersion)
    

    PivotCaches.Create 中的参数说明

    参数名称必需/可选数据类型说明
    SourceType必需XlPivotTableSourceType数据的来源。_SourceType_可以是下列XlPivotTableSourceType常量之一:
    xlConsolidationxlDatabasexlExternal
    SourceData可选Variant数据透视表缓存的数据地址,以文本表示。
    SourceType 不为 xlExternal 时,是必须参数。
    Version可选Variant数据透视表的版本。 _Version_可以是 XlPivotTableVersionList 常量之一。

    PivotCache.CreatePivotTable 中的参数说明

    名称必需/可选数据类型说明
    TableDestination必需Variant数据透视表目标区域 (工作表上将放置生成的数据透视表的区域) 左上角的单元格。 目标区域必须位于工作簿(此工作簿包含由 expression 指定的 PivotCache 对象)的某个工作表中。
    TableName可选Variant新的数据透视表的名称。
    ReadData可选Variant如果为 True, 则创建包含外部数据库中的所有记录的数据透视表缓存;此缓存可能非常大。 如果为 False,则允许在实际读取数据之前将某些字段设置为基于服务器的页字段。
    DefaultVersion可选Variant数据透视表的默认版本。

    XlPivotTableSourceType 的值与说明

    名称说明
    xlConsolidation3多重合并计算数据区域。
    xlDatabase1Microsoft Excel 列表或数据库。
    xlExternal2其他应用程序中的数据。
    xlPivotTable-4148与另一数据透视表相同来源。
    xlScenario4数据基于使用方案管理器创建的方案。

    XlPivotTableVersionList 的值与说明

    名称说明
    xlPivotTableVersion20000Excel 2000
    xlPivotTableVersion101Excel 2002
    xlPivotTableVersion112Excel 2003
    xlPivotTableVersion123Excel 2007
    xlPivotTableVersion144Excel 2010
    xlPivotTableVersion155Excel 2013
    xlPivotTableVersionCurrent-1仅为向后兼容性而提供

    创建方法二

    PivotTables.Add (PivotCache, TableDestination, TableName, ReadData, DefaultVersion)
    
    名称必需/可选数据类型说明
    PivotCache必需PivotCache表示一个数据透视表缓存,而新的数据透视表将基于此缓存。 缓存用于为报表提供数据。
    TableDestination必需Variant数据透视表目标区域(工作表中用于放置所生成的报表的区域)左上角的单元格。 必须在工作表中(此工作表包含由 expression 指定的 PivotTables 对象)指定一个目标区域。
    TableName可选Variant新的数据透视表的名称。
    ReadData可选Variant如果为 True,则创建数据透视表缓存以包含外部数据库中的所有记录;此时缓存可能会很大。
    如果为 False,则允许在实际读取数据之前将某些字段设置为基于服务器的页字段。
    DefaultVersion可选Variant最初在其中创建数据透视表的 Microsoft Excel 的版本。

    透视表样式设置中的部分重要属性

    PivotTable 对象的属性

    属性读/写值类别默认值说明
    .Name读/写String透视表名称
    .ColumnGrand读/写BooleanTrue是否启用列汇总
    .RowGrand读/写BooleanTrue是否启用行汇总
    .HasAutoFormat读/写BooleanTrue数据透视表在刷新或移动域时自动设置格式
    .DisplayErrorString读/写BooleanFalse有错误的单元格是否显示用户自定义的错误字符串
    .ErrorString读/写StringDisplayErrorString 属性为 True 时,如果单元格中有错误而显示的字符串
    .DisplayNullString读/写BooleanTrue包含空值的单元格中是否显示用户自定义的字符串
    .NullString读/写String空字符串 ("")DisplayNullString 属性为 True 时, 在包含 null 值的单元格中显示的字符串
    .EnableDrilldown读/写BooleanTrue是否启用“显示明细数据
    .MergeLabels读/写BooleanFalse数据透视表的外部行项、列项、分类汇总和总计标志使用合并单元格
    .PageFieldOrder读/写LongxlDownThenOver将页字段添加到数据透视表的布局中的顺序
    可以是下列的XlOrder 常量之一: xlDownThenOver或xlOverThenDown
    .PageFieldWrapCount读/写Long0数据透视表中每行或每列的页字段数目
    .PreserveFormattingBooleanTrue透视、排序或更改页字段项等操作刷新或重新计算报表时保留透视表格式
    .SaveData读/写BooleanTrue是否保留数据透视表缓存(即 PivotCache
    如果数据透视表的数据随工作簿一起保存,则为 True。 如果仅保存数据透视表的定义,则为 False。
    .PrintTitles读/写BooleanFalse如果基于数据透视表设置工作表的打印标题,则该属性值为 True。
    如果使用工作表的打印标题,则该属性值为 False。
    .RepeatItemsOnEachPrintedPage读/写BooleanTrue当打印指定的数据透视表时,如果每页第一行上都显示行、列和项标志,则该值为 True。 如果仅在第一页上打印这些标志,则该值为 False。
    .TotalsAnnotation读/写BooleanFalse是否在指定的数据透视表中的每个分类汇总和总计值的旁边显示() (如果报表基于 OLAP 数据源)。
    .CompactRowIndent读/写1当启用压缩行布局表单时,返回或设置透视项目的缩进增量。 读/写。默认值为 1。 此设置的有效值为0到 Microsoft Excel 中指定的最大缩进量。
    .InGridDropZones读/写BooleanFalse此属性用于为 PivotTable 对象切换网格中的拖放区域。 在一些情况下,它还会影响数据透视表的布局。 当 InGridDropZones 属性设置为 True 时,存在网格中的拖放区域。 当此属性设置为 False 时,不存在网格中的拖放区域。数据透视表的布局也会随此属性一起改变。
    .DisplayFieldCaptions读/写BooleanTrue控制是否在网格中显示行和列的筛选按钮和透视字段标题。
    .DisplayMemberPropertyTooltips读/写BooleanFalse控制是否在工具提示中显示成员属性。
    .DisplayContextTooltips读/写BooleanTrue控制是否为数据透视表单元格显示工具提示。
    .ShowDrillIndicators读/写BooleanTrue用于切换数据透视表中深化指示符的显示。
    .PrintDrillIndicators读/写BooleanFalse指定是否使用数据透视表打印钻取标识符。
    .AllowMultipleFilters读/写BooleanFalse如果此属性设置为 True,可将多个筛选应用于一个透视字段
    如果此属性设置为 False,在对已应用了筛选的透视字段应用筛选时,将删除现有筛选,然后应用新筛选。 如果数据透视表中有多个筛选已应用的字段, 则将此属性设置为False将无提示删除数据透视表中的所有筛选器, 而不显示任何警告。 但是通过用户界面删除筛选时,将显示警告。
    .SortUsingCustomLists读/写BooleanTrue控制是否使用 自定义列表对字段的项进行排序, 包括在 初始化数据透视域和数据透视项时,以及之后当用户应用排序时也是如此。
    将此属性设置为 False 可优化包含许多项目的字段的性能, 并且它还允许不需要基于自定义列表的排序功能.
    .FieldListSortAscending读/写BooleanFalse控制数据透视表字段列表中字段的排序顺序。 当此属性设置为 True 时,字段按升序顺序排序。 当它设置为 False 时,字段按数据源顺序排序。
    .ShowValuesRow读/写BooleanFalse是否显示值行。
    .CalculatedMembersInFilters读/写BooleanFalse是否在筛选器中对 OLAP 服务器的计算成员进行求值。
    .RowAxisLayout此方法用于同时为所有现有的透视字段设置版式选项。指定版式行的类型。 xlCompactRow 0 压缩行;xlOutlineRow 2 大纲行;xlTabularRow 1 表格行

    .PageFieldOrder 属性的可选值及其说明

    名称说明
    xlDownThenOver1向下处理行,然后向右逐个处理页或页面字段。
    xlOverThenDown2向右逐个处理页或页面字段,然后向下处理行。

    .RowAxisLayout (报表的显示布局) 属性的可选值及其说明

    名称说明
    xlCompactRow0压缩形式显示
    xlTabularRow1表格形式显示
    xlOutlineRow2大纲形式显示

    添加透视字段(PivotField)及相应设置

    PivotField 对象是 PivotFields 集合的成员
    向透视表中添加字段时,直接如下方式引用字段名称即可

    WorkSheet.PivotTables("透视表").PivotFields("字段")
    

    以下为整理自 Microsoft 帮助文件 中的 PivotField 常用的一些 “读/写” 属性及其说明

    方法读/写值类别默认值说明
    .Orientation读/写XlPivotFieldOrientation返回或设置一个**.XlPivotFieldOrientation** 值, 它代表指定数据透视表中的字段的位置。
    .Position读/写Variant"返回或设置一个Variant值, 它代表其方向 (行、列、页、数据) 中的所有字段中的字段位置 (第一个、第二个、第三个, 等等)。
    .Function读/写XlConsolidationFunction返回或设置对数据透视表字段汇总时所使用的函数(仅用于数据字段)。
    .LayoutForm读/写XlLayoutFormType返回或设置指定的数据透视表项出现的方式,即以表格格式还是以分级显示格式显示。
    .Calculation读/写XlPivotFieldCalculation返回或设置一个**.XlPivotFieldCalculation** 值, 该值代表指定的字段执行的计算类型。 此属性仅对数据字段有效。
    .Value读/写String返回或设置一个 String 值,它代表数据透视表中指定的字段的名称。
    .VisibleItemsList读/写Variant返回或设置一个 Variant 类型的值,该值指定一个字符串数组,字符串代表应用于透视字段的手动筛选中的包含项。
    .DatabaseSort读/写Boolean如果为 True,则允许手动更改数据透视表字段中项目的位置。 如果字段没有手动定位的项,则返回 True 。
    .DataTypeXlPivotFieldDataType返回一个XlPivotFieldDataType 值, 它代表数据透视表字段中的数据类型。
    .DragToColumn读/写BooleanTrue如果指定字段能被拖动到列位置上,则为 True。
    .DragToData读/写BooleanTrue如果指定字段可被拖动到数据位置上,则为 True。
    .DragToHide读/写BooleanTrue如果通过将字段拖离数据透视表可隐藏该字段,则为 True。
    .DragToPage读/写BooleanTrue如果字段可被拖动到页位置上,则为 True。
    .DragToRow读/写BooleanTrue如果字段可被拖动到行位置上,则为 True。
    .DrilledDown读/写BooleanTrue如果指定数据透视表字段或数据透视表项的标志设置为“drilled”(展开或可见),则为 True。
    .EnableItemSelection读/写BooleanTrue如果为 False,则在用户界面中禁止使用下拉字段的功能。
    .LayoutPageBreak读/写BooleanFalse如果每个字段后都插入了分页符,则该值为 True。
    .ShowDetail读/写Boolean获取或设置指定的透视字段对象是否显示详细信息
    .LayoutCompactRow读/写Boolean指定在选择行时是否压缩透视字段(在一列中显示多个透视字段的项目)
    .LayoutSubtotalLocation读/写XlSubtotalLocationType返回或设置与指定字段相关(在其上面或下面)的数据透视表字段分类汇总的位置。
    .Name读/写String返回或设置一个 String 值,它代表对象的名称。
    .NumberFormat读/写String返回或设置一个 String 值,它代表对象的格式代码。
    .PropertyOrder读/写只对属于成员属性字段的数据透视表字段有效。 返回一个 Long 类型的数值,该数值表示成员属性在其所属的多维数据集字段内的显示位置
    .Subtotals读/写Variant返回或设置与指定字段同时显示的分类汇总。 仅对非数据字段有效。
    .RepeatLabels读/写返回或设置在数据透视表中是否对指定的透视字段重复项目标签。
    .SubtotalName读/写String。返回或设置显示在指定数据透视表的分类汇总列或行标题中的文本字符串标志。
    .UseMemberPropertyAsCaption读/写Boolean此属性用于控制是否将成员属性标题用于透视字段的 PivotItem 标题
    .XlPivotFieldDataType读/写BooleanTrue此属性用于指定是否在工具提示中显示透视字段的特定成员属性
    .DisplayInReport读/写BooleanTrue此属性用于指定是否在数据透视表中显示指定的成员属性透视字段
    .HiddenItemsList读/写Variant返回或设置一个Variant类型的值, 该值指定作为数据透视表字段的隐藏项的字符串数组
    .BaseField读/写Variant返回或设置自定义计算的基准字段。 本属性仅对数据字段有效 此属性对于 OLAP 数据源无效
    .BaseItem读/写Variant返回或设置用于自定义计算的基本字段中的项。 仅对数据字段有效。 此属性对于 OLAP 数据源无效。
    .Caption返回一个 String 值,它代表数据透视字段的标签文本。
    .CurrentPage读/写PivotItem返回或设置页字段的当前页显示(仅对页字段有效)。
    .EnableMultiplePageItems读/写Boolean用于指定是否在页面区域中的字段的筛选器下拉列表中显示复选框。
    .CurrentPageList读/写Variant返回或设置对应于项目列表的字符串数组,该项目列表包含于数据透视表的多项目页字段中。若要避免运行时错误, 数据源必须是 OLAP 源, 选择的字段当前必须位于页面位置中, 并且EnableMultiplePageItems 属性必须设置为True。
    .CurrentPageName读/写String返回或设置指定数据透视表上的当前显示页。 该页名称将出现在页字段中。 注意,只有当已存在当前显示页时,本属性才有效。本属性应用于与 OLAP 数据源相连的数据透视表。 如果用未与 OLAP 数据源相连的数据透视表返回或设置本属性,则将导致运行时错误。
    .Formula读/写String返回或设置一个 String 值,它代表 A1 样式表示法和宏语言中的对象的公式
    .Hidden读/写Boolean此属性用于隐藏 OLAP 层次结构的各个级别。
    .IncludeNewItemsInFilter读/写Boolean在将手动筛选应用于透视字段时,此属性允许开发人员指定是应跟踪排除的项目还是应跟踪包含的项目。
    .LayoutBlankLine读/写BooleanFalse___如果在数据透视表的指定行字段后插入了一个空行,则该值为 True。
    .MemberPropertyCaption读/写Boolean设置MemberPropertyCaption属性可控制将哪个成员属性用作给定级别的标题。
    .ServerBased读/写Boolean如果指定数据透视表的数据源为外部数据源,并且只检索与选定页字段相匹配的数据项,则该属性值为 True。
    .ShowAllItems读/写BooleanFalse如果显示数据透视表中的所有项, 即使它们不包含摘要数据也是如此。
    .StandardFormula读/写返回或设置一个 String 值,该值指定使用标准英语(美国)格式的公式,主要影响具有日期或数字格式的项目名称。

    .Orientation 属性中 XlPivotFieldOrientation 参数其值及说明如下

    名称说明
    xlHidden0Hidden,隐藏
    xlRowField1Row,行
    xlColumnField2Column,列
    xlPageField3Page,筛选
    xlDataField4Data,数据
    展开全文
  • 写在前面:本次分享出的内容,您真的非常值得研究。 对于将Excel里面的内容传送至Word的...此部分人的工作流程特点是:在EXCEL里面做好数据分析,然后再把这些内容搬到Word里面,形成最终的文字性报告。 常规的做法...
  • VBA让Excel数据去重.docx

    2020-09-15 15:31:32
    讲解怎么使用VBA处理 数据,主要是Excel中。包括讲解和源代码,有兴趣的可以看看--------后面描述纯属凑字数,看看即可
  • EXCEL表格VBA更新双色球数据源代码
  • 所以针对这个问题,用VBA写了个分列和保存的宏。 一、使用前说明: 1.要分列的列中间不要出现空内容,比如要分第2列部门,里面有A部门,B部门,还有个空内容的,可能导致计算行数不准。 2.分列后的序号...
  • 这篇我们谈谈如何使用VBA打开另一个excel文件,并读取数据。那在此之前,我们测试一下,从当前excel文件读取数据的简单VBA代码。现在有一个九九乘法数据,如下图。 如果我们有两个乘数,需要从九九乘法里面...
  • VBA 生成新的表格

    千次阅读 2011-08-25 11:13:41
    Sub 生成对账单() Dim i As Integer, j As Integer ' 定义循环变量 Dim endRow As Integer Dim count As Integer Sheets(1).Select '激活1工作 Ran
  • pandas 数据分析必备包,用来对二维表数据进行分析整合。 os 更改系统配置信息,如列出工作目录的文件,更改工作目录等。 json 用来处理json数据,或者把字符串等其他格式的数据转化为json数据。 base64 用来对图片...
  • 最近使用VBA自动处理EXCEL的数据,用着用着觉得很方便,于是写了一些小脚本,不过水平有限,代码很冗余。 个人使用的脚本一般都是符合个人使用的特定场景,不像高手写的有很强的复用性。 不过既然写了,方便了个人的...
  • 在处理财务数据时,可能需要根据某一行中的数据对整个工作进行分类创建各自的工作 待处理的表格 解决思路及代码 1、对整个excel进行分析,判断是否存在一些无意义的工作(这里只是为了让最终生成的工作...
  • 如何用VBA数据透视

    千次阅读 2015-01-08 11:43:54
    数据 (第一行数据有空白格子,最好还是填上0。因为制作原理是它要先选定从a1格子开始一块全部有内容的矩阵,即A1:M2) 效果 代码 Sub Generate() Dim ptcache As PivotCache Dim pt As PivotTable Dim prange...
  • VBA研究】用VBA创建数据透视

    万次阅读 2015-03-20 10:53:29
    有个拣货报表,想先从货品信息中分离出颜色信息,再根据储位、名称和颜色创建一个数据透视,由于数据是变化的(结构不变,记录数会变),每次重新创建很麻烦,因此想做个工具,用VBA分离颜色并创建数据透视,供...
  • 使用VBA提取文件夹内所有word文档中的表格数据
  • 前面两篇博客,我们介绍了VBA和使用VBA获取当前工作和另一个工作簿的工作中的数据。这篇我们来说说如何使用VBA模糊查找当前工作中有用的数据。我们有时会遇到这样的情况。我们手头有很多很多老的excel文件,...
  • 然后遍历数据区,格式化数据,输出即可。 小数据还行,大数据没测试。 另,使用fso创建的文本文件编码为ANSI,ajax解析json时出现乱码无法正常解析。 Sub ToJson() '创建UTF8文本文件  ...
  • 编程往往与数据库密不可分,一个项目往往有很多的,很多时候通过excel来维护结构,记录表名,字段,类型,注释等等信息,将结构整理到excel已经是件很累的事了,如果整理好的结构只是用来查字段当字典用,那...
  • Sub AutoInputValNewExcel() Dim sh1, sh2 As Worksheet Dim ws1, ws2 As Workbook Set ws1 = Workbooks(1) Set ws2 = Workbooks(2) Set sh1 = Workbooks(1).Sheets(1) iRows = sh1.UsedR...
  • 3:当点击"生成凭证"按钮时, 出纳表格的每条数据按凭证模板生成一个凭证, 生成的凭证如下图: 打印时,会每个凭证打印一页 4. 实现该功能的VBA源码: Dim r As Integer Dim i As Integer Dim j As Integer Dim ...
  • 此脚本用于根据sheet1中的第一列从第三行开始的数据新建工作簿并重命名 '2.复制第一列和对应的列的值 '3.调整新建工作簿的列宽 ScreenUpdating = False '关闭屏幕刷新 Dim sCount As Long '列数 Dim sCol As ...
  • 文章目录1、背景首次签合同人员.xlsx模板:简易劳动合同.docx2、python代码问题3、word vba1) 根据模板批量生成文件2) 批量打印文件4、总结:5、PS: 1、背景 行政部的同事每次都要根据excel里面的信息,制作word版的...
  • Public Sub 更改名称() For i = 2 To Worksheets.Count Worksheets(i).Name = Worksheets("目录").Cells(i, 2).Value Next End Sub

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,807
精华内容 1,122
关键字:

vba根据数据表生成表格