3

Мне нужно суммировать большой набор данных, но значения вводятся как K или M. Есть ли способ изменить их, преобразовать их в числовые значения? Я думал об использовании поиска и замены, чтобы изменить M на 000000, но это не будет работать для таких значений, как 1,25M. Есть ли простое решение для этого? Спасибо!

2 ответа2

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) , который возвращает 1 для "K" или 2 для "M". Функция 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)
-1

образец кода открытого класса {

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

}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .