在Excel VBA中根据粗体格式设置范围

时间:2018-04-10 11:05:57

标签: excel vba excel-vba format with-statement

我正在尝试建立一个可以的报告:
1.循环个别日期
-----并将每个日期设置为范围。
我需要循环来查找范围内的所有行 -----价值"个人",
-----将每行的D列中的相应值与个体
相加 -----并将此总和值粘贴到另一张表中。
3.如果未找到值(个人),则 -----输出单元需要向下移动一行,
----------没有填写任何内容(或填写0)所以日期将在最后匹配。
----------(如果输出单元格没有向下移动,则 ---------------输出数据将显示错误日期的值。)

数据源设置
数据的问题我有格式不一致
这意味着 第一行 有时会有所不同。虽然 总是以"个人..." 开头。我所拥有的一致性是 日期格式为粗体

原始数据的屏幕截图enter image description here

问题
如果日期之后的第一行被称为"个人回访客户",我的代码非常有效。但是,如果不是这种情况,它当然会跳过几个日期并提供不正确的输出。我认为循环数据的最佳方法是根据粗体格式设置范围。

问题
我怎么能这样做?

这是我到目前为止的代码:

Sub mm()
Dim iArea As Long

With Worksheets("FC01.RPT")
    .Cells(.Rows.Count, 1).End(xlUp).Offset(2) = "Individual Rate Guest"
    With .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
        .AutoFilter field:=1, Criteria1:="Individual Rate Guest"
        With .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible).Offset(-1)
            For iArea = 1 To .Areas.Count - 1
                With .Parent.Range(.Areas(iArea).Offset(1), .Areas(iArea + 1).Offset(-1))
                    Worksheets("Plan").Cells(.Rows.Count, "D").End(xlUp).Offset(1).Value = WorksheetFunction.SumIf(.Cells, "Individual*", .Offset(, 3))
                End With
            Next
        End With
    End With
    .AutoFilterMode = False
    .Cells(.Rows.Count, 1).End(xlUp).ClearContents
End With
End Sub

我愿意接受建议。谢谢你的帮助!

0 个答案:

没有答案