0

我正在尝试从 .ods 文件中对一些价格范围进行分组,但不知道该怎么做。

例如,我有一列价格不同,如下所示:

11,61
6,15
13,68
7,69
6,00

我想要告诉 Calc 将所有内容从 0,00~10,99 分组并输出 text0-10以及从 11,00~20,00 和 output text的所有内容11-20,因此最终输出将是:

col1    col2
11,61   11-20
6,15    0-10
13,68   11-20
7,69    0-10
6,00    0-10
4

1 回答 1

0

您可以使用函数ROUNDDOWN()ROUNDUP()负数来获得 10 ( -1)、100 ( -2) 或 1000 ( -3) 的下一个倍数。它将某个值的精度降低10. 因此,使用以下方法舍入到 10 的前一个或下一个倍数:

=ROUNDDOWN(<yourvalue>; -1)

=ROUNDUP(<yourvalue>; -1)

分别(如果您正在使用的 i18y 需要,请注意将公式参数分隔符调整为逗号 (, ) )。

所以,=ROUNDDOWN(11,61; -1)会导致10=ROUNDUP(11,61; -1)也会给你20。这样,您可以为每个值“计算”适当的组(例如 A1 中的值):

=CONCATENATE(ROUNDDOWN($A1; -1)+1;"-";ROUNDUP($A1;-1))

要将其拆分为多行:

=CONCATENATE(              # Result will be a concatenated string
    ROUNDDOWN($A1;-1)+1;   # first value: previous multiple of 10, +1;
    "-";                   # second value: literal "-"
    ROUNDUP($A1;-1)        # third value: next multiple of 10
)

使用您的示例数据,这将导致:

在此处输入图像描述

编辑:

对于 0-9、9-19 等分组,以下公式应该有效:

=CONCATENATE(ABS(ROUNDDOWN($A2+1; -1)-1);"-";ROUNDUP($A2+1,01;-1)-1)

在此处输入图像描述

编辑2:

对于使用该IF()功能的解决方案,您可以使用:

=IF(A2 < 9;"0-9";IF(A2 < 19; "9-19";IF(A2 < 29; "19-29";"more than 29")))

对于大于 29 的值的分组,您必须添加相应的 IF 子句,"more than 29"通过附加检查替换字符串。每个分组范围都需要自己的 IF 子句。

于 2014-04-13T11:31:57.193 回答