Tag: excel formula

准确的实时更新解决scheme,用于基于当前统计的分布预测

作为我当前项目的一部分,我需要find一个漂亮的Excel解决scheme:有线上游戏,人们获得经验(类似于SO代表),一旦获得足够的经验就移动到下一个层次(再次,这是非常像SO特权)。 当然,这需要每个人都有不同的时间:有些人在第一周获得了足够的经验,有些则需要5周才能通过。 统计如下: Week from join: Week 1 Week 2 Week 3 Week 4 Week 5 Level up: 5% 15% 40% 30% 10% 也就是说,如果在这个星期我们有一些人join了这个游戏,那么在他们全部进入下一个级别之后的5周之后(有些人会放弃并离开,但是为了简单起见,我并没有把这个因素包括在条件列表中)。 至于每场比赛,现在的球员数量都很重要。 为了保持游戏的stream行和激动人心,每个级别都应该有一定数量的玩家。 显然,这个价值在不断变化:新人来了,而另一些人则上了一个台阶。 然而 – 这就是行动开始的地方! – 当前球员的这个最小值不是恒定的,并且可以根据许多因素谨慎。 为了简单起见,这意味着在未来的10-15周内,每周应该实现一组预测的最小数量的玩家(这是基于收集的统计数据,但是对于给定的任务,这是已知的组)。 到目前为止,图片看起来像这样: 而在最左边的一列中, 每周都有一些人join了游戏,每周下的一排大胆的数字就是这个星期到达下一个级别的人数。 有大量新人,计算每周的总体水平是微不足道的。 相反,并不是那么容易(至less对我来说) – 这是一个问题: 如何预测每周所需新手人数 (最左边的列) – 获得所需数量的人将通过下一周的下一个级别(底部的粗体行)? 到目前为止,我还找不到一个合适的,准确的解决scheme。 我尝试了所有可能的select – 从复杂和数组公式到Solver插件,但没有运气:我总是比方程式有更多的未知数。 但是,我很确定这不是一个不可能完成的任务:对于某些解决scheme,Solver可以提供相当接近所需值的数字,但不是每一组所需的值。 一些假设和(可能)重要的条件: 虽然不应该是一个问题,但实际每周分发%%%数字是根据需求更新数据库查询和进一步的Excel处理。 当然,从DB获得的实际新手值当然被认为是公式的已知值 。 显然他们是不能改变的,比如说如果实际上一周less than […]

Excel VBA函数仅在更改时更新

我有一个函数,我已经实现了一个VBA模块,它将一个单元格作为参数,并查询Web服务返回结果。 由于数据源是远程的,这个函数可能需要几秒钟才能返回。 问题在于某些操作(如删除任何列)似乎会导致每个公式重新计算,即使不需要更改。 当我的工作表有几百行时,这可能需要几分钟的时间,在这段时间内Excel没有响应。 我想find一些方法来检测,不需要改变,跳过这一步。 有些事情我已经尝试过了: 确定要更改的单元格的当前值,从中可以确定是否需要更新。 但ActiveCell.Value是空白的,并尝试传递单元格本身作为第二个参数会遇到循环引用警告。 创build第二列以保存旧的input值,然后将其传递给函数并与新值进行比较。 但是,函数无法在成功时更新此旧值,并且尝试仅使用公式进行更新总是会遇到循环引用警告。 而且,函数似乎没有返回“不变”,所以我需要存储和使用旧的结果。 有什么方法可以防止某些操作更新表单中的每个公式? 其他需求: 可能有一种方法来禁用所有公式自动计算,但我一定要每一行更新一旦参数单元格input。 我也不想强迫用户按下button来更新function。 我试图在Visual Studio中做一个自定义的电子表格,但发现部署太难以维护我的用户群。 解决scheme必须完全包含在启用macros的工作簿中。 使用该表格的Excel版本将是2007年和2010年。

我如何修改XIRR来根据某个值出现的位置来测量不同的周期数?

