Страница: 1 |
Страница: 1 |
Вопрос: Графики
Добавлено: 01.08.08 12:16
Автор вопроса: bear
Есть точечный график в Excel, там куча подписей, которые постоянно наезжают друг на друга. Эти графики приходится обновлять каждый день и ручками затем растаскивать надписи, чтобы выглядело все красиво. Кто какие способы может предложить решения этой проблемы? Понятно, что идеально эта задача не решается, но хотя бы как-нибудь упростить себе жизнь думаю, что можно
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #1
Добавлено: 04.08.08 12:34
Пока могу предложить только такой вариант:
'удаление всех диаграмм на листе
For Each ch In ActiveSheet.ChartObjects
ch.Activate
ActiveChart.ChartArea.Select
ActiveWindow.Visible = False
Selection.Delete
Next ch
'создание новой диаграммы
Charts.Add
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=Sheets("Sheet1".Range("F7:P11", PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
ActiveChart.ApplyDataLabels AutoText:=True, LegendKey:=False, _
HasLeaderLines:=False, ShowSeriesName:=False, _
ShowCategoryName:=True, ShowValue:=True, _
ShowPercentage:=False, ShowBubbleSize:=False
'растаскивание надписей (Категория и значение) на 10 пунктов
'одна вверх-влево на 10, другая вниз-вправо
pr = 7
For Each s In ActiveChart.SeriesCollection
For Each p In s.Points
p.DataLabel.Select
p.DataLabel.Top = p.DataLabel.Top - pr
p.DataLabel.Left = p.DataLabel.Left - pr
pr = pr * -1
Next p
Next s
ActiveWindow.Visible = False
Range("J38".Select
End Sub
Номер ответа: 2
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #2
Добавлено: 04.08.08 12:35
На 7 пунктов
Номер ответа: 3
Автор ответа:
bear
Вопросов: 1
Ответов: 1
Профиль | | #3
Добавлено: 04.08.08 14:56
Спасибо. Но боюсь, что это не так просто, как вы написали. Проблема в том, что при таком подходе решения проблемы. Очень часто оказывается так, что близь лежащие надписи смещаются в одну сторону и поэтому такой способ практически не решает проблему, а иногда даже усложняет ее.
У меня есть кое-какие мысли как все это можно сделать, но есть небольшой вопрос: как найти сколько по высоте и в длину занимает надпись места на листе?
Номер ответа: 4
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #4
Добавлено: 04.08.08 20:20
Если бы так просто все было. Нет такого свойства для надписей. (По крайней мере я не нашла.) Только левая сторона и верх. Дальше идет шрифт и его размер. А они могут быть самые разные. Можно найти длину текста, но это в данном случае не поможет.
Номер ответа: 5
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #5
Добавлено: 04.08.08 22:01
Свойств нет, но может методы есть?
Что-то типа
Picture1.TextWidth("Smith"
Picture1.TextHeight("Smith"
только естессно в надписи.
В крайнем случае можно и схитрить.
Номер ответа: 6
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #6
Добавлено: 27.08.08 11:06
Не пожалуй никакого способа. Если подписи привязаны к точкам графика, то кроме как сделать график с таблицей внизу ничего не получится. Пересмотри дизайн графика, ты же не показал как он выглядит.