我有一个电子表格,由一个单独的应用程序填充,其中包含数字字符串(例如,“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之外。谁能想到另一种解决方案?
谢谢!
答案 0 :(得分:1)
您是否尝试将字符串值乘以1以便转换为数字?几天前我遇到了一个问题,数字被认为是字符串而且表现不正常。解决方案是将它们乘以1。
让我解释一下:我在VBA
编码了一个模块,对从excel
工作表中取得的数字进行了一些计算。计算结果放在一个数组中,然后作为另一个工作表上修改的excel公式的一部分“打印”(如指定的那样)。我遇到的问题是小数(例如0.1234)没有在“。”前面显示“0”。在细胞中。问题是excel认为它们是字符串而不是数字。即使我通过excel GUI将格式更改为数字,问题仍然存在。
注意:在编程中很多次你将整数乘以double / float 将整数转换为double / float。
考虑到这一点,我打印单元格中的结果乘以1 (as in "=function(...) * 1")
,这有效。
答案 1 :(得分:0)
我最终使用ASAP Utilities function,“将未识别的数字(文字?)更改为数字”。我决定在每次更新时都不需要将文本转换为数字,所以我在OnWorkbookOpen方法中运行该函数。
仅在已更改的单元格上运行ASAP Utilities功能会很容易。只需在之前关闭Application.EnableEvents,并在之后将其打开,正如上述评论中有人如此有用的建议。
谢谢大家的帮助!
答案 2 :(得分:0)
我刚刚找到了一个简单的方法来自动转换所需的字符串:
Application.Transpose(Application.Transpose(arrStrData))