2010-11-01 3 views
2

У меня есть столбец «размер файла», который был неудачен, так как он несовместим. Например, значения могут быть: «4 ГБ», «32 МБ», «320 КБ», «932 байта» и т. Д. Мне нужно преобразовать их все в стандартное значение, чтобы я мог добавить их для отчета.Преобразование различных размеров файлов в байты

+0

Пожалуйста, напишите, что вы попробовали, и каков был результат. –

+0

Без надлежащих базовых данных ваши значения будут плохо истолкованы. Когда выражено в терминах ГБ, потребляет ли 499 МБ 0 или 1 ГБ? Как насчет '932 байта'? ... сколько байтов находится в ~ 4 ГБ данных? 4294967296 или 4400000000 или 3900000000 .... просто что-то рассмотреть.Используйте грубое округление и сделайте с ним. – jcolebrand

ответ

0

Байты, килобайты, мегабайты и т. Д. - все метрические единицы. Просто выберите стандартную единицу для своего отчета (скажем, мегабайты) и умножьте или разделите значения, указанные в разных единицах, чтобы получить нужные вам значения.

1

Я бы сказал, у вас есть два варианта:

1: требуют, чтобы все эти данные будут в единицах байтов (вероятно, не представляется возможным, если уже существует данные)

2: использовать регулярное выражение для разделения номер из устройства, затем используйте оператор switch (или цикл или что угодно), чтобы выполнить правильные умножения, чтобы получить число в байтах (возможно, это проще).

редактировать:

регулярное выражение будет выглядеть примерно так:

(\d*) *(.*) 

Это будет фиксировать количество и единицы отдельно и игнорировать любые пробелы между ними (вам все равно придется урезать вклад в регулярное выражение, как предыдущее и продолжающееся пробелы, может вызвать некоторое горе).

2

Рассмотрим данный подход

  • выбрать один формат отображения. Возможно, выберите байты.

Для каждой ячейки:

  • определить ее масштаб. Это, скорее всего, будет включать синтаксический анализ строк, ища «концы с» некоторым допустимым диапазоном возможностей: «байты», «kb», «mb», «gb», «килобайты», «гигабайты». Сначала преобразуйте в нижний регистр, чтобы обеспечить здравомыслие. Рассмотрите также орфографические ошибки!

  • экстракт номер. Используйте вариант этого VBA numeric regex, чтобы извлечь номера. Остерегайтесь десятичных знаков!

  • ваш выход будет (число) * (шкала в байтах)

2

Вот очень простой ответ - но это может сделать это очень быстро исправить для вас, если отсчетов точных байт являются не все важно. Просто выполните простой поиск текста и замените его.

Замените «KB» (и «килобайты» и другие варианты) на «000», «MB» с «000000» и «GB» на «000000000». «байты» вы заменяете на «». Затем преобразуйте тип ячейки/столбца в числовой.

Это не так просто, если значения заданы с десятичными знаками («4.32 MB»), но ваши примеры должны работать нормально.

Смежные вопросы