Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3664|回复: 14

[已解决]表格筛选,重新排列

[复制链接]
发表于 2016-5-24 09:40 | 显示全部楼层 |阅读模式
本帖最后由 sj_dcy 于 2016-5-24 11:53 编辑

附件表格里有Sheet1和Sheet2,在Sheet1里输入好的数值,怎样能按照Sheet2 格式显示。详见附件,图片。
最佳答案
2016-5-24 11:48
(, 下载次数: 3)

问题

问题

BOM Version Check sheet.rar

13.44 KB, 下载次数: 4

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-5-24 10:30 | 显示全部楼层
Option Explicit

Sub test3()
    Application.ScreenUpdating = False
    Call test1
    Call test2
End Sub

'创建方式1:先创建数据透视表缓存对象,再创建数据透视表
Sub test1()
    Dim data As Range
    Dim pc As PivotCache
    Dim pt As PivotTable
    '指定数据源
    Set data = Sheets(1).[a1].CurrentRegion
    '创建空白工作表,存放数据透视表。
    Sheets.Add after:=Sheets(Sheets.Count)
    '创建 数据透视表的缓存(PivotCache 对象)
    Set pc = ActiveWorkbook.PivotCaches.Create(xlDatabase, data, xlPivotTableVersion12)    'Excel 2007
    '创建一个基于 数据透视表的缓存(PivotCache 对象)的数据透视表。透视表左上角在A1
    Set pt = pc.CreatePivotTable([a1])
    With pt
        .PivotFields("Model").Orientation = xlRowField
        .PivotFields("Side").Orientation = xlRowField
        .PivotFields("PartNO.").Orientation = xlRowField
        .PivotFields("Data").Orientation = xlColumnField
        .PivotFields("BOM Spec (Revision)").Orientation = xlDataField
        '4)其它设置
        '对数据透视表中的所有透视字段重复项目标签
        .RepeatAllLabels xlRepeatLabels
        '同时为所有现有的透视字段设置版式选项:表格形式
        .RowAxisLayout xlTabularRow
        '隐藏行总计
        .RowGrand = False
        '隐藏列总计
        .ColumnGrand = False
        '不显示分类汇总(12个 False)
        .PivotFields("Model").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
        .PivotFields("Side").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
        .PivotFields("PartNO.").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
    End With

End Sub

Sub test2()
    Dim A, d, i, j, x
    '创建字典
    Set d = CreateObject("scripting.dictionary")
    A = Sheets(1).UsedRange
    For i = 2 To UBound(A)
        x = ""
        For j = 1 To 4
            x = x & "," & A(i, j)
        Next j
        d(x) = A(i, 5)
    Next i

    '查询字典
    A = ActiveSheet.UsedRange.Offset(1, 0)
    Cells.Clear
    Rows(1).NumberFormatLocal = "yyyy/m/d"
    [a1].Resize(UBound(A), UBound(A, 2)) = A
    For i = 2 To UBound(A)
        For j = 4 To UBound(A, 2)
            x = "," & A(1, j) & "," & A(i, 1) & "," & A(i, 2) & "," & A(i, 3)
            If d.exists(x) Then A(i, j) = d(x)
        Next j
    Next i
    [a1].Resize(UBound(A), UBound(A, 2)) = A
'    Range("a1").CurrentRegion.EntireColumn.AutoFit
End Sub

BOM Version Check sheet_2.rar (26.08 KB, 下载次数: 3)
回复

使用道具 举报

发表于 2016-5-24 10:31 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2016-5-24 10:36 | 显示全部楼层
爱疯 发表于 2016-5-24 10:30
Option Explicit

Sub test3()

你好   感谢你的帮助     附件我下载下来 怎么无法运行啊    怎么使用

回复

使用道具 举报

发表于 2016-5-24 10:43 | 显示全部楼层
sj_dcy 发表于 2016-5-24 10:36
你好   感谢你的帮助     附件我下载下来 怎么无法运行啊    怎么使用

QQ截图20160524103442.jpg

是这样设置的吗
回复

使用道具 举报

 楼主| 发表于 2016-5-24 10:51 | 显示全部楼层
爱疯 发表于 2016-5-24 10:43
是这样设置的吗

是那样设置的。 我下载下来你的表格---》点击    按钮1   报错。附件图片报错内容。
数据透视表缓存对象是什么意思啊
01.png
02.png
回复

使用道具 举报

发表于 2016-5-24 10:54 | 显示全部楼层
sj_dcy 发表于 2016-5-24 10:51
是那样设置的。 我下载下来你的表格---》点击    按钮1   报错。附件图片报错内容。
数据透视表缓存对象 ...

QQ截图20160524104545.jpg


注释第一行,变绿,再执行

回复

使用道具 举报

 楼主| 发表于 2016-5-24 11:02 | 显示全部楼层
爱疯 发表于 2016-5-24 10:54
注释第一行,变绿,再执行

你好
   怎么让注释第一行变绿啊?
11.png
回复

使用道具 举报

发表于 2016-5-24 11:12 | 显示全部楼层
在Option Explicit的前面,加上'

如果还不行,那么就把 xlRepeatLabels,改成2
回复

使用道具 举报

 楼主| 发表于 2016-5-24 11:27 | 显示全部楼层
爱疯 发表于 2016-5-24 11:12
在Option Explicit的前面,加上'

如果还不行,那么就把 xlRepeatLabels,改成2

你好    更改完了 公式可以运行。我想显示数值,不是显示计数。有什么办法吗
111.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-18 09:36 , Processed in 0.214429 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表