这个VBA代码有什么问题吗?

时间:2016-03-13 03:19:20

标签: excel vba excel-vba

尝试运行:

Sub cumleng()
Dim i As Integer, j As Integer
For i = 5 To 64
    If IsEmpty(Cells(i, 2)) Then
        Exit Sub
    Else
        For j = 3 To 64
            If Cells(j, 9) = Left(Cells(i, 9), Len(Cells(i, 9)) - 1) Then
                If IsEmpty(Cells(j, 6)) Then
                    Exit Sub
                Else
                    Cells(i, 6) = Cells(j, 6) + Cells(i, 2)
                End If
            End If
        Next j
    End If
Next i
End Sub

然而,它没有按预期工作。没有任何东西被写入细胞(i,6)。救命?

以下是应该发生的事情: 对于每一行,在B列中都有一个数字,在第6列中有一个ID。我想为每一行输出该行和每个父行的B中数字的累积和。行的ID等于父ID的ID,并在末尾添加一个数字。我希望仅当分支在B列中有一个数字时才使用累积和,并且只有在父F在F列中有累积长度时才使用累积和。实际上,F列中没有输出任何内容。

1 个答案:

答案 0 :(得分:0)

数字 123 不等于只看" 123" 的文字字符串。 Left函数返回的文本看起来像数字的第一个Len-1数字(例如 1234 变为" 123" );单元格包含一个真实数字(例如 123 )。

试一试,

'with both as numbers
If Cells(j, 9) = Int(Cells(i, 9) / 10) Then
'alternate with both as text
If CStr(Cells(j, 9)) = Left(Cells(i, 9), Len(Cells(i, 9)) - 1) Then