I want to represent numbers in a table I've created in InDesign as a scaled bar chart, similarly to the image below. Is there a way to do this in InDesign or Illustrator without manually adding and sizing rectangles for each cell? What about replacing the numbers with glyphs to represent scale?
The cool way
There's a font for this called FF Chartwell (no affiliation), which I have personally used for different annual reports and white papers. All the data is editable as numbers via the Story editor in InDesign, as the presentation video shows.
Each of the styles below sells as a separate font for about 20$. What you probably need is the 'FF Chartwell Bars Vertical' seen in the first graph below.
If you must construct this chart inside the table
I would use the black square character found in Arial. Any other font would work if it includes a square-looking glyph. I would insert this in each cell and construct the bars by scaling and positioning this inside the cell. With the proper settings it could be perfectly aligned inside each cell, then size it by doing some simple math.
You could extend the 100% value to 1000% horizontal scaling, then multiply with 0.94 for the 94% value and so on. This way you are not linking external files, not using anchored objects or overlays, and the bars will stay in place whatever other edits you do to the table.
Imho, I would use Illustrator graph tool.
Now, let's have some fun and bring some magic into INDD using GREP.
The idea is to create character styles that would apply a strike-through to space after a given number. In the example below, I used 5 to 5 steps:
Then use Grep styles in your paragraph style in order to catch the space, in regard of the given number.
Finally, type any number from 0 to 100, press tab and space bar and enjoy the magic...
Decimal numbers could also be set up with advanced Grep.
I apologize ahead of time, because this answer seems simple enough that you may have already decided it wouldn't work for your situation. But, I know that I often over-complicate things and need someone to point out an obvious solution, so I thought I would post this anyway.
You could just create a table with 41 columns, with the numbers in the leftmost column and 40 cells. Fill the entire table with green, and set thick green row strokes. Add your numbers to the left column and then fill the applicable number of cells to the right of each number with blue. I chose 40 columns so that I could fill 10 cells in the row labeled 70. While creating the table, I had an additional row at the top with an asterisk character in every fifth column to make the counting easier. I deleted this row when I was done filling the cells with blue. You will probably have to tweak some of the default cell margins to create a table as narrow as your example.
I saw in your comment that you were hoping to have one bar per cell, and this doesn't seem to fit that criteria, but otherwise it might work for you.