如何对单元格中文本中的数字求和?
要求是将“C”列中的单元格中的数字相加,并将值放入“B”列中相应的单元格中(在我的示例中为 0.25 + 1 + 0.25 + 1 = 2.5)。
“C”列中的值可能会更改。 要求是一旦“C”列中的单元格发生更改,就更新“B”中的值。
我确实要求创建者将两个不同列中的文本和数字更改为文本和数字,但由于标准模板,这是不可接受的。
The requirement is to sum the digits in the cells in column 'C' and put the value in the corresponding cell in column 'B' (in my example 0.25 + 1 + 0.25 + 1 = 2.5).
The values in Column 'C' could change. The requirement is to update the value in 'B' as soon as the cell in column 'C' changes.
I did ask the creator to change to text and numbers in two different columns but that is not acceptable because of the standard template.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这可以使用宏来实现,而无需更改单元格中的文本。
我不得不承认,实施会有点延迟,因为你需要做一些事情。
1 - 对整个单元格内容进行标记,并将标记存储到字符串数组中。
已经有问题了。 单元格内的文本严重不一致。 您有 -250 毫秒、- 250 毫秒、- 1 秒、- 1 秒。 因此,您将需要检查每个实例。 因此,您不能只检查该值是否是数字,您需要检查团队成员方便地为您提供的所有排列。
最好的方法是检查正则表达式。 因此,#2 应该是:
2 - 检查每个值,看看它是否与 4 个正则表达式之一匹配。
3 - 根据其匹配的正则表达式,提取数值。
a)如果只是一个值(即->250),检查毫秒或秒是否继续该值。 如果是毫秒,则将数字除以 1000。如果是秒,则将数字保留原样。 将数字添加到总数中。
b) 如果数字前面有破折号 (-),请删除破折号,然后重复步骤 a)
c) 如果数字后跟字母,则删除字母并重复步骤 a)
d) 如果数字后跟句点,则不执行任何操作。 这是一个要点。
This can be achieved, without altering the text in the cell, using a Macro.
I have to admit, the implementation will be a little retarded, since you need to do a few things.
1 - Tokenize the entire cell content, and store the tokens into a string array.
There is a problem already. The text located inside the cell is grossly inconsistent. You have -250 ms, - 250 ms, - 1sec, - 1 sec. Due to this, you are going to need to check for each instance. Therefore, you cannot just check if the value is a number, you need to check all the permutations that your team members have conveniently provided for you.
The best way to do this would be to check against Regular Expressions. Therefore, #2 should be:
2 - Check each value to see if it matches to one of many 4 Regular Expressions.
3 - Depending on the Regex it matches with, extract the numerical value.
a) If simply a value (ie->250), check if ms or sec proceeds the value. IF ms, divide the number by 1000. If sec, leave number as is. Add number to total.
b) If a number preceded by a dash(-), remove dash, and repeat step a)
c) If a number followed by letters, remove letters and repeat step a)
d) If a number followed by a period, do nothing. This is a bullet point.