如何将Excel值转换为存储桶?

时间:2010-04-28 00:06:12

标签: excel function

我在Excel中有一组数据,在一列中是一个估计值(周数)

我想要一个Excel公式将其存入

如果值为0-10,则将其设为Small。如果值为10 - 20则将其置于“中等”等。 。

如果除了嵌套if语句之外还有任何优雅的方法吗?

12 个答案:

答案 0 :(得分:13)

正确的工具是创建一个包含限制和相应名称的范围。 然后,您可以使用vlookup()函数,将第4个参数设置为True以创建范围查找

enter image description here

答案 1 :(得分:7)

创建此方法的另一种方法是使用if条件...意味着您将引用具有值的单元格,并根据该值为您提供诸如small之类的存储区。

例如,=if(b2>30,"large",if(b2>20,"medium",if(b2>=10,"small",if(b2<10,"tiny",""))))

因此,如果单元格b2的值为12,则会返回单词small

希望这就是你要找的东西。

答案 2 :(得分:6)

如果您需要做的只是计数每个类别中有多少值,那么这是一个经典的统计问题,可以通过“直方图”非常优雅地解决。

在Excel中,您使用数据分析加载项(如果您还没有,请参阅下面的链接)。一旦理解了直方图,就可以将数据分成桶 - 称为“箱” - 非常快速,可以轻松调整箱子,并自动绘制数据图表。

这是三个简单的步骤: 1)将您的数据放在一列中 2)为您的垃圾箱创建一个列(10,20,30等) 3)选择数据 - &gt;数据分析 - &gt;直方图并按照选择数据范围和分档的说明进行操作(您可以将结果放入新工作表并从同一菜单中绘制结果图表)

http://office.microsoft.com/en-us/excel-help/create-a-histogram-HP001098364.aspx

答案 3 :(得分:5)

可能不是你想要的但是如何使用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

答案 4 :(得分:5)

您正在寻找LOOKUP功能。有关详细信息,请参阅以下页面:

Data Buckets (in a range)

答案 5 :(得分:4)

创建存储桶的一个好方法是LOOKUP()函数。

在此示例中,包含单元格A1是天数。第二个参数是值列表。第三个参数是存储桶名称列表。

= LOOKUP(A1,{0,7,14,31,90,180,360},{ “0-6”, “7-13”, “14-30”, “31-89”, “90-179” , “180-359”, “&GT; 360”})

答案 6 :(得分:3)

这是一个解决方案:

  • 是自包含的
  • 不需要VBA
  • 不限于与最大铲斗最大值相同的方式
  • 不像LOOKUP那样需要精确的值

=INDEX({"Small","Medium","Large"},LARGE(IF([INPUT_VALUE]>{0,11,21},{1,2,3}),1))

[INPUT_VALUE] 替换为相应的单元格引用,并确保按 Ctrl + Shift + Enter ,因为这是一个数组公式。

每个数组常量可以扩展为任意长;只要公式不超过Excel的最大值为8,192个字符。第一个常量应该包含返回值,第二个常量应该包含有序阈值,第三个常量应该只是升序整数。

答案 7 :(得分:2)

也许这可以帮到你:

=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")))))

只需将值和文本替换为小,中,大。

答案 8 :(得分:0)

如果条件是最佳方式。如果你想要计数使用桶的数据透视表。这是最简单的方法,if条件也可以超过5-6个桶

答案 9 :(得分:0)

我更喜欢使用数字公式标记存储桶。如果铲斗尺寸为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)

答案 10 :(得分:0)

我使用此技巧进行相等的数据存储。您会得到数字,而不是文本结果。这是四个水桶的例子。假设您的数据在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个观测值。因此几乎相等。您不必担心-该公式可以为您解决问题。

答案 11 :(得分:0)

我使用附加的公式将销售数字分类到bin范围内/之内,如下所示:

=IF(MOD(B5,$B$1)<>0,($B$1*(1+((B5-(MOD(B5,$B$1)))/$B$1))),($B$1*(1+((B5-(MOD(B5,$B$1)))/$B$1))-$B$1))

此处的单元格如示例所示 snapshot of excel model