Tag: recursion

计算基于树结构的行和列以生成excel文件

我有一个class的部门: class Department{ string des; string name; string id; List<Department> subDeps; } 如所示的代码,一个部门可能有几个子部门。 现在,我已经从数据库中读取了信息,并得到了根部门对象。 然后我想要像这样生成一个excel工作表: 事实上,根“部门”对象是一个树形结构。 当我尝试将项目写入Excel表格时,我必须决定项目的行和列,但是我无法做到。 而且有人可以帮我一个忙吗?

VBArecursion“For循环”排列?

以下是我的代码。 我想通过recursion方法达到相同的结果,因为嵌套循环的数量从2到最大8。 Sub permutation() c1 = Array(1, 2) c2 = Array(3, 4) c3 = Array(5, 6) c4 = Array(7, 8) c5 = Array(9, 10) c6 = Array(11, 12) c7 = Array(13, 14) c8 = Array(15, 16) With Sheets("Criteria") .Cells.Clear n = 1 For a = LBound(c1) To UBound(c1) For b = LBound(c2) To UBound(c2) For […]

计算除date列表之外的下一个date的公式

有人可以帮助公式计算下一个可用date,排除特定date列表(某些事件的封锁date)。 在附图中,当inputA栏中的计划date时,应根据1计算发票date。最早的发票date是最接近(计划date+ 5天)的事件date。 2.如果计算的发票date是其中一个封锁date,则应将发票date设置为下一个工作date 以上步骤1按公式计算, =MIN(IF($B$2:$B$8-($A2+5)>=0,$B$2:$B$8)) 对于第2步任何帮助表示赞赏。 当在计算的发票date尝试Vlookup以匹配阻止date的值 – 一旦计算第二天。 但是当第二天计算也是封锁的那一天,就会失败。 例如,在第一个数据行中,步骤1中的发票date是截止date为20年1月20日。 在步骤2中,如果使用VLOOKUP匹配20年1月20日并增加1天,则会给出21-Jan-16,这也是阻塞date。 任何build议recursion/迭代计算要完成? 样本数据 被阻止的date是相当大的一年和随机顺序清单。

从VBA中recursion地提取公式中的值

我想recursion地查找一个范围对象的公式,直到find它所组成的每一个单一的值。 由于我对前面句子的语法正确性不太确定(无论如何,我为我的英语道歉),我会试着用一个例子来解释我想要达到的目的(希望这可能是最简单的一个): mysheet = "Sheet1" Sheets(mysheet).Range("A1").Formula = "=+B1" Sheets(mysheet).Range("B1").Formula = "=+C1-C2" Sheets(mysheet).Range("C1").Value = "value:val1" Sheets(mysheet).Range("C2").Formula = "=+D1-D2" Sheets(mysheet).Range("D1").Value = "value:val2" Sheets(mysheet).Range("D2").Value = "value:val3" 你能给我一个提示(或更好的代码草稿)什么样的函数(recursion的,也许?)可以返回一个string(让我们称之为my_formula),使命令 MsgBox(my_formula) 将返回以下内容: A1 = +value:val1 – value:val2 + value:val3 ? 请帮帮我 谢谢 更新后不到一小时 大家好,非常感谢你的回答。 我会指出,单元格中的值是有效的string+我只是简单的操作(+和 – )+所有的依赖是在同一张表+我没有范围,如$ X $ 1。 然而,我知道你们中的一些人(先例,NavigateArrow …)发布的方法/属性,但是我所问的是如何以最好的方式使用这种方法/属性而不会感到头疼的想法。 再次感谢你

使用Excel的VBA中的简单recursion函数不会返回预期的结果

我有一个简单的recursion函数来写在VBA中,它执行以下操作:它必须计算我们必须logging参数“x”以查找log(x)<1的次数 例子 : logcount(5):log(5)= 0,6 …所以函数应该返回1 logcount(89):log(89)= 1,9 …和log(log(89))= 0,28 …所以函数应该返回2 logcount(0,4)应该返回1等… 所以我写了,它不能按预期工作! 它总是给结果+1! 看起来最后一个“Else”块总是被解释。 任何帮助将非常感激 Function logcount(x As Double) As Integer If x <= 0 Then MsgBox "You must enter a positive value" Exit Function ElseIf Log(x) < 1 Then logcount = 1 Else logcount = 1 + logcount(Log(x)) End If End Function

在文件夹内的所有目录中运行excelmacrosrecursion等等

我有一个文件夹,我有很多的子文件夹,里面有超过1000个Excel文件,我想在所有1000个文件和子文件夹中运行一个特定的macros(改变wb中的东西)? 已经为这个问题播下了答案(在VBA上),但是这个答案有两个问题,1.这个解决scheme会非常慢,有没有更快的方法? 也许不是.. 2.这个macros只能运行在匹配的文件夹中的文件,而不是所有子文件夹中的文件,有没有办法做到这一点的子文件夹中的文件? VBA: Sub ProcessFiles() Dim Filename, Pathname As String Dim wb As Workbook Pathname = ActiveWorkbook.Path & "\C:\…\EXCL\" Filename = Dir(Pathname & "*.xlsx") Do While Filename <> "" Set wb = Workbooks.Open(Pathname & Filename) DoWork wb wb.Close SaveChanges:=True Filename = Dir() Loop End Sub Sub DoWork(wb As Workbook) With wb 'Do your […]

使用POI计算EXCEL中recursion公式的值

我有一个EXCEL电子表格,有许多计算一些包括recursion公式(在Excel中完美罚款计算这些没有问题)。 我正在使用Apache Poi API 3.8版来打开现有的电子表格,为计算添加更新的值,保存电子表格,然后将结果读入我的程序。 所有这些工作除了在内存poi版本的电子表格不执行recursion计算。 我正在调用POI代码来计算整个工作簿,每个工作表,然后每个公式单元格,但单元格公式从不计算。 如果我打开已保存的电子表格并进行计算,则公式会精确计算该值。 如果可能的话,我需要避免用户手动打开保存的电子表格。 任何有关这个问题的见解将不胜感激。 这是我试过的代码。 它都运行没有错误,但不计算公式。 该公式已经在电子表格中工作正常,所以我试图强制公式重新计算。 我已经尝试了所有这些变化。 代码运行并执行,但不计算公式 wb.getCreationHelper().createFormulaEvaluator().evaluateAll(); /* //wb.getCreationHelper().createFormulaEvaluator().evaluateAll(); System.out.println(wb.getSheet("Rate Report").getRow(16).getCell(0).getStringCellValue()); System.out.println(wb.getSheet("Rate Report").getRow(16).getCell(1).getNumericCellValue()); FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); //String wbsheets[] = {"Original","Main_DB","Parameters","Translator","Workers Comp.","Rate Report","Notes Fields"}; String wbsheets[] = {"Notes Fields","Translator","Parameters","Rate Report"}; for(String sheetName : wbsheets) { Sheet sheet = wb.getSheet(sheetName); System.out.println("processing sheet: " + sheet.getSheetName()); for(Row r […]

将Rosseta代码FFT实现到VBA Excel中

我试图将FFT Rosetta代码实现到VBA excel中。 我无法完全重build与Rosetta代码完全相同的输出数据。 起初,我认为这是types转换不匹配,但通过1.1缩放input值也将输出值缩放1.1。 我认为可能存在问题的唯一方面是我如何在代码中实现引用的数组,而不是Rosetta写入的。 我发现Rosetta通过在它的奇recursion调用中写出+ step和buf + step来移位数组的地址。 我不了解VBA中的类似构造,所以我简单地传递了一个额外的recursion参数移位,它跟踪地址在传递到下一个recursion调用时的移位。 我的class次执行有什么问题,还是其他的? Rosetta声称它的FFT是内存,但是他们做了额外的数据拷贝并将其存储在out []中。 我将不胜感激解释为什么这是如此。 FFT中的Rosetta代码 void _fft(cplx buf[], cplx out[], int n, int step) { if (step < n) { _fft(out, buf, n, step * 2); _fft(out + step, buf + step, n, step * 2); for (int i = 0; i < n; […]

统计Excel中多个列的唯一值

我试图通过查找可能的解决scheme后使用枢轴表和SUMPRODUCT&COUNTIF公式,但还没有find任何积极的东西。 以下是input数据: Level 1 Level 2 Level 3 Level 4 Level 5 Tom Liz Tom Liz Mel Tom Liz Dan Tom Liz Dan Ian Tom Liz Dan Ken Tom Tim Tom Tim Fab Tom Tim Fab Ken Tom Tim Fab Ken Jan Eve 预期的输出数据如下。 目的是不必提供预先加载的名称列表。 期望的是,程序可以单独根据input数据来确定计数: Counts ——- Tom: 9 Eve: 1 Liz: 5 Tim: […]

将输出写入不同列的excel

您好我正在使用tcl写输出xls文件。 不过,我成功地将输出写入一列中的xls文件,但是我想要在合理的时间分割并写入两个不同的列。 我只写一列的代码工作正常: set fh [open $ew] while {[llength $c]} { set name [lindex $c 0] set c [concat [glob -nocomplain -directory [lindex $c 0] -type d *] [lrange $c 1 end]] set filesofDirectory [glob -nocomplain -directory $name -type f *] if { [llength $filesofDirectory] > 0 && $d == "fftc"} { set x "number […]