Vba 将两列相减作为条件,并附加值

Vba 将两列相减作为条件,并附加值,vba,excel,Vba,Excel,我需要从一个大数组中减去两列,看看哪些列是正值,在这些正值中,我需要找到正值行,并在该值上附加一些内容 这是我到目前为止思考的一般概念 而0) 在另一个纸张单元格(i,3)中打印。值(单元格(i,2)。值单元格(i,4))单元格。值(i,4) 例如… 假设我有这样的东西 [2嗨哟] [3.2 go-mo] 此宏将在另一张图纸中返回“go 1 mo” Sub Leaves() Dim i As Integer Dim g As Integer Dim Quantity As Integer Dim

我需要从一个大数组中减去两列,看看哪些列是正值,在这些正值中,我需要找到正值行,并在该值上附加一些内容

这是我到目前为止思考的一般概念

而<8000
if(单元格(i,1).值-单元格(i,2)>0)
在另一个纸张单元格(i,3)中打印。值(单元格(i,2)。值单元格(i,4))单元格。值(i,4)

例如…
假设我有这样的东西
[2嗨哟]
[3.2 go-mo]

此宏将在另一张图纸中返回“go 1 mo”

Sub Leaves()
Dim i As Integer
Dim g As Integer
Dim Quantity As Integer
Dim Executed As Integer
Dim Leaves As Integer

i = 1
g = 1

Do While i < 8000
    Quantity = Worksheets("Sheet1").Cells(i, 3).value
    Executed = Worksheets("Sheet1").Cells(i, 5).value
    Leaves = Quantity - Executed
    If Leaves > 0 Then
        Worksheets("Sheet2").Cells(g, 1).value = _
            Worksheets("Sheet1").Cells(i, 9).value & _
            Worksheets("Sheet2").Cells(i, 2).value & _
            Leaves & Worksheets("Sheet2").Cells(i, 3).value
        g = g + 1
    End If
    i = i + 1
Loop

End Sub
Sub-Leaves()
作为整数的Dim i
作为整数的Dim g
将数量设置为整数
Dim作为整数执行
将叶子变暗为整数
i=1
g=1
当我<8000时做
数量=工作表(“表1”).单元格(i,3).值
已执行=工作表(“表1”).单元格(i,5).值
叶=数量-已执行
如果叶>0,则
工作表(“表2”)。单元格(g,1)。值=_
工作表(“表1”)。单元格(i,9)。数值和_
工作表(“表2”)。单元格(i,2)。值和_
树叶和工作表(“表2”)。单元格(i、3)。数值
g=g+1
如果结束
i=i+1
环
端接头

上面的代码给了我一个
类型不匹配
错误。

如果您说出哪行抛出了错误,这会很有帮助。同时,我们应该努力创造一个新的环境。这样做的努力通常会在您需要发布之前解决问题

代码本身看起来很好,它为我运行(在空工作簿上),没有类型不匹配。因此,问题一定在于您对电子表格的假设

两行中的任何一行

Quantity = Worksheets("Sheet1").Cells(i, 3).value
Executed = Worksheets("Sheet1").Cells(i, 5).value
如果相应的值不能转换为整数,将触发类型不匹配。例如,如果其中一个单元格包含字符串(而不是类似“1”的内容)或错误值,如#N/a或#value

开始的那一行

Worksheets("Sheet2").Cells(g, 1).value = _  

如果要连接的值之一无法转换为字符串,则将引发类型不匹配。其中一个单元格中的错误值是最可能的原因。如果是这种情况,并且出于某种原因,您确实希望创建一个包含类似于“#N/a”的子字符串的字符串,那么您可以使用这些单元格的
Text
属性,而不是
Value

,如果您说出哪一行抛出了错误,这会很有帮助。同时,我们应该努力创造一个新的环境。这样做的努力通常会在您需要发布之前解决问题

代码本身看起来很好,它为我运行(在空工作簿上),没有类型不匹配。因此,问题一定在于您对电子表格的假设

两行中的任何一行

Quantity = Worksheets("Sheet1").Cells(i, 3).value
Executed = Worksheets("Sheet1").Cells(i, 5).value
如果相应的值不能转换为整数,将触发类型不匹配。例如,如果其中一个单元格包含字符串(而不是类似“1”的内容)或错误值,如#N/a或#value

开始的那一行

Worksheets("Sheet2").Cells(g, 1).value = _  

如果要连接的值之一无法转换为字符串,则将引发类型不匹配。其中一个单元格中的错误值是最可能的原因。如果是这种情况,并且出于某种原因,您确实希望创建一个包含类似于“#N/a”的子字符串的字符串,那么您可以使用这些单元格的
Text
属性,而不是
Value

Sub Leaves()Dim i作为整数Dim g作为整数Dim数量作为整数Dim执行作为整数Dim叶作为整数i=1 g=1执行,而i<8000数量=工作表(“Sheet1”)。单元格(i,3)。执行值=工作表(“Sheet1”)。单元格(i,5)。值叶=数量-如果叶>0,则执行工作表(“Sheet2”).Cells(g,1).value=Worksheets(“Sheet1”).Cells(i,9).value&Worksheets(“Sheet2”).Cells(i,2).value&Leaves&Worksheets(“Sheet2”).Cells(i,3).value g=g+1 End If i=i+1 Loop End SubI由于某种原因现在出现了不匹配错误。若要包含代码,请将其添加到问题中。注释中的代码通常会被忽略。您遇到了什么问题?上面的代码是否满足您的要求?Sub Leaves()Dim i As Integer Dim g As Integer Dim Quantity As Integer Dim作为整数Dim执行的整数Dim Leaves As Integer i=1 g=1,而i<8000 Quantity=工作表(“Sheet1”)。单元格(i,3)。执行的值=工作表(“Sheet1”)。单元格(i,5).value Leaves=数量-如果Leaves>0,则执行工作表(“Sheet2”)。单元格(g,1)。value=工作表(“Sheet1”)。单元格(i,9)。value&工作表(“Sheet2”)。单元格(i,2)。value&Leaves&工作表(“Sheet2”)。单元格(i,3).value g=g+1 End如果i=i+1循环结束sub由于某种原因,我现在收到一个不匹配错误。要包含代码,请将其添加到问题中。注释中的代码通常会被忽略。您遇到了什么问题?上面的代码是否符合您的要求?