Tag: excel 2003

Excel: – 维护图表和手绘线条的相对位置

我在Excel中有一个股票图表。 某些高点和低点通过手工绘制线(从绘图工具栏)连接。 当我改变数据范围或调整图表时,这些线条显然保持原来的位置。 而图表中的酒吧得到调整。 有没有办法维护图表和手绘线的相对位置? 也许,将图表中的条形与手工绘制的线条合并在一起? 谢谢, 维尼特

在Microsoft Excel 2003中插入一个文件

我想在Excel 2003工作表中插入.csv文件。 我知道如何添加一个链接的对象,但我希望该文件应该驻留在工作表而不是任何目录中,以便能够在不复制或链接源.csv文件的情况下在另一台计算机上打开它。 欢迎大家提出意见。

Excel评估树错误? 嵌套调用addin函数调用20,000次

Excel 2003,Windows XP SP3: 我们有一些Excel用户,他们使用非常大的复杂的Excel工作簿。 一个典型的工作簿可能有60多个工作表,并且大小可以超过70MB。 我们制作了一个.xll插件,并在整个这些电子表格中使用。 我们的插件具有丰富的debugging和日志function。 我们注意到一些非常奇怪和不稳定的行为,我们一直无法复制。 我在这里描述一个典型的问题的performanceforms。 一个电子表格的范围之一有一个公式数组,涉及对函数的嵌套调用,Excel函数和我们自己的插件函数。 公式可能看起来像这样: {=IF(cndtn,AddinFcn1(rng,INDIRECT(VLOOKUP($A2549,rng2,col,0)),AddinFcn2(param)),-1)} AddinFcn1和AddinFcn2是我们的插件中的注册函数。 我们可以监视Excel调用每个插件函数的次数,并将所有调用与导致调用的单元格或范围评估进行匹配。 如果我们在一个干净的Excel中加载插件和工作簿,然后计算工作簿(“F9”),计算可能完成罚款的第一,第二,甚至10倍,我们可以看到一个调用AddinFcn2和AddinFcn1源于对包含上述公式的范围的评估。 但有些时候,事情开始疯狂了:在第三个“F9”中,内部的AddinFcn2可能突然被excel调用了19次,然后在第四个“F9”中,内部的AddinFcn2被调用了20,000次。 或者,也许一切都很好,直到第10个“F9”,在评估范围内突然内部AddinFcn2被调用了19,000次。 奇怪的是,外部函数AddinFcn1仍然只被调用一次。 当发生这种情况时,似乎没有韵律或理由,或者函数被调用了多less次。 进入调用的数据,实际上是电子表格中的数据,每个F9都是相同的 – 从一个计算到下一个计算都不会发生变化。 有没有人看过类似的行为? 有没有人猜测什么可能导致Excel(不必要地)重新计算内部函数调用数十甚至数十万次?

Excel挂起…另一个评估树的bug?

Excel 2003,Windows XP SP3: 我们有一些Excel用户,他们使用非常大的复杂的Excel工作簿。 一个典型的工作簿可能有60多个工作表,并且大小可以超过70MB。 我们制作了一个.xll插件,并在整个这些电子表格中使用。 我们的插件具有丰富的debugging和日志function。 我们一直在生产插件的版本,并使用它们将近10年。 我们的Excel界面的基础设施因此被certificate是坚实的和稳定的。 有些情况下,Excel挂在一段特定的代码中; 也就是说,它挂在Excel本身的代码中,并挂在一个特定的代码段。 在这种情况下,有一个密码循环(可​​能是20个机器指令,没有“调用”),它会无休止地执行。 该代码似乎是行走一个循环链表,通常只有less数节点,例如只有四个节点。 我看起来像是在走一个与评估树(某些部分)相对应的链表 – 我根本不确定。 我已经能够用一个令人难以置信的简单插件(3个返回固定数据的注册函数)和一个令人难以置信的简单电子表格(5个单元格,3个使用3个插件函数的公式)来performance行为。 只有在完成对工作表中的所有单元格的评估以及用结果更新屏幕之后,Excel才会挂起。 无论使用哪种Excel SDK版本(v5.0,v12.0和v14.0都经过testing),它都会挂起。 以下是示例代码的链接: Sample .xls工作簿和相应的.xll插件和插件的源代码 插件的来源是微不足道的: #include <windows.h> #if SDK_VER == 5 #include "xlcall_v5_0.h" #elif SDK_VER == 12 #include "xlcall_v12_0.h" #elif SDK_VER == 14 #include "xlcall_v14_0.h" #endif extern "C" __declspec(dllexport) int xlAutoOpen(void) { #define N_FUNCTIONS 3 […]

Excel反复打开和closures工作簿时崩溃

在Excel2003中,我看到一个奇怪的事情发生在我写的自动修改工作簿列表的macros中。 我有一个12000个工作簿的列表进行修改,所以我需要依次打开每个工作簿,做内部的东西,然后保存和closures。 在处理了大约1000个工作簿之后(有时还有几百个工作簿),Excel只会崩溃。 这是我正在做的伪代码 public sub ProcessWorkbooks() dim i as Integer dim targetWorkbook as Workbook With thisWorkbook.Sheets("Main").Range("A15") Do While .Offset(i, 0).Value <> "" set targetWorkbook = Application.Workbooks.Open(.Offset(i, 3).Value) If targetWorkbook Is Nothing Then Goto NextIteration End If Application.ScreenUpdating = False Call ProcessWorkbook(targetWorkbook) Call targetWorkbook.Save DoEvents Call targetWorkbook.Close Application.ScreenUpdating = True NextIteration: i = i + […]

