如何将Excel值转换为存储桶?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将Excel值转换为存储桶?相关的知识,希望对你有一定的参考价值。
我在Excel中有一组数据,在一列中是估计值(周数)
我想要一个Excel公式来将其存入
- 小
- 介质
- 大
如果值为0 - 10,则将其设置为小。如果值为10 - 20则将其置于“中等”等。 。 。
如果除了嵌套if语句之外还有任何优雅的方法吗?
可能不是你想要的,但如何使用Excel的条件格式功能
编辑:作为替代,你可以创建一个vba函数,作为一个公式,将为你做计算。就像是
Function getBucket(rng As Range) As String
Dim strReturn As String
Select Case rng.Value
Case 0 to 10
strReturn = "Small"
Case 11 To 20
strReturn = "Medium"
Case 21 To 30
strReturn = "Large"
Case 31 To 40
strReturn = "Huge"
Case Else
strReturn = "OMG!!!"
End Select
getBucket = strReturn
End Function
我更喜欢用数字公式标记桶。如果铲斗尺寸为10,则标记铲斗0,1,2,......
=INT(A1/10)
如果您将铲斗尺寸10放在一个单独的单元中,您可以轻松改变它。
如果单元格B1包含存储桶(0,1,2,...),而第6列包含名称“低”,“中”,“高”,则此公式会将存储桶转换为名称:
=INDIRECT(ADDRESS(1+B1,6))
或者,这标记了具有最小值的桶,即0,10,20,......
=10*INT(A1/10)
或者用0-10,10-20,20-30范围标记它们,......
=10*INT(A1/10) & "-" & (10*INT(A1/10)+10)
我使用这个技巧进行相同的数据存储。而不是文本结果,你得到的数字。这是四个桶的示例。假设您有A1:A100
范围内的数据。把这个公式放在B1中:
=MAX(ROUNDUP(PERCENTRANK($A$1:$A$100,A1) *4,0),1)
在B栏中填写公式,您就完成了。该公式将范围划分为4个相等的桶,并返回单元格A1所属的桶号。第一个桶包含最低25%的值。
根据您的意愿调整水桶数量:
=MAX(ROUNDUP(PERCENTRANK([Range],[OneCellOfTheRangeToTest]) *[NumberOfBuckets],0),1)
每个桶中的观察次数将相等或几乎相等。例如,如果您有100个观测值并且想要将其拆分为3个桶(如示例中所示),那么桶将包含33,33,34个观测值。几乎是平等的。你不必担心 - 这个公式适合你。
正确的工具是创建一个包含限制和相应名称的范围。然后,您可以使用vlookup()函数,将第4个参数设置为True
to,创建范围查找。
创建它的另一种方法是使用if
条件...意味着你将引用一个具有值的单元格,并且根据该值它将为你提供诸如small
之类的存储桶。
例如,=if(b2>30,"large",if(b2>20,"medium",if(b2>=10,"small",if(b2<10,"tiny",""))))
因此,如果单元格b2
的值为12
,那么它将返回单词small
。
希望这是你正在寻找的。
如果您需要做的只是计算每个类别中有多少值,那么这是一个经典的统计问题,可以通过“直方图”非常优雅地解决。
在Excel中,您使用数据分析加载项(如果您还没有,请参阅下面的链接)。一旦理解了直方图,就可以将数据分成桶 - 称为“箱” - 非常快速,轻松调整箱子,并自动绘制数据图表。
这是三个简单的步骤:1)将数据放在一列中2)为您的箱子创建一个列(10,20,30等)3)选择数据 - >数据分析 - >直方图并按照说明进行选择数据范围和分档(您可以将结果放入新工作表并从同一菜单中绘制结果图表)
http://office.microsoft.com/en-us/excel-help/create-a-histogram-HP001098364.aspx
您正在寻找LOOKUP功能。有关详细信息,请参阅以下页面:
创建存储桶的一个好方法是LOOKUP()函数。
在此示例中,包含单元格A1是天数。第二个参数是值列表。第三个参数是存储桶名称列表。
= LOOKUP(A1,{0,7,14,31,90,180,360},{ “0-6”, “7-13”, “14-30”, “31-89”, “90-179”,“180 -359" , “> 360”})
这是一个解决方案:
- 是自足的
- 不需要VBA
- 关于铲斗最大值,不限于与IF相同的方式
- 不像LOOKUP那样需要精确的值
=INDEX({"Small","Medium","Large"},LARGE(IF([INPUT_VALUE]>{0,11,21},{1,2,3}),1))
将[INPUT_VALUE]替换为相应的单元格引用,并确保按Ctrl + Shift + Enter,因为这是一个数组公式。
每个数组常量可以扩展为任意长;只要公式不超过Excel的最大值为8,192个字符。第一个常量应该包含返回值,第二个常量应该包含有序阈值,第三个常量应该只是升序整数。
也许这可以帮助你:
=IF(N6<10,"0-10",IF(N6<20,"10-20",IF(N6<30,"20-30",IF(N6<40,"30-40",IF(N6<50,"40-50")))))
只需将值和文本替换为小,中,大。
如果条件是最好的方法。如果你想要计数使用桶的数据透视表。这是最简单的方法,if条件也可以超过5-6个桶
以上是关于如何将Excel值转换为存储桶?的主要内容,如果未能解决你的问题,请参考以下文章