我正在尝试创build一个XIRR函数,根据特定值的地址来调整它正在测量的周期数。 例如,如果值在第48个月出现,我希望XIRR函数可以测量48列数据,但是如果值在第17个月出现, 我想XIRR只测量17列。 我可以使用=CELL("address", MATCH(…等等,但我不知道如何/如果我可以连接XIRRinput的值和相应的date的=CELL("address", MATCH(… 。最初,我希望我可以做这样的事情: =XIRR(A1:Cell("address", [value_reference]), B1:Cell("Address", [date_reference])) 谁能帮我这个? 使用Excel 2007

在CUBESET函数中使用带有三个参数的EXISTS

这是我现在返回的公式#N/A : =CUBESET("MyConnection","EXISTS([Customers].[Customer Names].MEMBERS,[Date].[Date – Calendar Month].[Calendar Month].&[201312],""CustomerMeasureGroup"")") 如果我将其更改为以下,则它的function正常,但需要使用EXISTS的第三个参数来获取该集合中正确的项目数量: =CUBESET("MyConnection","EXISTS([Customers].[Customer Names].MEMBERS,[Date].[Date – Calendar Month].[Calendar Month].&[201312])")

返回每行最大值的列标题

我有一个电子表格,每个月我都需要根据当月的表格返回顶级产品。 我已经复制下面我当前的设置的屏幕截图。 我目前通过创build一个使用INDEX , MATCH和MAX函数的附加列(列H )来返回该行中最高产品的名称。 然后,我使用另一个INDEX MATCH作为单元格K4和L4的查找来返回该月份的值。 问题是,我的表每个月扩大一个新的行添加,我想知道是否有办法将两个公式结合成一个。 所以我需要做的是更新单元格K3和L3的当前月份和前几个月。 我有相同的设置跨越了几张,所以想尽可能自动化。 会喜欢一些帮助,最好不使用VBA,如果可能的话。

最大限度地减less指定小计小组的数量

我有这样的数据: ABCD Book1 1 49 2 37 3 31 4 46 163 5 35 6 47 7 40 8 38 160 9 45 10 25 11 38 12 29 13 25 14 18 180 其中列D包含来自列C的(可变)数量项目的小计。 我试图完成的是,给定一些这些小计,每一个尽可能接近他们的平均水平(这可能是小样本,但不一定在较大的表)。 换句话说,如果C列中的项目总数是15,000,我想把它们分成90份,那么每一个部分应该尽可能地接近166.67(15,000 / 90)。 ColumnC的顺序可能不会改变。 这怎么可能完成? (如果需要,VBA将为我工作。)

使用IF或Select Case的Excel UDF具有更好的性能

我经常需要在Excel中search单元格中某些特殊文本的公式。 我需要search的行数是100.000到500.000,在罕见的情况下高达1.000.000。 为了避免长公式,我写了一个自己的UDF来search单元格中的多个文本string。 新的公式很难处理。 我尽可能优化这个公式的运行时间。 500.000行需要11到12秒。 我用两种方法做了这个公式:一个使用IF语句(SuchenSIF),另一个(SuchenSSELCASE)使用SELECT CASE语句。 展位公式具有相同的速度。 你能给我一些提示如何获得更好的performance吗? 这个公式的语法是: SuchenSIF(细胞search,文本search1,…文本search6) SuchenSSELCASE(单元格search,文本search1,…文本search6) Public Function SuchenSIF(Zelle As Range, such1 As String, Optional such2 As String, Optional such3 As String, Optional such4 As String, Optional such5 As String, Optional such6 As String) As Integer Application.Volatile ' this code, based on IF-statements need 11-12 seconds for 500.000 […]

使用Cubeset创build指定时间段的前10个项目列表

我正在使用Excel 2010在指定的时间段内按销售额创build前10名供应商的列表。 问题是,我只需要考虑属于特定集合的成员的客户。 我发现这篇文章帮助我从所有的客户那里获得销售额的十大供应商,但是我正在为如何总结一个特定集合的成员而苦苦挣扎。 我尝试了注释中页面下方的Sum / CrossJoin示例,但是我无法使其工作。 这可能是因为我对此很新,只是不明白哪些部分需要去哪里。 这是我到目前为止(我的连接名称在单元格M1): 所有客户(完美的作品): =CUBESET($M$1, "TopCount( [Product].[Brand].Children, 10, Sum( [Time].[Calendar].[Calendar Month].&[2011]&[8], [Measures].[Revenue] ) )", "Top 10 Brands" ) 客户子集(似乎返回正确的集合): =CUBESET($M$1, "Intersect( Intersect( exists( [Customer].[Cust Num].Members, {[Customer].[Is Internal].&[False],[Customer].[Is Internal].[All].UNKNOWNMEMBER} ), exists( [Customer].[Cust Num].Members, [Customer].[Type].&[CAT] ), ALL ), exists( [Customer].[Cust Num].Members, [Market].[Market ID].[All].Children – [Market].[Market ID].&[3] – [Market].[Market ID].&[4] ), ALL […]

Excel VBA – FormulaR1C1

我正在使用VBA代码下面的公式, .Range("M2:M" & LastRow).FormulaR1C1 = "=vlookup(RC2 & RC3 & RC6 & RC7,trip_length!A:F,6,False)" 但是当我按F2键看到公式时,显示如下: =VLOOKUP($B2 & $C2 & $F2 & $G2,trip_length!A:(F),6,FALSE) 除F之外的括号外都是正确的。正因为如此,公式返回一个错误。 我尝试了很多,但无法弄清楚如何使用FormulaR1C1的静态范围(另一个工作表)。 请帮忙。 谢谢。

从互斥选项中生成所有可能的select组合

我有一个优化问题,需要我testing潜在投资组合的所有潜在select组合,我也需要能够快速适应排除某些select。 这必须在Excel中完成。 下面是我的清理示例的规则: 我可以select从3家杂货店购买水果 杂货店可能有不同数量的过道,以及不同的水果组合 我只能从所有的杂货店里挑选一种水果(或者根本不选) 组合 我的第一个组合是没有任何杂货店的成果 在接下来我从Grocer3从Aisle 3挑选苹果 然后从Grocer3的 过道2的 苹果 然后从Grocer3的 Aisle 1 苹果 然后我从Grocer2的 Aisle 2中挑选苹果 ,而Grocer 3则没有任何东西(比如Grocer 3和组合1等的select一样) 那么我从Grocer2的 Aisle 2中挑选苹果 ,从Grocer3的 Aisle 3中挑选苹果 (也就是从Grocer 3中select的组合2)等等 所有这一切将给我7*4*4 = 112可能的组合 杂货商1的 7个select(6selectselect+ 1什么都不做) 杂货商2的 4个select(3selectselect+ 1什么都不做) 杂货商3的 4个select(3selectselect+ 1什么都不做) 1.无约束的问题 我的实际问题要复杂得多,但基本结构是成立的。 我想要做的是有一个excel公式或vba方法来填充所有可用的选项: 无约束的问题。 一个约束的问题(例如,当我closures过道2给我45个有效的组合) 2.约束问题 我曾经尝试过 我确实解决了菜单选项数量与MOD\INT方法相同的一个初始问题。 这是简单的一个单一的公式,因为模式是可重复的。 如果有一个聪明的配方解决scheme,那么这将是首选,但我打开代码(这是我正在尝试的路线)