當(dāng)前位置:
首頁(yè) >
vba九九乘法表代码_VBA代码模块化--数据透视表
發(fā)布時(shí)間:2024/7/19
51
豆豆
生活随笔
收集整理的這篇文章主要介紹了
vba九九乘法表代码_VBA代码模块化--数据透视表
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本周工作中,用到了數(shù)據(jù)透視表的操作,這里匯總一下,學(xué)習(xí)途徑來(lái)自網(wǎng)絡(luò),學(xué)習(xí)成果我也樂(lè)于分享一二~,代碼整理為模塊,供大家舉一反三,可以套用。
① 創(chuàng)建數(shù)據(jù)透視表,及基本設(shè)置
先展示數(shù)據(jù)源和結(jié)果吧:
對(duì)應(yīng)的code如下:
Sub pivot() ' 創(chuàng)建數(shù)據(jù)透視表 ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _"Sheet1!R1C1:R8C4", Version:=6).CreatePivotTable _TableDestination:="sheet1!R2C6", TableName:="嘗試", DefaultVersion:=6 '注意,數(shù)據(jù)區(qū)域及透視表位置,使用的格式都要是R1C1這種樣式,否則報(bào)錯(cuò)' 拖拽字段。可以分開(kāi)寫,如下: ' 添加列 Sheets(1).Activate With ActiveSheet.PivotTables("嘗試").PivotFields("科目") '表示對(duì)于名稱為"嘗試"的數(shù)據(jù)透視表中名為"姓名"的字段進(jìn)行操作.Orientation = xlColumnField '表示字段在數(shù)據(jù)透視表中的位置為列字段(行字段是xlRowField).Position = 1 '表示該字段所在列字段的位置為第1個(gè)位置 End With' 添加行 With ActiveSheet.PivotTables("嘗試").PivotFields("姓名").Orientation = xlRowField.Position = 1 End With With ActiveSheet.PivotTables("嘗試").PivotFields("性別").Orientation = xlRowField.Position = 2 End WithActiveSheet.PivotTables("嘗試").AddDataField ActiveSheet.PivotTables("嘗試").PivotFields("分?jǐn)?shù)"), "求和:分?jǐn)?shù)", xlSumWith ActiveSheet.PivotTables("嘗試").RowAxisLayout xlTabularRow '報(bào)表布局-以表格形式展示。參數(shù):xlTabularRow表格,xlOutlineRow大綱,xlCompactRow壓縮(默認(rèn)).RepeatAllLabels xlRepeatLabels 'xlRepeatLabels重復(fù),xlDoNotRepeatLabels不重復(fù)(默認(rèn)).ColumnGrand = False '總計(jì)。.ColumnGrand列.RowGrand行'默認(rèn)都啟用True'也可以這樣:一次性設(shè)置所有行變量pf = Array("姓名", "性別")For Each pfi In pfWith .PivotFields(pfi).Orientation = xlRowField ' 設(shè)置為行變量.Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False) ' 去掉默認(rèn)的分類匯總End WithNext End With② 值篩選--篩選器中
透視表中,篩選器字段又叫頁(yè)字段,不清楚這個(gè)情況的我剛開(kāi)始吃了些苦頭,死活搜索不到自己想要的。要對(duì)數(shù)據(jù)透視表的頁(yè)字段(篩選字段)進(jìn)行篩選,先使用ClearAllFilters方法清除原字段的選項(xiàng):PivotFields("×××").CurrentPage = "(all)",然后可以直接使用CurrentPage屬性設(shè)置要顯示的篩選值即可。
' 例子:對(duì)透視表,將日期篩選為昨天,日期選項(xiàng)為單選。 Sub 設(shè)置日期() With Sheets("數(shù)據(jù)統(tǒng)計(jì)").PivotTables("數(shù)據(jù)透視表3").PivotFields("日期").EnableMultiplePageItems = False '僅單選n = .PivotItems.CountFor i = 1 To n '遍歷所有值If .PivotItems(i).Name = "(blank)" Then '處理可能遇到的討厭的空白.PivotItems("(blank)").Visible = FalseElseIf CDate(.PivotItems(i).Name) = Date - 1 Then '如果日期為昨天。小心!name屬性得到都是文本,即使源數(shù)據(jù)是日期,所以這里要轉(zhuǎn)化下.PivotItems(i).Visible = TrueElse.PivotItems(i).Visible = False '當(dāng)然最好每一項(xiàng)都進(jìn)行設(shè)置,不過(guò)這里multiple是falseEnd IfEnd IfNext End With End Sub③ 值篩選--行標(biāo)簽中追加
Sub 行標(biāo)簽追加()Dim n, iApplication.ScreenUpdating = FalseActiveWorkbook.RefreshAllWith Sheets("數(shù)據(jù)匯總").PivotTables("數(shù)據(jù)透視表1").PivotFields("日期") '字段.EnableMultiplePageItems = True ' 允許多選,追加顯示項(xiàng)n = .PivotItems.Count '有多少個(gè)不重復(fù)的項(xiàng)For i = 1 To nIf .PivotItems(i).Name = Date Then '判斷條件,如果是昨天.PivotItems(i).Visible = TrueEnd IfNextEnd WithApplication.ScreenUpdating = True End Sub我本菜鳥(niǎo),但樂(lè)意學(xué)習(xí)。堅(jiān)持用技術(shù)的復(fù)雜性代替手工操作的復(fù)雜性,繼續(xù)加油!
總結(jié)
以上是生活随笔為你收集整理的vba九九乘法表代码_VBA代码模块化--数据透视表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 头发剪短了要快速生发_怎样生发效果最好最
- 下一篇: android 自定义控件 焦点,and