Да, есть более быстрый способ. Вы можете использовать макрос, чтобы создать свой сюжет программно.
Если вы знаете VB, перейдите к шагу 3.
- Откройте окно Visual Basic - через вкладку "Разработчик" или Alt-F11.
- В левом верхнем углу находится список рабочих тетрадей и модулей. Найдите название вашей книги, щелкните правой кнопкой мыши на ее названии и выберите «Вставить> Модуль». В дереве файлов теперь должна быть папка с именем Модули с элементом "Модуль1". Дважды щелкните по нему.
Теперь вы находитесь в модуле Excel VB. Добавьте следующий код:
Sub chart()
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatter
ActiveChart.Legend.Delete
i = 1
numSeries = 1000
Do While i < numSeries + 1
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(i).XValues = "=Sheet1!$A$" & i & ":$CV$" & i
ActiveChart.SeriesCollection(i).Values = "=Sheet1!$A$" & numSeries + 1 & ":$CV$" & numSeries + 1
i = i + 1
Loop
End Sub
Запустите код, используя кнопку запуска или меню в окне Visual Basic, или через вкладку "Разработчик" в Excel.
- Вы можете увидеть в коде имена столбцов $ A и $ CV. Измените их, если результат по каким-либо причинам не соответствует вашим данным. переменная numSeries может быть изменена, если вы хотите другое количество строк позже. Этот код предполагает, что у вас нет строки заголовка, и что данные оси X находятся в последней строке, что является необычным способом хранения данных диаграммы, но соответствует вашему примеру.
Изменить: X и Y переключены:
Sub chart()
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatter
ActiveChart.Legend.Delete
i = 1
numSeries = 1000
Do While i < numSeries + 1
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(i).Values = "=Sheet1!$A$" & i & ":$CV$" & i
ActiveChart.SeriesCollection(i).XValues = "=Sheet1!$A$" & numSeries + 1 & ":$CV$" & numSeries + 1
i = i + 1
Loop
End Sub
и теперь пытаемся получить 1000 предметов с пределом 255, отображая в каждой серии 4 набора данных:
Sub chart()
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatter
ActiveChart.Legend.Delete
i = 1
numSeries = 1000
s0 = "Sheet1!$A$" & numSeries + 1 & ":$CV$" & numSeries + 1
Do While i < (numSeries / 4 + 1)
s1 = "=Sheet1!$A$" & i & ":$CV$" & i
s2 = ", Sheet1!$A$" & i + numSeries / 4 & ":$CV$" & i + numSeries / 4
s3 = ", Sheet1!$A$" & i + 2 * numSeries / 4 & ":$CV$" & i + 2 * numSeries / 4
s4 = ", Sheet1!$A$" & i + 3 * numSeries / 4 & ":$CV$" & i + 3 * numSeries / 4
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(i).Values = s1 & s2 & s3 & s4
ActiveChart.SeriesCollection(i).XValues = "=" & s0 & ", " & s0 & ", " & s0 & ", " & s0
i = i + 1
Loop
End Sub