在 LibreOffice Calc 中,有没有办法将 1K 转换为 1000,将 1M 转换为 1,000,000

在 LibreOffice Calc 中,有没有办法将 1K 转换为 1000,将 1M 转换为 1,000,000

我需要对一个大型数据集求和,但输入的值是 K 或 M。有没有办法将它们转换为数值?我原本想使用查找和替换将 M 更改为 000000,但对于 1.25M 这样的值,这种方法行不通。有没有简单的解决方案?谢谢!

答案1

假设值在一列中(此示例中为 A 列),则使用以下公式添加第二列并向下填充以匹配您需要转换的值:

=IFNA(LEFT(A1,LEN(A1)-1)*CHOOSE(MATCH(RIGHT(A1,1),{"K","M"},0),1000,1000000),A1)

公式使用 查找“K”或“M” MATCH(RIGHT(A1,1),{"K","M"},0),对“K”返回 1,对“M”返回 2。函数CHOOSE返回 1,000 或 1,000,000,将其乘以LEFT(A1,LEN(A1)-1)LEFT函数删除“K”或“M”。

如果值不以“K”或“M”结尾,会发生什么情况?在这些情况下,MATCH返回 #NA,并IFNA返回未更改的值。该公式可转换正值和负值,以及带小数位的值(例如,1.25M 转换为 1,250,000)。

相同的方法可以轻松扩展以转换十亿(1,000,000,000):

=IFNA(LEFT(A1,LEN(A1)-1)*CHOOSE(MATCH(RIGHT(A1,1),{"K","M","B"},0),1000,1000000,1000000000),A1)

答案2

可以使用查找和替换功能,将“K”替换为“*10^3”,将“M”替换为“*10^6”,将“B”替换为“*10^9”。例如,1.25M 将转换为 1.25 * 10^6。然后,您只需要在公式前面添加一个等号即可。

答案3

公共类示例代码{

public static void main(String[] args) {
    String str = "257K";
    try {
        Integer num = Integer.parseInt(str);
        System.out.println(str);
    } catch (Exception e) {
        char type = str.charAt(str.length() - 1);
        Integer num = Integer.parseInt(str.substring(0, str.length() - 1));
        switch (type) {
        case 'K':
            System.out.println(num * 1000);
            break;
        case 'M':
            System.out.println(num * 1000000);
            break;
        }
    }
}

}

相关内容