Sim, há um caminho mais rápido. Você pode usar uma macro para criar seu gráfico programaticamente.
Se você conhece o VB, pule para o passo 3.
- Abra a janela do Visual Basic - na guia Desenvolvedor ou Alt-F11.
- No canto superior esquerdo, há uma lista de folhas e módulos de pastas de trabalho. Encontre o nome da sua pasta de trabalho, clique com o botão direito do mouse no nome dela e selecione "Inserir > Módulo". Na árvore de arquivos, agora deve haver uma pasta chamada Modules, com um elemento chamado "Module1". Clique duas vezes nele.
-
Você está agora em um módulo do Excel VB. Adicione o seguinte código:
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
-
Execute o código, seja usando o botão ou menu de execução na janela do Visual Basic, ou através da guia Desenvolvedor no Excel.
- Você pode ver no código os nomes das colunas $ A e $ CV. Altere estes se o resultado não corresponder aos seus dados por algum motivo. a variável numSeries pode ser alterada se você quiser um número diferente de linhas posteriormente. Esse código presume que você não tem linha de cabeçalho e que os dados do eixo X estão na linha final, que é uma maneira incomum de armazenar dados do gráfico, mas corresponde ao seu exemplo.
Editar: X e Y mudaram:
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
e agora tentando obter 1000 itens abaixo do limite de 255 fazendo com que cada série exiba 4 conjuntos de dados:
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