VBA中For循环内嵌套的IF语句

时间:2017-09-20 14:00:52

标签: excel vba if-statement nested-loops

我的其他宏从网上抓取共同基金规模并返回Worksheets("Updater").Cells(xx,4)中的值(因此列C)。宏还在晨星上更新了基金的更新日期,并在同一张纸上的F栏中返回。我在A栏中获得了83个基金名称。

在名为" Tracker"我已经转换了基金名称。它们从细胞(1,4)开始,然后转到(1,86)。在B栏中,我在C栏中获得了日期的DATEVALUE。日期格式存在一些问题,因此我稍后会隐藏B列。

下面的宏按原样工作,但是当您取消注释第11行和第22行时,它不再按预期工作。想法是查看表格上的基金规模"更新程序"并将基金规模返回到表格中的相应日期" Tracker"。如上所述,这是有效的。

但是,使用嵌套的if语句,我想修改宏,以便保留包含" - "以外的所有单元格。不变。通过这种方式,我会在每天执行宏时开始累积基金规模数据,并且不会用" - "来覆盖旧的基金规模。

现在宏翻转知道在哪里的资金,我根本无法解决这个嵌套的if语句问题。这甚至是获得我想要的地方的正确/最佳方式吗?

Sub fundSizeTracker()

Dim f       As Integer
Dim numRows As Integer

numRows = 86
f = 2         'Sheet  fund names & sizes

For m = 2 To 4 'Sheet  row number, starting at rowNo 2
    For i = 4 To numRows 'Sheet  column number (set to include all 83 funds)
        '                    If Worksheets("Tracker").Cells(m, i) = "-" Then
        '               Are Datevalues same?                'Tracker datevalue                        'Updater datevalue
        If StrComp(Worksheets("Tracker").Cells(m, 2).Value, Worksheets("Updater").Cells(f, 13).Value) = 0 Then
            Worksheets("Tracker").Cells(m, i) = Worksheets("Updater").Cells(f, 4).Value
        Else
            Worksheets("Tracker").Cells(m, i) = "-"
        End If
        If f = numRows - 1 Then
            f = 2
        End If
        f = f + 1
        '                    End If
    Next i
Next m

End Sub

0 个答案:

没有答案