Я работаю над кодом, который перебирает некоторые листы в рабочей книге, копирует определенный диапазон из всех этих листов в один лист «Общая сводка» и создает диаграммы для каждого блока данных.Моя проблема в том, что я не знаю, как сказать ему использовать только три определенных поля для диаграмм, а не все.Там может быть несколько блоков.Каждый блок начинается с "В наличии?"в столбце А. поля, которые мне нужны:
В наличии?Общее число да какое-то число НЕТ какое-то число исключено какое-то число
Есть 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
Спасибо