Я бы, вероятно, добавил 4 колонки, чтобы облегчить поиск неисправностей и выполнить математику / преобразование позже.
- Строка для разбора
- подсчитывать
- Размер
- Единица измерения (ТБ или ГБ)
"Строка для анализа" - это соответствующий раздел заметки, из которого нам нужно рассчитать. Регулярные выражения могут помочь вам здесь.
Добавьте пользовательскую функцию для регулярных выражений, как указано здесь:https://stackoverflow.com/questions/9744602/how-do-you-execute-a-regular-expression-in-excel
Я думаю, что вы хотите регулярное выражение:
"[0-9 x]*[GT]B"
который будет возвращаться следующим образом с учетом этих строк (после удаления всех пробелов):
BOB HAS 400 x 10 gB --> "400x10gB"
4x10TB IN THE building xx --> "4x10TB"
I have 20TB of space --> "20TB"
Итак, чтобы получить "String to parse", допустим, вы поместили это в B2 с целевой ячейкой A2:
=SUBSTITUTE(udfRegEx(A2,"[0-9 x]*[GT]B")," ","")
Счет может быть извлечен с помощью (обратите внимание, что он заполняет это как 1, когда не указано кратное число)
=IF(ISERROR(FIND("x",B2)),1,VALUE(LEFT(B2,FIND("x",B2)-1)))
Размер можно извлечь с помощью:
=IF(ISERROR(FIND("x",B2)),VALUE(LEFT(B2,LEN(B2)-2)),VALUE(MID(B2,FIND("x",B2)+1,LEN(B2)-2-FIND("x",B2))))
Единица измерения (ТБ или ГБ) с:
=UPPER(RIGHT(B2,2))
Count и Size оба возвращаются как числа, так что вы сможете умножать и добавлять оттуда ...
Обратите внимание, что одна функция VBA могла бы сделать все это и скрыть большую часть сложности, но я думаю, что лучше оставить функции VBA настолько универсальными, насколько это возможно, и делать все остальное в Excel, если это целесообразно.