PivotCaches.Add不匹配错误 – 为什么之前没有发生?

运行下面的代码时出现不匹配错误13。 整个代码模块已经被使用,并且大部分时间都保持不变,我最近没有改变任何东西,而且我是这个工作簿的唯一用户。 非工作代码: Private Sub CreateMIAPivots(MIABook As Workbook, MIASheet As Worksheet, MaxRow As Long) Dim wksPivotSheet As Worksheet Dim PivotRange As Range Set wksPivotSheet = MIABook.Sheets.Add wksPivotSheet.Name = "Summary" wksPivotSheet.Tab.Color = RGB(255, 0, 0) Set PivotRange = MIASheet.Range("A1:Y" & MaxRow) With MIABook.PivotCaches.Add(xlDatabase, PivotRange) 'Error sets here 'More code below MaxRow是可变的,但我已经检查了大约600到大约7000行的文件,如果我尝试以任何其他方式与其交互,则Range对象将生成一个有效的引用。 我在这里回顾了一些相关的问题: 我只在2003年工作,而且错误是不同的。 在尝试创build新工作簿之前,我已经确认在工作簿中没有其他PivotCaches 。 我已经成功地使用这里接受的解决scheme来获得这个工作:使用命名的范围(参见下面的后续代码) […]

对我的情况不同的方法

在Excel表中我有列,每列代表一个星期的数量。 我想要计算每行和每周的所谓4 wk平均值,这是我使用的公式: ((value * Tvalue)+(value * Tvalue)+(value * Tvalue)+(value * Tvalue) )/(Tvalue) (这不是实际的公式,而是简化的,这不是很重要)。 这是检查,使事情有点复杂。 如果weeknr的值为零,则跳过它,但是如果下一个值也是零,则只需跳过该公式,并将其设置为零(或“false”等文本)。 所以另外一个必须要考虑的事情是,如果一个值为零,那么下一个星期的值将被取代。 示例(请参阅包含文件):我想为第12周的第三个值计算公式(mov 4wk avg),这将使公式(0.2 * 6)+(0.3 * 6)现在在第14周时为零我跳过它,公式将是: (0.2 * 6)+(0.3 * 6)+(0.6 * 6)+(0.9 * 6)/(6) 。 希望这是有道理的。 现在我在VBA中做了很多variables和if语句。 有没有更简单更有效的方法去做到这一点? 示例表https://dl.dropbox.com/u/3121767/Book1.xlsx PS我知道示例表是2007/2010版本,但我需要在2003年完成这个

将多个Excel表合并成汇总表

我想知道是否有人可以帮助我。 我正在使用下面的代码来允许用户从多个Excel工作簿复制并将数据合并到汇总表中。 Sub Merge() Dim DestWB As Workbook, WB As Workbook, WS As Worksheet, SourceSheet As String Set DestWB = ActiveWorkbook SourceSheet = "Input" startrow = 7 FileNames = Application.GetOpenFilename( _ filefilter:="Excel Files (*.xls*),*.xls*", _ Title:="Select the workbooks to merge.", MultiSelect:=True) If IsArray(FileNames) = False Then If FileNames = False Then Exit Sub End If […]

计算两个date之间发生date范围的天数

我有一个数据表,其中包含一个任务的开始和结束date列表。 我需要计算开始date和结束date之间有多less天是我们圣诞假期的一部分(12月11日到1月7日) 因此,例如,当开始date是2012年12月10日,结束date是12/01/2013时,28天是在这些date之间。 当开始date是2012年12月15日并且结束date是12/03/2013时,那么在这些date之间有22天的日子。 如果开始date是2012年12月10日,而结束date是2014年12月1日,则有56天是在这些date之间(因为有两年的范围)。 我需要用一个公式来做这件事,因为我已经设定了要求。 最初,我决定使用圣诞节(12月25日)的次数,每次出现只计算4周。 我使用的公式是 =FLOOR((E12-A25)/365,1)+IF(OR(MONTH(E12)=12, MONTH(A25)=12), IF(AND(DAY(A25)<=25,DAY(E12)>=25),1,0), IF(OR(MONTH(A25)>=12, IF(MONTH(E12)<MONTH(A25), MONTH(E12)+12, MONTH(E12))>=12),1,0))*28 但是,如果范围的开始和结束date落在这两个date之间,显然这没有帮助。 有什么build议么? 我处于死胡同

如何使用Excel VBAselect数据透视表字段中的最后一项?

我有一个数据透视表“date/时间”数据透视表。 我需要一个macrosselect该字段的最后一个项目。 我试过下面的代码,但不工作 Sub Test() Dim i As Long i = ActiveSheet.PivotTables("PivotTable1").PivotFields("Date/Time").PivotItems.Count With ActiveSheet .PivotTables("PivotTable1").PivotFields("Date/Time").PivotItems(i).Visible=True End With End Sub 请帮我一下 我找不到我的错误。