无法将切片机连接到多个透视表-错误#424 "需要对象"
我正在尝试使用此处描述的方法将切片器连接到多个数据透视表:http://dailydoseofexcel.com/archives/2014/08/05/slicers-and-slicercaches/ 首先,我遍历我的数据透视表并为每个数据透视表创建一个切片器: wkbDash.SlicerCaches.Add(wksPivots.PivotTables(sPTName), sSlicerName). _ Slicers.Add wksSlicers, , sSlicerName, sSlicerName, 1, 1, 50, 100 然后我遍历我的切片器并尝试将它们连接到每个数据透视表 问题:我在此行收到错误 #424“需要对象": wkbDash.SlicerCaches(objSlicer).PivotTables.AddPivotTable (wksPivots.PivotTables(varPTNames(i, 1))) 将切片器连接到数据
1306 2022-08-11
编程技术问答社区
QuantLib中的FDDividendAmericanEngine函数
如何调用跟随函数: 功能:** FDDividendAmericanEngine ** 我可以像这样调用另一个函数 blackScholesId = Application.Run( _ "qlGeneralizedBlackScholesProcess", "blackScholes", _ blackVolId, 36, "Actual/365 (Fixed)", 35932, 0.06, 0) FDDividendAmericanEngine 函数不在 QuantLib 的函数列表中 https://www.quantlib.org/quantlibxl/allfunctions.html 但下面的链接似乎表明可以调用它: http://www.quanttools.com/HTMLHelp/html/CT.06069.htm 解决方案 在你提供的链接中的说明里写的很清楚: 在 Excel 中,函数被命名为 - CT
142 2022-08-11
编程技术问答社区
未找到OLEDB.oracle提供者
我在访问 Oracle 数据库的 Excel VBA 应用程序中遇到了一个奇怪的问题.该应用程序在开发和测试中运行良好,但是当它安装到 VM 上以供支持使用时,它说它找不到数据提供者或数据提供者可能没有正确安装. 通常,问题是没有安装 Oracle 客户端,缺少 OLE 数据库提供程序,但这已全部安装,没有任何阻塞.SQL Developer 可以访问数据库,所以我很困惑可能是什么问题. 正在使用的是 Oracle 12c 客户端,正如我所说 - 在开发和测试中一切正常. 有人可以帮我解释一下吗? 解决方案 问题出在 Excel 2010 上.一位同事安装了 64 位版本的 Office 2010,而不是标准版本.安装后,它起作用了.所以,安装 Office 2010 时要小心
204 2022-08-11
编程技术问答社区
VBA自动过滤Excel 2013?
我一直在使用这样的行: Cells.AutoFilter 11, "0" 暂时将第 11 列自动过滤为“0". 我最近更新到 Microsoft Office 2013,现在我收到此行的 AutoFilter method of Range class failed 运行时错误.这是与 Office 2013 的兼容性问题还是其他问题? 编辑:我应该澄清一下,我没有收到我已经运行的程序的错误,而是我以前使用过但现在不适合我的行. EDIT2: 代码: Dim firstRow As Integer Dim lastRow As Integer Dim firstCol As Integer Dim lastCol As Integer Dim allRange As Range Dim vRange As Range Dim bRange As Range Dim commentsCol As Integer Dim commentsColRng As R
116 2022-08-11
编程技术问答社区
Excel宏在两台电脑上的表现不同
我的 excel 文件有问题.去年我编写了一个宏来选择工作簿中所有以绿色作为标签颜色的工作表.直到昨天,每台计算机上的一切都运行良好.实际需要修改该文件的计算机开始采取不同的行动,只选择第一个工作表.我再次卸载并安装了excel,但它没有改变任何东西.我们在带有 Office 2013 家庭版和商业版的 Windows 7 Pro x64 上运行. 这是我的代码: Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim selection As Boolean selection = False For Each ws In ActiveWorkbook.Worksheets If ws.Tab.Color = 5296274 Then If selection = False Then
322 2022-08-11
编程技术问答社区
VBA嵌套的IF语句
我想在特定单元格中包含特定值时显示一个消息框.我已经用下面的代码做到了; If Range("P8") = "Y" Then MsgBox "Message here" End If 这是在 Worksheet_Change 子中,因此每次另一个单元格值更改时都会显示消息框.我试图通过添加一个布尔变量来解决这个问题,当第一次显示消息框时设置为 true; If Range("P8") = "Y" Then If messageshown = False Then messageshown = True MsgBox "Message here" Else End If Else End If 但是,每次我更改工作表中的单元格时,消息框仍会显示.我有一种感觉,这与我编写嵌套 if 语句的方式有关,但尝试了各种不同的方式和放置 else 和 end if 的位置的顺序,但无济于事. 解决方案 试试这个
516 2022-08-11
编程技术问答社区
模拟VBA的regex的一般正向查找结果
关于 VBA 中的lookbehinds 有很多问题.问题是,虽然有正面和负面的前瞻,但 VBA 不支持 lookbehinds. 人们提出的大多数问题都旨在解决从文本中提取字符串的非常具体的问题,而 Stack Overflow 社区一直是 非常 有助于为这些特殊情况提供解决方法.我的问题是,您是否可以在 VB 中编写一个函数,通过接受正则表达式模式作为参数并在结果字符串中执行某种查找替换来模拟正向后视,仅返回所需的匹配组,同时省略(必需但未捕获)前缀? 解决方案 下面的函数接受三个参数来满足这个问题:要匹配的字符串、不可捕获前缀的正则表达式模式和正则表达式模式的后续捕获组. Function LookBehindRegex(ByVal inputText As String, nonCaptureRegex As String, _ captureRegex As String) 'Non capturing lookbehind to retriev
114 2022-08-11
编程技术问答社区
Excel将数据从列表对象A(tableA)的几列中逐一复制到列表对象B(tableB)的一列中
我有一个包含几张工作表的工作簿,每张包括一个列表对象(一个表格) 我的目的是从不同的列表对象中获取数据并将其粘贴到另一个列表对象中.或者更准确地说,在另一个表中一个接一个地复制多个表的几列. 到目前为止,我正在尝试这个: 'defining the names of the list objects Dim OriginTable As ListObject Set OriginTable = ThisWorkbook.Sheets("claims").ListObjects(1) Dim destinationTable As ListObject Set destinationTable = ThisWorkbook.Sheets("COMM").ListObjects(1) 'inserting one row in case the table is empty. If destinationTabl.ListColumns(1).DataBodyRange I
208 2022-08-11
编程技术问答社区
Excel VBA ListRows.添加失败
我可能遗漏了一些简单的东西,但 ListRows.Add 让我很伤心.函数如下: Sub addEmployee(employeeName As String, tableToAddTo As ListObject) Dim newRow As ListRow Set newRow = tableToAddTo.ListRows.Add() newRow.Range.Cells(1, 1).Value = employeeName tableToAddTo.Sort.Apply End Sub 在大多数情况下,这可以正常工作.但是,每当该函数在我的工作表中的某个表上运行时,调用 ListRows.Add 之后的行永远不会执行(至少这是调试器所指示的),并且该行不会被添加到表中.有什么想法/想法吗? 更新: 这是我在发帖后学到的东西.如果我为 Sub 提供存根数据,它可以正常工作.例如: Sub driver() Dim myTabl
324 2022-08-11
编程技术问答社区
VBA的ByRef参数类型不匹配
最初在我的主要代码部分中,我有一个丑陋的 if 语句 - 尽管它会运行很丑陋.我决定让它成为我要调用的函数,这导致我收到错误“编译错误:ByRef 参数类型不匹配".我的假设是需要正确引用该函数,尽管我一直在阅读文档并且看不出为什么>.
148 2022-08-09
编程技术问答社区
Excel add-in's和VBA引用的范围是什么?
当我安装插件(通过复选框)时,控制插件安装多长时间的规则/机制是什么?似乎是安装在应用程序级别的,也就是说它适用于excel应用程序中的任何工作簿,直到您自己取消选中它.如果这是正确的,这意味着只要用户自己安装插件就可以了;但他们必须在第一次安装它(这可以通过编程方式完成). 关于 VBA 引用,我想这些不需要每次都“检查"——这意味着它在文档的范围内.但如果这是真的,为什么人们建议在软件准备好分发时使用后期绑定方法?后期绑定真的只是为了让它与不同的版本兼容,但不一定是为了让 DLL 被“检查"作为参考?在这样的假设下,只要大家都和我用的是同一个版本的Excel,那么放弃后期绑定,直接手动添加引用会不会安全? 解决方案 加载项安装到应用程序级别.如果需要,您可以使用 Ribbon XML 微调加载项如何向各种工作簿公开(或不公开). 只要用户自己安装插件就可以了;但他们必须第一次安装它 是的,他们必须安装它. 关于 VBA 引用,我想这些不需要每次都“检查
142 2022-08-09
编程技术问答社区
如何从SFTP网站加载文件到Excel Power查询
谁能帮我解决这个问题?我正在尝试从 SFTP 站点将文件加载到 Excel Power Query,但没有看到任何选项.以下是示例 WINSCP SFTP 站点凭据: File Protocol: SFTP Host Name: ftp.test.com Port Number: 22 Username: Test1 Password: XXXX 如以下代码片段所示,我可以从本地 C 驱动器加载它,但你能告诉我如何从 SFTP 驱动器站点加载它吗? let Source = Csv.Document(File.Contents("C:\Users\Documents\Winscp\acct_dept.dat"),[Delimiter="|", Columns=7, Encoding=1252, QuoteStyle=QuoteStyle.None]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1",
158 2022-08-09
编程技术问答社区
Excel Power Query-如何基于连接创建最终表格
您能否帮助我根据以下屏幕截图中提到的逻辑使用 Excel Power Query 创建最终表格: 解决方案 我自己解决了.以下是步骤:1)我创建了一个唯一的国家代码列表,其中包含 1 列(起源和目的地)2) 与 Origin 表左连接,然后从公用表中获取目标代码3) 添加了一个自定义列来获取除 origin = Destination 之外的所有行. 通过这种方式,我得到了 Outbound 列值.
156 2022-08-09
编程技术问答社区
如何使用VBA访问存在于报告过滤器中的透视字段的透视项目
我使用以下代码打印每个数据透视字段中存在的数据透视项及其可见状态.我在报告过滤器中有 5 个数据透视字段. 问题是,它正在正确获取枢轴字段的数量.但是当涉及到枢轴项目的数量时,每个枢轴字段都返回 0.实际上,每个字段都有很多项目.我不想打印可见项目.但是项目及其可见状态. Dim pf As PivotField Dim pt As PivotTable Dim pi As PivotItem Set pt = Sheets("Reasons").PivotTables("PivotFields") For Each pf In pt.PageFields For Each pi In pf.PivotItems Debug.Print pi.Name & " : " & pi.Visible Next Next 解决方案 在下面的链接中查看我的代码,它可以让您在无法使用 Slicers 的情况下有效地同步数据透视表http://bl
112 2022-08-08
编程技术问答社区
当字段在水平和垂直轴上时,如何创建透视表
我正在使用需要在数据透视表中转换的表格 但是,我有一些数据透视表中的字段位于列中,而其他一些字段位于行中(日期).然后返回以下数据透视表: 有没有办法让数据透视表读取它?(我也开放 VBA Ideas 开始) 解决方案 您的数据当前在交叉表中“交叉表化",也就是 Pivots 无法处理的.您需要使用 PowerQuery 或 VBA “取消透视"您的数据. 如果您有 Excel 2013 或之后.Google PowerQuery Unpivot,你会发现数百个教程,例如我的好朋友 Chandoo 的教程https://chandoo.org/wp/2015/09/29/unpivot-data-with-power-query/ 使用 VBA.Google Unpivot VBA 并显示数百个结果,包括我一段时间前发布的这个极快的代码:http://dailydoseofexcel.com/archives/2013/11/21/unpivot-枪战/(在“
96 2022-08-08
编程技术问答社区
过滤透视表1004错误
喂!我正在尝试使用宏过滤数据透视表.代码如下: Dim Pi As PivotItem With ActiveWorkbook.Worksheets("TimeToFreq").PivotTables("timetofreq").PivotFields("Transaction status") .ClearAllFilters .PivotItems("success").Visible = True End With 但是我收到错误 1004 无法获取数据透视表类的 PivotFields 属性 截图: 我浏览了很多论坛,我能找到的唯一答案是具有这样名称的数据透视表或字段不存在,但我的存在.我什至尝试使用我拥有的其他字段,但它仍然给我这个错误.我用的是 MS Office 2013 解决方案 错误 1004 是因为你没有 PivotFields("Transaction status") 或者它没有 PivotItems(
208 2022-08-08
编程技术问答社区
根据单元格中的值过滤透视表的VBA代码
我已经搜索并尝试了所有我能找到的关于如何通过引用单元格值的 VBA 代码过滤数据透视表的方法.该表只有一个过滤器,它被称为“名称",该表是我放在一起的记分卡的一部分,数据透视表本身被命名为“数据",工作表被命名为“报告",而我正在引用的单元格是A5.我能够在 VBA 中做一些简单的事情,并且已经在这里和那里使用了几年,但是这件事让我把头发拉了出来.有人可以用简单的话向我解释一下吗 解决方案 首先,有几个 VBA 的替代方案,以防你没有考虑过它们.如果这个想法是让用户在单元格中输入内容或从单元格下拉列表中进行选择,那么请记住,您也许可以添加一个切片器,然后让用户单击他们想要过滤的值那.或者,如果您希望用户从下拉列表中选择一个值,您可以使用第二个数据透视表“伪造"一个,其中只有“名称"字段作为 PageField,其外观和行为非常类似于数据验证下拉列表.然后,您可以使用切片器将该枢轴连接到主枢轴.请参阅我在 http://dailydoseofexcel.com/archives 的
250 2022-08-08
编程技术问答社区
枚举子群pivottable vba
我有一个看起来像这样的数据透视表结构(即数据透视表 UI 的“ROWS"框中有三个条目) 类别 子类别 子子类别 我知道我可以通过(在 VBA 中)分别执行 PT.PivotFields(3).PivotItems()、PT.PivotFields(2).PivotItems() 和 PT.PivotFields(1).PivotItems() 来获取所有类别、子类别和子子类别,其中 PT 是我的数据透视表. 如何找出每个类别中有哪些子类别,以及类别中的子子类别相同? 我尝试使用 PT.PivotFields(3).PivotItems()(1).ChildItems() 但我得到一个错误 和尝试 ParentItem 相同. 知道我该怎么做吗? 我正在寻找的一个例子.使用下面的数据透视表,并(以某种方式)列举: a
114 2022-08-08
编程技术问答社区
excel vba中userForm的数据透视表
知道如何在用户窗体中嵌入/插入数据透视表/数据透视图吗? *代码示例将很高兴分享. 解决方案 您是否尝试在“控件"工具箱中单击鼠标右键时查看可用的 Microsoft Office PivotTable 11.0 控件? 这让您可以在表单中嵌入数据透视表.
76 2022-08-08
编程技术问答社区