nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
Other
2.06k stars 625 forks source link

Excel: "minus" not read on negative numbers with "accounting" cell formatting #12366

Open jaselson opened 3 years ago

jaselson commented 3 years ago

Steps to reproduce:

  1. Create a new blank sheet in Excel
  2. In the first cell type '-123'
  3. Open the context menu, select "cell formatting", select "accounting"
  4. Try to read the cell with NVDA, note no minus symbol is announced

The same is also true for the "Currency" cell formatting when the "Negative Numbers" option set to the second option which uses red text without a minus symbol to denote negative number. See https://github.com/nvaccess/nvda/issues/12366#issuecomment-833191710

Actual behavior:

Cell formatting:

Expected behavior:

"minus 43 dollars A1"

Technical information:

Excel is giving NVDA the post formatted value of the cell i.e. as it is presented. This makes it very difficult to announce the value accurately.

If we could access the raw value of the cell, we could present that. Ideally we would provide ways to present both/either raw value or presentation.

System configuration

NVDA installed/portable/running from source:

Installed

NVDA version:

2020.4

Windows version:

Windows 10 Pro 64-bit

Name and version of other software in use when reproducing the issue:

Excel 2016 and Adobe Acrobat Pro DC 2021.001.20150

Other information about your system:

Dell XPS

Other questions

Does the issue still occur after restarting your computer?

Yes

Have you tried any other versions of NVDA? If so, please report their behaviors.

No

If add-ons are disabled, is your problem still occurring?

N/A

Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?

Not tried

feerrenrut commented 3 years ago

I can't reproduce this issue with Excel for Office 365. After resetting my NVDA config to default settings, I tried:

Some things to check:

If none of these things help, please supply an example excel spreadsheet. You can add this to a zip file and attach that to a comment. This will help by ensuring we are at least looking at the same data.

feerrenrut commented 3 years ago

I have been able to reproduce this issue. Only if I set the "Negative Numbers:" option in Excel, cell formatting, currency to the second option which has no minus symbol but the text in red.

image

All other options (that have a minus symbol displayed visually) result in the minus symbol being spoken. For this option, the user would have to use NVDA+F to report the formatting, and hear that the text is red.

Really, excel should be providing the minus symbol to screen readers (such as NVDA). This issue also affects Narrator.

While we certainly agree this is important, it is unlikely to be fixed soon. We might be able to workaround the issue in NVDA by checking the number formatting, and then checking the color of the text and adding a minus symbol, but this is error prone.

To make this document accessible now, change the negative number format to one that includes a minus symbol.

I strongly suspect doing this, then exporting to PDF will resolve the issue. However, this may not be the formatting you wanted.

jaselson commented 3 years ago

Thanks both, you have solved my problem. I had set the cell formatting to Accounting which places "-£" to the left of the cell with the number on the right as I visually preferred it. This doesn't give any options for negative numbers but does display them with a minus. I then set conditional formatting to colour any negative numbers differently.

Setting the cell formatting to "Number" and choosing the formatting for negative numbers works correctly.

It's a shame setting the cell format to Accounting doesn't work though as I've been persuading my customer that all the cells in my table need figures for accessibility (i.e. £0 rather than blank cells, and £- doesn't read out) and to not put negative numbers in parenthesis as they would prefer with Accounts. This has been my biggest challenge - making the standard format for a balance sheet accessible as my customer says adding £ signs and £0 amounts makes the information too busy.

Is there any best practice for accounts and balance sheets you could point me to?

jaselson commented 3 years ago

Sorry, I said both people when it was just the one person (who was super helpful :))

feerrenrut commented 3 years ago

Ah, I see. Yes, I can also reproduce the issue with the accounting category. Sorry, I don't have any best practices for you, though you may want to look at the "currency" cell formatting option.

I'm going to make some edits to the initial description, so that we can track this bug.

feerrenrut commented 3 years ago

@jaselson When using the "accounting" option, it is possible for the screen reader to announce the "-$" symbols. Setting symbol mode to "all" with NVDA + p will read them as "dash dollar". The minus symbol is interpreted as a dash because it is not next to a number.

I still think this is a bug, it is putting visual presentation before accuracy in an application where accuracy really counts.

britechguy commented 3 years ago

This seems closely related to this feature request from 2018: https://github.com/nvaccess/nvda/issues/8875

