Прокрутите таблицы на конкретном листе и отредактируйте их, включив в них конкретные три поля - PullRequest
0 голосов
/ 20 апреля 2019

Я работаю над кодом, который перебирает некоторые листы в рабочей книге, копирует определенный диапазон из всех этих листов в один лист «Общая сводка» и создает диаграммы для каждого блока данных.Моя проблема в том, что я не знаю, как сказать ему использовать только три определенных поля для диаграмм, а не все.Там может быть несколько блоков.Каждый блок начинается с "В наличии?"в столбце А. поля, которые мне нужны:

В наличии?Общее число да какое-то число НЕТ какое-то число исключено какое-то число

Есть 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

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...