循环浏览特定工作表上的图表并进行编辑以包括特定的三个字段

时间:2019-04-20 17:24:38

标签: excel vba

我正在编写一个代码,该代码循环遍历工作簿中的某些工作表,将所有这些工作表中的特定范围复制到一个工作表“总体摘要”中,并为每个数据块创建图表。我的问题是我不知道如何告诉它仅对图表使用特定的三个字段,而不是对所有字段使用。可能有多个街区。每个块都以“有库存?”开头在A栏中。 我需要的字段是:

有库存吗?总数 是的,一些电话 没有一些数字 排除了一些数字

每个信息块之间有5行。在J列中创建的图表。

我得到的代码可以工作,但是它不能解释每个块之间的5行。 这是我的代码:

Sub chart1()
    Dim sh As Worksheet
    Dim mySourceData As Range, myChartD As Range
    Dim myChart As Chart
    Dim r As Range, b As Range, wCell As String
    Dim lr As Long
    Const sText = "In Stock?"

    Set sh = ThisWorkbook.Worksheets("Overall Summary")
    lr = sh.Range("A" & Rows.Count).End(xlUp).Offset(1).Row
    sh.Cells(lr, "A").Value = sText

    Set r = sh.Columns("A")
    Set b = r.Find(sText, LookAt:=xlWhole, LookIn:=xlValues)
    If Not b Is Nothing Then
        wCell = b.Address
        Do
            'detalle
            If b.Row = lr Then Exit Do
            For i = b.Row + 1 To lr
                If sh.Cells(i, "A").Value = sText Then
                    'fin = i - 1
                    'identify source data
                    Set mySourceData = sh.Range("A" & b.Row & ":B" & i - 1)
                    'identify chart location
                    Set myChartD = sh.Range("J" & b.Row & ":N" & i - 1)
                    'create bar chart
                    Set myChart = sh.Shapes.AddChart(XlChartType:=xlWaterfall, _
                        Left:=myChartD.Cells(1).Left, _
                        Top:=myChartD.Cells(1).Top, _
                        Width:=myChartD.Width, _
                        Height:=myChartD.Height).Chart
                    myChart.SetSourceData Source:=mySourceData
                    Exit For
                End If
            Next
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> wCell
    End If
    sh.Cells(lr, "A").Value = ""


    MsgBox "Done"


End Sub

谢谢

0 个答案:

没有答案