我有一个基于moodle的多重响应测试,我将结果下载为.xlsx(第一行:标题,前9列:有关候选人的信息,然后大约100列,每个问题的结果)并将其导入一个不同的excel文件,通过VBA计算结果(以比moodle更具体的方式)。在最新的moodle更新之前一切正常,因为现在结果文件中的所有数字都保存为文本。所以我需要先将它们转换为数字。我尝试了各种各样的东西,但都没有奏效。由于我选择的范围似乎总是有问题,我尝试只转换一个单元格。
问题在于:excel适用于错误的单元格。对于
Worksheets(b).Cells(2, 10).Value = Worksheets(b).Cells(2, 10).Value * 1
它转换细胞J5(因此,细胞(5,10))。所有其他单元格仍然有一个小的绿色角落,表示单元格包含格式为文本的数字,但J5不包含。
然后我尝试转换更多的细胞
Worksheets(b).Cells(2, 11).Value = Worksheets(b).Cells(2, 11).Value * 1
Worksheets(b).Cells(3, 10).Value = Worksheets(b).Cells(3, 10).Value * 1
Worksheets(b).Cells(3, 11).Value = Worksheets(b).Cells(3, 11).Value * 1
并且转化的细胞是K5,J10,K10。我在下面列出了我的工作表的截图。
我不知道为什么Excel会这样做。其他人建议寻找隐藏的行(我没有),但是如果我有一些隐藏的行,它可以在我选择的单元格之上的某个地方使用,而不是下面的那些,不是吗?我也没有合并的单元格。另外,我只是将结果复制到工作表中,然后尝试转换它们(因此不能同时复制和转换)。
我在应该转换第一个单元格的行之前和之后添加了MsgBox Worksheets(b).Cells(2, 10).Address(True, True, xlA1, True)
。在这两种情况下,Messagebox都说[Workbook]Worksheet!$J$2
,但仍然将单元格J5转换为数字。
我已将所有内容复制到新工作簿中,但问题仍然存在。
我在这部分之前有代码,我没有在这里包含,但它只是清除工作表中的所有内容和格式,然后打开测试结果(如.xlsx)并将它们复制到我的工作表中
在我的新工作簿中,我删除了此部分下面的所有代码,它突然起作用了。但是当我把它复制回来时,它再次无效。但它不能成为下面的代码的问题,因为一切都运行得很好,直到我添加了我的4行代码,我尝试转换单元格。 (另外在下面的代码中,我只是从我的工作表中获取数字(b),用它们计算一些内容,然后将它们保存在另一个工作表中,再也不要触摸我的工作表(b)。)
我还尝试Worksheets(b).Range("J2").Select
选择J2,在我缩短版本的4行代码之后(转换有效,但我删除了其余的代码),我收到以下错误消息(我希望我正确翻译它,因为它是德语):runtime-error 1004:无法实现此范围对象的select-method。
如果你能帮助我,我会很高兴的!
PS:我没有包括我转换细胞的其他方法,就像在其他论坛中一样,人们只给出了关于如何最好地将文本转换为数字而忽略了真正问题的建议。如有必要,我仍然可以包含代码。PPS:我在Windows 7上使用Excel 2013。