Existe uma maneira de converter 1K para 1000 e 1M para 1.000.000 No LibreOffice Calc

3

Eu preciso somar um grande conjunto de dados, mas os valores são inseridos como K ou M. Existe uma maneira de alterar esses valores convertidos em valores numéricos? Eu estava pensando em usar localizar e substituir para alterar M para 000000, mas isso não funcionará para valores como 1,25 M. Existe uma solução fácil para isso? Obrigada!

    
por AliZ 27.08.2016 / 19:59

2 respostas

1

Supondo que os valores estejam em uma coluna (coluna A neste exemplo), adicione uma segunda coluna com essa fórmula e preencha para corresponder aos valores que você precisa converter:

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

A fórmula procura "K" ou "M" com MATCH(RIGHT(A1,1),{"K","M"},0) , que retorna 1 para "K" ou 2 para "M". A função CHOOSE retorna 1.000 ou 1.000.000, que é multiplicada por LEFT(A1,LEN(A1)-1) . A função LEFT remove o "K" ou "M".

O que acontece se o valor não terminar com "K" ou "M"? Nesses casos, MATCH retorna #NA e IFNA retorna o valor inalterado. A fórmula converte valores positivos e negativos, bem como valores com casas decimais (por exemplo, 1,25M convertidos para 1,250,000).

O mesmo método é facilmente estendido para converter bilhões (1.000.000.000):

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

samplecode de classe pública {

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;
        }
    }
}

}

    
por 08.11.2018 / 23:56