tick labels number format excel - excel

I'm having some issues using custom number format in Excel. I want the numbers on the y-axis of a scatter graph to be number formatted, so 16 on the y axis is labelled as a grade G, 22 as a grade F, 28 as a grade E, and so on. The following code works and formats my G and F correctly.
.Axes(xlValue).TickLabels.NumberFormat = "[=16]""G"";[=22]""F"";"
When I try to add any more formats in, say;
.Axes(xlValue).TickLabels.NumberFormat = "[=16]""G"";[=22]""F"";[=28]""E"";"
It no longer works. Is there a way around this problem?
NB: My y axis major unit is set to 6 and the axis minimum is set to 16, so all the grades I want lie on the tick markers.

This is a limitation of Excel, unfortunately: a number format can contain up to 2 conditions.
This is confirmed here. I've looked around for the original Microsoft documentation for this but I can't find it. What I can say, however, is that all of the example format codes I've seen on Microsoft pages have up to two conditions, never more than two. I guess they were not expecting users to need more than two conditions.
One workaround: See Jon Peltier's article on how to make arbitrary axes scales. His example:

Related

Excel: How to weeknumbers in number formatting

I would like to use weeknumbers in number formatting in Excel, in particular in XY-graphs.
The built-in function WEEKNUM() can be used to extract the weeknumber from a date. With these weeknumbers I can proceed in two different manners:
use the weeknumbers as text labels on my graph axis. This does not give the required result as labels are distributed evenly on the axis. A sequence like "13" "14" "33" would put the label "14" just in the middle.
use the weeknumbers as numbers on my graphs axis. This would resolve the above problem, but gives a gap at years end. E.g. 1652 (week 52 in 2016) and 1701 are 49 units away from each other.
To illustrate, please see these two graphs. The graphs indicate a tracking of a project plan, i.e. planned versus actuals. The first chart is a correct graph somewhere in the midst of a year; the second chart is more or less the same graph crossing year's end.
Correct chart, in the midst of a year
Chart showing problem at year's end
Now I'm stuck. My preferred route would be to add a number format to the generic number formatting methods in Excel. E.g. similar to be able to use yyyy for years and ddd for days, I'd like to use ww for weeknumbers.
How can I achieve this?
Not certain I'm understanding the question fully, but if you're wanting to ensure the end result is treated as a number you could use =Text(WEEKNUM(A1), "#") which would convert it to a numeric value.
For the chart, sounds like you could use the axis options (right click on the axis labels >> Format Axis). There are multiple options that would allow you to change how the labels are displayed.

Graph comments in a graph like a label?

I have come across this several times and I was wondering if it is possible at all.
Let's say I have 3 columns, one with numerical values, one with time values and a third column with text (1-3 words). I then create a graph with the numerical values (y axis) and the time (x axis). When I then hover over the individual data points on the graph it shows me their numerical values. Is there a way to also show the text associated with that value?
To put it in context, I am plotting noise values for a day and would love to hover over the graph, in particular the peaks and then have a text appear that tells me what the noise was related too, what noise source (e.g. airplane, truck etc).
Is this possible? I was thinking of maybe plotting a second axis for the comments and maybe just plot them all at the same y value but then I am still left with the question on how to display the text comment?
Any ideas?
Cheers
Sandra
Tushar Mehta has an add-in for that here
It has been tested for Excel 97 to 2002, which are all pretty old versions.
The charting engine has changed completely fromexcel-2007, and the menus have gone, so chances are that this tool may no longer work.
I have not seen anything like this done in more recent Excel versions. Probably because it is not an easy task to achieve.

Excel Chart doesn't keep format

I have a table (came from a pivot table) where I have formatted the column 4 cells to show 1 billion as 1. But when I select the table and insert a chart, I am getting my units in millions. So the 14.8 billion number for Mexico is showing up as 14,800 on the chart. Why might this be happening and how can I fix this? This is also making all my other bars negligibly small. Note that the first three columns are not in billions and are totally different things. Some are percentages, some are other small numbers.
Table:
Chart:
You need a secondary horizontal axis and some formatting on the Axes.
In Excel 2013
First change the Chart Type to Combo and select Clustered Bar for both sets of data, then Check
Secondary Axis for the Percentage Series.
Then set up the axis limits so they match, e.g.
Percentage: min -.5 max 2
Billions: min -5e9 max 20e9
Then set the percentage format on the source data to a custom Number format of "";(0)%;0%
Then set the Billions format as 0,,,;"";0
You will get something like this:
EDIT
Now that we have the general principles, we can apply them to your specific data.
I will also switch to Excel 2010 do show the different menus.
The data selection looks like this
Select the non-Billion series (plural!) and check the secondary axis
If the larger data is always positive then you can use custom formatting to clean up the axis
Align the primary and secondary axes so that the grid lines match on both
The end result is clean and readable.
Mixing percentages and numbers for the smaller numbers is not handled by this but I would suggest that that would be confusing anyway?
The simplest way to fix this might be to plot cells containing the billions values divided by 10^9 rather than to plot the billions themselves, though via a secondary axis may be possible.
Using Excel 2007. For the purple bars, the example on the left uses ColumnE values, on the right ColumnF values. E1 contains =F1/10^9 and F1 contains =14800000000:
It appears that there are 3 questions here: 1) "Why might this be happening", 2) "how can I fix this", and 3) something like "how can I plot data which lie on two widely differing ranges, and make them all reasonably visible anyway", even if there was no explicit question on this.
There are several ways to solve issue #2 about the units (e.g., billions) and numbers (e.g., 14.8 vs. 14,800.0) shown in the axis, each one with its own pros and cons:
Use Format Axis -> Axis Options -> Display units.
This might be the answer to your issue #1 as well, you might have the following selection: Display units -> Millions, and unchecked Show display units... Otherwise, I wouldn't know why you chart shows what it shows.
Use faked tick marks, as indicated in the (excellent) site of Jon Peltier
http://peltiertech.com/Excel/Charts/ArbitraryAxis.html
It gives detailed instructions on how to create tick marks on an axis with arbitrary labels (which may be text, numbers, etc.), which is more generic than what the OP wants here. In this particular case, the labels will be the desired numbers.
Create new cells containing data that would be plotted exactly the way you want.
As for your issue #3, I guess the only option is to have a Secondary Axis (see the answer by pnuts).
Thus, to come up with the best final chart for you might use a combination of one of the options I gave here and a secondary axis.

