1

我有一个由单独的应用程序填充的电子表格,其中包含数字字符串(例如,“654”、“0.005”)。Excel 无法对字符串进行计算。由于我的电子表格每隔几分钟就会更新一次(添加行),我想编写一个脚本来自动将一个范围内的单元格转换为数字。

这是我的解决方案,其中 convertRange 是一个包含要转换为数字的字符串的范围:

method OnChangeInSpreadsheet():
if changedCell is NOT in convertRange
   currentHeight = convertRange.height
   expand convertRange to include new rows
   convert the new rows' strings

它变得复杂的原因是因为字符串到数字的转换会触发 OnChangeInSpreadsheet 函数,所以我必须小心将新行附加到 convertRange 之外。谁能想到另一种解决方案?

谢谢!

4

3 回答 3

1

您是否尝试过将字符串值乘以 1 以转换为数字?几天前我遇到了一个问题,数字被视为字符串并且行为不正确。解决方案是将它们乘以 1。

让我解释一下:我编写了一个模块VBA来对工作表中的数字进行一些计算excel。计算结果被放入一个数组中,然后作为另一个工作表上修改后的 excel 公式的一部分“打印”(如分配的)。我遇到的问题是小数(例如 0.1234)没有在“。”前面显示它们的“0”。在细胞中。问题是 excel 将它们视为字符串而不是数字。即使我通过 excel GUI 将它们的格式更改为数字,问题仍然存在。

注意:在编程中,很多时候您通过将整数乘以 double/float 将其转换为 double/float

考虑到这一点,我将结果打印在乘以 1 的单元格中(as in "=function(...) * 1"),这很有效。

于 2013-03-22T16:33:52.537 回答
0

我最终使用了ASAP Utilities 功能,“将无法识别的数字(文本?)更改为数字”。我决定实际上不需要在每次更新时将文本转换为数字,因此我在 OnWorkbookOpen 方法中运行该函数。

仅在已更改的单元格上运行 ASAP Utilities 功能会很容易。只需关闭 Application.EnableEvents 之前,然后再打开它,正如上面评论中有人如此有用地建议的那样。

感谢大家的帮助!

于 2013-03-25T22:12:45.953 回答
0

我刚刚找到了一个简单的方法来根据需要自动转换字符串:

Application.Transpose(Application.Transpose(arrStrData))
于 2017-09-20T10:29:43.573 回答