平衡掌控者:游戏数值经济设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 数学函数与统计函数

数学函数与统计函数也是实际工作中的常用函数,特别是在运算模拟、公式验证和数据分析中它们使用频繁。

2.3.1 最大值和最小值

我们经常会遇到这样的问题——希望将输出的数值限制在最大值和最小值之间。而在一般的情况下,通常会使用IF函数进行多次判断来解决这个问题。比如,A3:A6单元格区域中的值通过IF条件判断后得到B3:B6单元格区域中的值,如图2-39所示。

图2-39

除此之外,还可以用MIN+MAX组合函数来解决这个问题。思路比较容易理解,在MAX函数中放入最小值参数,在MIN函数中放入最大值参数。当通过MAX函数判断最大值时,因为存在最小值参数,所以无论你的数值多么小,最终输出的肯定是最小值参数值,因为它比你的数值大(你的数值太小了)。而MIN函数的操作刚好相反。

在实际工作中,以上两种方式都可以解决问题,希望大家可以养成良好的逻辑思维能力。

2.3.2 数列

我们经常会遇到一种情况,那就是希望生成一个特定的数列,比如等比或等差数列,此外还有一种用得较多的数列,那就是带有一定规律的循环数列。下面介绍两种常用数列。

第1种数列是由商数的整数部分组成的数列。这种数列常常作为递增常量参与实际的运算,大家可以在表格中修改E1单元格中的步长值来观察数据的变化情况。A列为原始数列,B列为经过公式计算后得到的数列,如图2-40所示。

图2-40

第2种数列是由两个数值表达式做除法运算后的余数部分组成的数列。这种数列常常用于参数填充,比如在某类型武器编号结束之后,又开始新的类型武器编号,如图2-41所示。

图2-41

2.3.3 不重复排名

针对传统的排名问题,可以使用RANK函数来直接解决,但是RANK函数无法实现无并列排名,即不重复排名。下面使用的是用C列作为辅助列,将COUNTIF函数作为辅助函数来解决不重复排名问题。

下面进行举例说明。A列是需要统计的分数,首先在B列中使用RANK函数对这些分数进行一次排名。可以看到,前两个人的分数相同,所以在RANK函数排名后,他们的名次也是一样的。然后使用COUNTIF函数在C列进行判断,在每次统计到与上一个值重复的值的时候,就会将排名+1,最终实现不重复排名。具体的公式如图2-42所示。

图2-42

2.3.4 档位划分

在实际工作中,时常会遇到档位划分问题,很多人都使用VLOOKUP函数来解决这个问题,其实用LOOKUP函数会更方便一些,如图2-43所示。

图2-43

我们希望根据A列单元格的值来划分相应的档位,并将相应的档位填入B列单元格中。档位规则如下:大于或等于500且小于1000的评分对应低档位;大于或等于1000且小于5000的评分对应中档位;大于或等于5000且小于9999的评分对应高档位;大于或等于9999的评分对应超强档位。

可以看到,通过LOOKUP函数来实现上述要求是符合预期的,但小于500的评分由于没有匹配到对应的档位,所以显示为错误值,这其实是因为我们没有定义小于500评分的档位导致的。大家在实际操作中一定要考虑取值范围,以免出现错误值(也可以添加额外的档位来控制下限取值档位)。

2.3.5 频度统计

频度统计在数据统计中的用途非常广泛,也极具代表性,下面就来解析频度统计,如图2-44所示。

图2-44

A列中有30个随机数(图2-44中只显示了前10个随机数),这些随机数都是1和30之间的正整数。我们希望统计出这30个随机数中每个数字的出现次数。

首先在D2单元格中求出出现次数为0的随机数有多少个。此处通过COUNTIF函数计算了1~30分别在随机数中出现了几次,并得到了1~30出现次数的数组,如图2-45和图2-46所示。

图2-45

图2-46

然后将不符合ROW()-2条件的数变为FALSE(这样在求和的时候这个值为0),而将符合条件的数变为TRUE,最后求和计算后就得到了出现次数为0的数有多少个。此处使用ROW()-2作为判断条件是为了方便直接下拉填充公式(当统计出现次数为1的随机数有多少个时,就可以直接将D2单元格中的公式下拉到D3单元格中)。

最后如果希望得到出现次数对应的数值,那么可以在E2单元格中使用数组公式: