ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 222|回复: 1

数据透视中指定操作源数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-2-24 11:17 | 显示全部楼层 |阅读模式
本帖最后由 bartonsk 于 2024-2-24 14:45 编辑

请教各位网友和老师,附件是一个原始文件
想录制一个宏,放在个人宏文件簿里作为功能使用,问题是将下述代码放到 "个人宏文件簿"里面的时候,操作文件簿都是personal.xlsb,而不是源文件,
但是如果直接在源数据里面建宏使用,就是正常的.
请教一下如何改进?

Sub 数据汇总()
   
    Rows("4:4").Select
    If (Cells(4, 1) <> "") Then
       MsgBox "已经处理过"
       Exit Sub
    End If
    Selection.Delete Shift:=xlUp
    Range("E3").Select
    ActiveCell.FormulaR1C1 = "BS"
    Range("A3").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range("A4").Select
    Selection.End(xlDown).Select
    Selection.ClearContents
    Dim sht As Worksheet
    Set sht = ThisWorkbook.Sheets(1)
     Dim rngData As Range
    Set rngData = sht.Range("A3").CurrentRegion
     ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        rngData, Version:=xlPivotTableVersion14). _
        CreatePivotTable TableDestination:=sht.Range("G3"), TableName:= _
        "数据透视表1", DefaultVersion:=xlPivotTableVersion14
        
    Cells(3, 7).Select
    ActiveWorkbook.ShowPivotTableFieldList = True
    With ActiveSheet.PivotTables("数据透视表1").PivotFields("BS")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("数据透视表1").AddDataField ActiveSheet.PivotTables("数据透视表1" _
        ).PivotFields("    成交"), "求和项:    成交", xlSum

End Sub


testsj.rar

113.95 KB, 下载次数: 1

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-25 17:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本想偷懒,利用数据透视表写汇总,结果两个工作簿之间切换问题一直解决不了.最后无奈,自己换个思路,不涉及工作簿之间的引用.
Sub 分时内外盘处理()
'由通达信导出的内外盘自动处理
    If Cells(1, 2) <> "" Then
        MsgBox "适用程序错误,请重新检查"
        Exit Sub
    End If
    Columns("G:J").Select
    Selection.ClearContents
    Rows("4:4").Select
   
    Selection.Delete Shift:=xlUp
    Range("E3").Select
    ActiveCell.FormulaR1C1 = "BS"
    Range("A3").Select
    Selection.End(xlDown).Select
    Selection.ClearContents
   
    Dim sumb, sums  'sumb sums 为统计买卖数量
    Dim count As Integer
    sumb = 0
    sums = 0
    count = 4 'count 记录不为空的数量
   
   While Cells(count, "C") <> ""
        If Cells(count, "E") = "B" Then
            sumb = sumb + Cells(count, "C")
        End If
        
        If Cells(count, "E") = "S" Then
            sums = sums + Cells(count, "C")
        End If
        count = count + 1
    Wend
  Range("G3") = "统计结果"
     Range("H3") = "求和"
     Range("G4") = "B"
     Range("G5") = "S"
     Range("G6") = "差幅"
     Cells(4, "H") = sumb
     Cells(5, "H") = sums
     Cells(6, "H") = sumb / sums - 1
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-30 04:16 , Processed in 0.026120 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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