That feature request was subsequent to this topic on the Groups.io NVDA Group: https://nvda.groups.io/g/nvda/topic/27393769

It is actually shocking to me that this issue remains unresolved almost 3 years later. The use of standard visual formats is common practice in accounting and those formats tell the person reading them by sight information about whether the value itself is positive or negative. In a screen reader, if the value of the cell (whether numeric or currency) is negative, it must be announced as such if accuracy for the user is to be maintained. It doesn't matter how it's presented visually without the actual negative sign, the value itself is negative, and that's what matters here.

feerrenrut commented 3 years ago

This needs to be reported to Microsoft Office. There isn't really anything NVDA can do about it until the information is exposed by Excel.

britechguy commented 3 years ago

This needs to be reported to Microsoft Office.

Has this been done? It bears a lot more weight coming from NVAccess as an organization, and direct reports to MS have been done in the past.

feerrenrut commented 3 years ago

We'll do what we can, in the mean-time we still recommend giving feedback directly via feedback hub.

Adriani90 commented 1 year ago

I think this is an NVDA conceptual issue, this does not have anything to do with Microsoft Excel. Open for example notepad or any text editor, and type -5000, then pres down arrow. Alternatively, type - 5000 and press down arrow. NVDA will ignore the minus sign when there is a space unless your symbol level is set to most. MS Excel adds a space between minus and the number when applying accounting format, this is probably better for visibility which is very important for accounting where people have to handle really big tables overloaded with numbers. I would say the only way to solve this is to add a custom function in NVDA which always reports dashes when there is a space between the dash and the number. And this should only apply for numbers. Note that for what ever reason this works as expected when you type +5000 and + 5000.

cc: @seanbudd

britechguy commented 1 year ago

@Adriani90

The problem being that Accounting format does not include minus signs, period. In accounting, a negative value is indicated by enclosure in parentheses. This has been accounting convention since before I was born.

If the value in the cell is -125.37, and formatting is Accounting, then what's displayed is $(125.37). That is never, ever going to change, as it is accepted accounting convention.

Any screen reader that's dealing with spreadsheets needs to account for negative values for something like this. There is no negative sign shown at all in accounting format.

Currency format is a different issue, and you can choose to have a minus sign in front of the dollar sign or use something that looks exactly like Accounting format where parentheses indicate a negative value, and this is whether or not red color is applied as well. You can also have just red applied for a negative value.

What is critical is the cell value, which is what a screen reader should communicate, rather than its presentation format. If I'm working with some spreadsheet where negative numbers are in use, I must know that the value I'm on is, indeed, negative, regardless of the formatting applied. The value is far more important, in context, than the format used to present it.

And both Accounting and Currency formats apply only to numeric values. When I apply Accounting format in Excel 2016 there is no option for a minus sign, only a specification of decimal places, and negatives are always indicated visually via enclosure in parentheses. If I apply Currency format, and select the option that employs a minus sign, there is no space between the minus sign and the leading dollar sign. All the remaining currency options use either a red color, enclosure in parentheses after the dollar sign, or both in combination to denote a negative number.

I have never seen anything otherwise, and unless Microsoft changed the default formats in later versions of Excel, which would be highly unusual, it should still be this way.

XLTechie commented 1 year ago

CC @michaelDCurran

Adriani90 commented 1 year ago

While this is true for the english language, it is not always the case, depending in which language your windows is. You can even change how negative figures are displayed in Windows settings / clock / numbers. MS Excel uses the Windows setting natively to display negative values when choosing accounting cell format.

However, I've discovered that enabling UIA for Excel in NVDA settings reports the negative number with minus even when accounting format is chosen.

britechguy commented 1 year ago

However, I've discovered that enabling UIA for Excel in NVDA settings reports the negative number with minus even when accounting format is chosen.

That's great, and language issues aside, if UIA for Excel is not the default NVDA setting, this is still a problem. However it does it for any given language community, if a number is negative that needs to be clearly indicated when working with Excel, even if the format itself does not use the minus symbol as the method. That was really my central point and concern. How a numeric value is formatted is important as far as how it's presented to the sighted, but when you're actually working with those numbers directly it's their value that's critical. Knowing that something is negative/less than zero/a debit value rather than positive/greater than zero/a credit value is just critical in the milieu of Excel.