Как сложить цифры в тексте в ячейке? - PullRequest
0 голосов
/ 05 мая 2009

У меня есть лист Excel
alt text

Требуется суммировать цифры в ячейках в столбце «C» и поместить значение в соответствующую ячейку в столбце «B» (в моем примере 0,25 + 1 + 0,25 + 1 = 2,5).

Значения в столбце «C» могут измениться. Требуется обновить значение в «B», как только изменится ячейка в столбце «C».

Я попросил автора изменить текст и числа в двух разных столбцах, но это не приемлемо из-за стандартного шаблона.

1 Ответ

4 голосов
/ 05 мая 2009

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

1 - токенизировать все содержимое ячейки и сохранить токены в массив строк.

Проблема уже есть. Текст, расположенный внутри ячейки, крайне противоречив. У вас есть -250 мс, - 250 мс, - 1 с, - 1 с. В связи с этим вам нужно будет проверять каждый экземпляр. Поэтому вы не можете просто проверить, является ли значение числом, вам нужно проверить все варианты, которые члены вашей команды удобно предоставили для вас.

Лучший способ сделать это - проверить регулярные выражения. Следовательно, № 2 должно быть:

2 - Проверьте каждое значение, чтобы увидеть, соответствует ли оно одному из многих 4 регулярных выражений.

3 - В зависимости от регулярного выражения, с которым оно совпадает, извлеките числовое значение.

a) Если просто значение (т. Е.> 250), проверьте, следует ли значение в мс или с. Если мс, разделите число на 1000. Если с, оставьте число как есть. Добавить номер к итогу.
б) Если перед цифрой стоит тире (-), удалите тире и повторите шаг а)
в) Если за цифрой следуют буквы, удалите буквы и повторите шаг а)
г) Если за числом следует точка, ничего не делайте. Это пуля.

...