2016-11-02 1 views
0

Я делаю причудливый график, где я хочу показать% плана над гистограммой, но, конечно, поскольку это число% WAYYY ниже, чем это должно быть.Номер Форматирование, чтобы избавиться от Integral и показывать только Decimal

Я думал о потенциально классном хаке, где я совмещаю результаты с% плана, что бы поднять его выше результатов.

Если это не удается, мне нужно использовать форматирование произвольного номера, чтобы я мог опустить то, что до десятичной (интегральной), а затем показать остальное как процент.

Так, например, если:

a) Plan = 500 
b) Results = 600 
c) % of Plan = 120% 
d) Results + (%oFPlan * 0.001) = 600.0120 

Я хочу, чтобы Excel, чтобы показать г) в 120% и игнорировать 600,0

Он должен закончить тем, что, как это:

enter image description here

+0

Можете ли вы дать скриншот того, что вы ожидаете от результата? Не понимая, чего вы ожидаете, но я знаю несколько разных хаков, которые, вероятно, получат то, что вам нужно. –

+0

Кроме того, 600 + 120% = 601.20 –

+0

Вы хотите что-то? или скриншот фактической ячейки? – mythstified

ответ

1

Один из способов сделать это - присвоить метки данных из другого диапазона, так что предположим, что у вас есть такая диаграмма, и вы хотите, чтобы метки данных составляли 120% и 150% соответственно, вместо 600 и 500 .

enter image description here

Теперь, в более ранних версиях Excel не была опция в диалоге Chart, что позволило переназначить данные этикетки формулы, но это либо больше не присутствует в Excel 2010, или я просто не может найти его (я использую VBA для большинства вещей, подобных этому).

И даже если это так, вы застряли в использовании одного или другого (600 или 120%, но не оба). Чтобы показать оба (600 в базе, 120% выше), вам нужны две серии данных.

Добавить дубликат серии на диаграмме:

enter image description here

Выберите эту серию и сделать перекрытой 100%:

enter image description here

Формат новой серии

Для этого примера я использую «No Fill» (или задаю порядковый номер серии «1», чтобы поставить за существующей серией; может быть или не быть возможно в зависимости от остальной части вашего графика). Есть несколько причуд о сериалах с «No Fill», поэтому я обычно предпочитаю сделать их белыми и нажать на Index Index = 1, чтобы они выглядели «позади» других серий.

enter image description here

Выберите метки данных в настоящее время, и запустить процедуру 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 за серию):

enter image description here

Как это графика метки данных для этой серии теперь содержат формулу , относящуюся к ячейкам, эти ячейки могут содержат формулу для достижения ваших 120% или что-то еще.

enter image description here

UPDATE

Я оставляю оригинальный ответ, потому что это очень универсальный, но это также может быть достигнуто с помощью "Stacked Column" график. Тем не менее, я не пробовал тестировать это с помощью более сложной диаграммы, и из памяти есть некоторые проблемы с использованием Stacked Columns вместе с дополнительными типами диаграмм или рядами в данных, и это может не сработать для ваших целей.

Постройте столбчатую диаграмму столбцов, используя формулу, которая приводит к получению целочисленного значения значения%, например, «120» вместо «1,2» или «120%».Формат серии не должна быть невидимой/без заливки, и отрегулировать положение меток данных для Внутри базы:

enter image description here

Затем применить формат числа к ячейкам через пользовательский формат, как: General""\%""

Тогда обеспечить метки данных серии являются „Связанное Источник“:

enter image description here

Результаты, как показано ниже:

enter image description here

+1

Это не «отлично», так как было бы лучше сделать это только с форматированием чисел, однако это может быть невозможно в любом случае и единственный способ сделать это, кажется, прибегает к VBA. В этой ситуации все в порядке. Во всяком случае, это сработало, поэтому я даю вам зеленый чек! – mythstified

+0

Даже с форматированием чисел вам все равно понадобится вторая серия (иначе, где «600» исходит из базы столбца?). Я сомневаюсь, что это возможно с числовым форматом, потому что вы также пытаетесь выполнить математическую операцию над значением, чтобы получить формат (например, вычитание интеграла и умножение десятичной и т. Д.). –

+0

Это имеет смысл. Очень крутое решение, спасибо за помощь! – mythstified

0

Это было бы очень путано для людей, поддерживающих вашу таблицу.

В качестве альтернативы, рассмотреть вопрос о введении еще одну строки или столбца, в котором клетка в этой области имеет формулу

=Mod(<range>, 1)

Где <range> соответствует клетке, что вы хотели формат. Это будет извлекать только десятичную часть, которую вы можете отформатировать в процентах.

+0

Не может быть формулой, ДОЛЖЕН быть числовым форматом, так как мне НЕОБХОДИМО сохранить тот факт, что перед ним еще 600, иначе 120% появятся внизу диаграммы. Посмотрите мое обновление со скриншотом диаграммы, которую я пытаюсь создать. – mythstified

Смежные вопросы