Страница: 1 |
Вопрос: Графики | Добавлено: 01.08.08 12:16 |
Автор вопроса: ![]() |
Есть точечный график в Excel, там куча подписей, которые постоянно наезжают друг на друга. Эти графики приходится обновлять каждый день и ручками затем растаскивать надписи, чтобы выглядело все красиво. Кто какие способы может предложить решения этой проблемы? Понятно, что идеально эта задача не решается, но хотя бы как-нибудь упростить себе жизнь думаю, что можно |
Ответы | Всего ответов: 6 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 23 Ответов: 417 |
Профиль | Цитата | #1 | Добавлено: 04.08.08 12:34 |
Пока могу предложить только такой вариант: Sub SpillingValue()
'удаление всех диаграмм на листе 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" ![]() ![]() 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" ![]() End Sub |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 23 Ответов: 417 |
Профиль | Цитата | #2 | Добавлено: 04.08.08 12:35 |
На 7 пунктов ![]() |
Номер ответа: 3 Автор ответа: ![]() ![]() Вопросов: 1 Ответов: 1 |
Профиль | Цитата | #3 | Добавлено: 04.08.08 14:56 |
Спасибо. Но боюсь, что это не так просто, как вы написали. Проблема в том, что при таком подходе решения проблемы. Очень часто оказывается так, что близь лежащие надписи смещаются в одну сторону и поэтому такой способ практически не решает проблему, а иногда даже усложняет ее.
У меня есть кое-какие мысли как все это можно сделать, но есть небольшой вопрос: как найти сколько по высоте и в длину занимает надпись места на листе? |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 23 Ответов: 417 |
Профиль | Цитата | #4 | Добавлено: 04.08.08 20:20 |
Если бы так просто все было. ![]() |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: adamis@list.ru Вопросов: 153 Ответов: 3632 |
Профиль | Цитата | #5 | Добавлено: 04.08.08 22:01 |
Свойств нет, но может методы есть?
Что-то типа Picture1.TextWidth("Smith" ![]() Picture1.TextHeight("Smith" ![]() только естессно в надписи. В крайнем случае можно и схитрить. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ICQ: 308-534-060 Вопросов: 20 Ответов: 1860 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 27.08.08 11:06 |
Не пожалуй никакого способа. Если подписи привязаны к точкам графика, то кроме как сделать график с таблицей внизу ничего не получится. Пересмотри дизайн графика, ты же не показал как он выглядит. |
Страница: 1 |
|