Excel graphing and axis

I have a scatterplot with values that range from 2 to -2. The catch is that 1 is the "zero-point". In other words the minimum positive value is 1.01 and the minimum negative value is -1.01. How can I edit the axis of the graph so that 0 is replaced with 1.
If you have a version of Excel later than 2007 I'd suggest splitting the positives and negatives into separate series and plotting one on a secondary axis (not that I know whether or not that would work!), but with 2007 I have not been able to place one vertical axis above the horizontal and another below. Instead the best I could manage was to use two separate charts:
by again splitting up the series, careful positioning and judicious use of a text box for 0.
At least this way you are not constrained by the outer limits.
Based on some very specific conditions you can print the zero-point as 1 using a custom number format: You have to set the axis options to be fixed at -2 (minimum) and 2 (maximum) with a major unit of 2 as well. This ensure that you only have the three values -2, 0 and 2 on the vertical/y-axis. Why is this important? Well, custom number formats can easily distinguish between positive/negative and zero values which is exactly what you have when you have -2, 0 and 2.
Here's a visual of the input/output:
The custom number format is set to 2;-2;1, thereby formatting all positive numbers to 2, all negative numbers to -2 and zero to 1.
If all you want is to replace the axis label "0" with "1" (as in the answer by Werner), then you can use the following (similar to this):
Add X and Y values for a dummy series, with 3 points. If the minimum value in your X-axis is xm, your points are (xm, -2), (xm, 0), (xm, 2).
Add cells with the 3 labels that you will use for the dummy series: "-2", "1", "2".
Go to the chart, and remove the tick labels of the Y-axis.
Add a series with the 3 dummy data points.
Add the labels to the data points. You can use references to the cells of item 2, or enter explicit labels. Entering each label (either a reference or an explicit label) is tedious when you have many data points. Check this, and in particular Rob Bovey´s add-in. It is excellent.
Format the dummy series so it is visually ok (e.g., small, hairline crosses, no line).
You can use variations on this. For instance, you can add extra points to your dummy series, with corresponding labels. Gridlines would match the dummy series.
But I think this is not appropriate, as the locations of your data points will be inconsistent with the scales.
What is appropriate is having an interrupted axis, where the interval (-1,1) is eliminated.
The answer by pnuts aims at that.
I propose something different, with the advantage of using only one chart:
Create a column where you add 2, only to negative Y-values. Use that column as your new Y-values.
Use the same trick as above, with your dummy series now being (xm, 0), (xm, 1), (xm, 2), and the labels the same as above.
You can use additional points in your dummy series.
You can use this technique to create an arbitrary number of axis interruptions. The formula for the "fake" Y-values would be more complicated, with IFs to detect the interval corresponding to each point, and suitable linear transformations to account for the change in scale for each interval (assuming linear scales; no mixing linear-log). But that is all.
PS: see also the links below. I still think my alternative is better.
http://peltiertech.com/broken-y-axis-in-excel-chart/
http://ksrowell.com/blog-visualizing-data/2013/08/12/how-to-simulate-a-broken-axis-value-axis/
http://www.tushar-mehta.com/excel/newsgroups/broken_y_axis/tutorial/index.html#Rescale%20and%20hide%20the%20y-axis

Excel chart: on/off values with timestamp

I have 3 columns of data, eg:
http://i.stack.imgur.com/XjGmu.jpg
When Excel creates a line graph of this, the blue line is what i get.
This is not correct because the time stamp shows the time when something is switched on (255) or off (0) (could also be the current state eg 16:08). So I'd like a graph like this - see the red line (with a time-based X axis off course):
http://i.stack.imgur.com/vNvPk.jpg
Anyone can help? Thanks
As #Jon49 indicated, you need to plot additional data points--two y values for each x value: one to plot the point at y=255 and one to plot y=0.
If the time-span of the data is at least a few days, you can use a line chart. But in your case since the values are within a day, the scatter chart with straight lines is the only option due to the limitations of the scale units for line charts.
The key is the values need to be in the correct order. Each y=255 value needs to be followed by the next time-stamp's 255 value followed by it's 0 value, followed by the next time-stamp's 0 value:
Excel doesn't support this type of discrete value graph (at least not excel 2k3 that I am using); your best bet is to use a bar graph and then go into the settings and set the gap width down to zero.
Not sure what the best way is but I would automate what I describe below on how to do (unless this is a one time deal, then just brute force it):
Separate the 255s from the 0s. Make sure for every 0 time there is a corresponding 255 time. Take the zero times and put in a scatter plot then add a y-error bar and make the fixed value equal to 255. Format to how you like it.
Now for the 255s. Add those to the chart by pairs. Make the chart type for these pairs scatter plot with a line. Format how you would like them to look.
Let me know if that doesn't make sense to you.

Resources