Преобразование файлов разного размера в байты - PullRequest
3 голосов
/ 01 ноября 2010

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

Ответы [ 4 ]

2 голосов
/ 02 ноября 2010

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

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

Будет не так просто, если значения даны с десятичными знаками ("4,32 МБ"), но ваши примеры должны работать нормально.

2 голосов
/ 01 ноября 2010

Рассмотрим этот подход

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

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

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

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

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

1 голос
/ 01 ноября 2010

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

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

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

edit:

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

(\d*) *(.*)

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

0 голосов
/ 01 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...