任何人都可以解释在DBSheet.Range上启动的行语法有什么问题吗?
另外,我知道有一种方法可以“从纸张上”进行计算,然后将它们吐回到纸张中?我有一个关于如何使用.formula和.value这样做的想法,但我不太确定如何。有人可以解释我是如何做到这一点所以我的计算是有效的。谢谢!
Dim DBSheet As Worksheet, InSheet As Worksheet, ExSheet As Worksheet, i As Long
Set DBSheet = ThisWorkbook.Sheets("db_main")
Set InSheet = ThisWorkbook.Sheets("interface")
Set ExSheet = ThisWorkbook.Sheets("export")
For i = 2 To 40000
If DBSheet.Range("S" & i) <= InSheet.Range("C20") And DBSheet.Range("S" & i) = InSheet.Range("O15") Then
ExSheet.Range("A" & i) = DBSheet.Range("N" & i)
End If
Next i
答案 0 :(得分:0)
您的问题似乎是比较行上的类型错误,这也是您第一次引用范围。
首先,验证这些单元格中的数据是否是您想要的数据类型(我假设的数字)。其次,根据我的经验,Excel几乎总是将ws.Range(...)视为一个范围对象,它会在你的不等式中引发一个错误,因为它不仅仅是你正在寻找的值。您应该将其更改为ws.Range(&#34; S&#34;&amp; i).Value或ws.Cells(i,19).Value。此外,您可能需要将其转换为字符串中的数字,以便使用Val()或CDbl()或CInt()进行比较。所以我们有以下选项:
Val(ws.Range("S" & i).Value)
CDbl(ws.Cells(i, 19).Value)
就非工作表计算而言,如果您指的是使用另一个工作表进行计算,那么基本上您只需使用第四个工作表对象即可完成您正在执行的操作。如果你指的是内存中的计算,那就像......
Dim areaCircle As Double
Dim radius As Double, circumference As Double
Dim ratioOfCircumferenceToArea As Double
radius = CDbl(ws.Cells(i, 19).Value)
areaCircle = radius^2 * 3.14159
circumference = 2 * 3.14159 * radius
ratioOfCircumferenceToArea = circumference / area
没有关于您要计算的内容的更多信息&#34; off sheet,&#34;我可以给你这些一般情况。