Один из способов сделать это - присвоить метки данных из другого диапазона, так что предположим, что у вас есть такая диаграмма, и вы хотите, чтобы метки данных составляли 120% и 150% соответственно, вместо 600 и 500 .
Теперь, в более ранних версиях Excel не была опция в диалоге Chart, что позволило переназначить данные этикетки формулы, но это либо больше не присутствует в Excel 2010, или я просто не может найти его (я использую VBA для большинства вещей, подобных этому).
И даже если это так, вы застряли в использовании одного или другого (600 или 120%, но не оба). Чтобы показать оба (600 в базе, 120% выше), вам нужны две серии данных.
Добавить дубликат серии на диаграмме:
Выберите эту серию и сделать перекрытой 100%:
Формат новой серии
Для этого примера я использую «No Fill» (или задаю порядковый номер серии «1», чтобы поставить за существующей серией; может быть или не быть возможно в зависимости от остальной части вашего графика). Есть несколько причуд о сериалах с «No Fill», поэтому я обычно предпочитаю сделать их белыми и нажать на Index Index = 1, чтобы они выглядели «позади» других серий.
Выберите метки данных в настоящее время, и запустить процедуру VBA следующим образом.
Обратите внимание, что некоторые из вышеперечисленных шагов могут быть испечены в VBA, но реализация будет во многом зависеть от вашей структуры диаграммы &.
Sub Data_Labels()
'Data_Labels Macro
Dim ws As Worksheet
Dim cht As Chart
Dim srs As Series
Dim dl As DataLabels
Dim rng As Range
Dim pt As Point
Dim p As Integer
Set ws = ActiveSheet
'Ensure the user selects some DataLabels
If TypeName(Selection) <> "DataLabels" Then
MsgBox "Please select data labels to overwrite", vbInformation
GoTo EarlyExit
End If
'Get a handle on the chart & data labels objects
Set dl = Selection
Set cht = Selection.Parent.Parent.Parent
'Prompt the user for new labels
Set rng = Application.InputBox(_
"Please select the values to use for the data labels", _
"Overwrite data labels", _
Type:=8)
'Sanity check:
Do While rng.Cells.Count <> dl.Count
Set rng = Application.InputBox(_
"The number of cells in your selection does not match the number of data labels, please try again.", _
"Overwrite data labels", _
rng.Address, _
Type:=8)
Loop
Set srs = dl.Parent
'## Iterate the points in this series
For p = 1 To srs.Points.Count
Set pt = srs.Points(p)
'##Overwrites the text with formula reference to the specified cell
pt.DataLabel.Text = "='" & ws.Name & "'!" & rng.Cells(p).Address(ReferenceStyle:=xlR1C1)
Next
EarlyExit:
End Sub
Результат
Вы должны получить диаграмму, которая выглядит так (вы можете удалить Legend или отдельное LegendEntry за серию):
Как это графика метки данных для этой серии теперь содержат формулу , относящуюся к ячейкам, эти ячейки могут содержат формулу для достижения ваших 120% или что-то еще.
UPDATE
Я оставляю оригинальный ответ, потому что это очень универсальный, но это также может быть достигнуто с помощью "Stacked Column" график. Тем не менее, я не пробовал тестировать это с помощью более сложной диаграммы, и из памяти есть некоторые проблемы с использованием Stacked Columns вместе с дополнительными типами диаграмм или рядами в данных, и это может не сработать для ваших целей.
Постройте столбчатую диаграмму столбцов, используя формулу, которая приводит к получению целочисленного значения значения%, например, «120» вместо «1,2» или «120%».Формат серии не должна быть невидимой/без заливки, и отрегулировать положение меток данных для Внутри базы:
Затем применить формат числа к ячейкам через пользовательский формат, как: General""\%""
Тогда обеспечить метки данных серии являются „Связанное Источник“:
Результаты, как показано ниже:
Можете ли вы дать скриншот того, что вы ожидаете от результата? Не понимая, чего вы ожидаете, но я знаю несколько разных хаков, которые, вероятно, получат то, что вам нужно. –
Кроме того, 600 + 120% = 601.20 –
Вы хотите что-то? или скриншот фактической ячейки? – mythstified