Preciso construir um rótulo de dados em um gráfico do Excel usando uma fórmula que constrói a string a partir de duas células com uma quebra de linha entre elas.
Isso funcionaria em uma fórmula de célula:
=A1 & CHAR(10) & B1
e isso funcionaria em VBA
=A1 & Chr(10) & B1
como nesta postagem:http://www.ozgrid.com/forum/showthread.php?t=40644mas nenhuma dessas abordagens funciona dentro de um rótulo de dados. Alguma ideia?
Responder1
No VBA você pode usar isto:
Dim str as String
str = Range("A").Value & vbCrlf & Range("B").Value
vbCrlf lhe dará uma quebra de linha ...
Responder2
Isso funcionou para mim no VBA:
Sheet1.ChartObjects(1).Chart.SeriesCollection(1).Name = "a" & vbCr & "b"
E como dito, isso funciona com uma fórmula:
=DATASERIES(Sheet1!$E$1,Sheet1!$A$2:$A$4,Sheet1!$B$2:$B$4,1)
E1 = "a" & CHAR(10) & "b"
E1 deve ter quebra de linha definida.
DATASERIES é o que você vê na seção de edição de fórmulas, quando você seleciona sua série.
Responder3
Então foi assim que fiz funcionar.
Etapa 1: crie uma nova coluna com quebra de linha habilitada com a fórmula =A1 & CHAR(10) & B1
na célula C1
e arraste para baixo conforme apropriado
Etapa 2: execute o seguinte código VBA para definir cada rótulo de dados para apontar para a célula correta
Sub SetDataLabels()
Dim ChartName As String
ChartName = "My Chart's Name"
With ActiveSheet.ChartObjects(ChartName).Chart
Dim Series As Integer
Series = 4
With .SeriesCollection(Series)
Dim currentPoint As Integer
For currentPoint = 1 To .Points.Count
.Points(currentPoint).DataLabel.Text = Range("C" & currentPoint).Text
Next currentPoint
End With
End With
End Sub