PrecisionCalc
xl
Precision
Get Your Numbers Right
xlpMODE
Returns the most frequently occurring of the numeric arguments, with up to 32,767 significant digits of precision. Same as Excel's builtin MODE function, but with high precision.
Can optionally return a table of all unique numeric arguments in one column, with the count of times they occur in another column, sorted from most frequently occurring to least frequently occurring.
To return a table, xlpMODE must be arrayentered. To arrayenter an xlpMODE formula, follow these steps:
 Select the cells in which you want the table. The selection must be two columns wide, and as many rows high as desired.
 With the cells selected, type the formula in the topleft cell of the selected cells. Do not press Enter yet!
 With the cells still selected, and with the topleft cell still in Edit Mode (because you haven't pressed Enter yet), press and hold down the CTRL and SHIFT keys.
 With the cells still selected, and with the CTRL and SHIFT keys still held down, press Enter.
 You should see the table in the selected cells.
Syntax
xlpMODE(numlist...,,format)
numlist...  Required. The list of numbers and/or cell ranges for which to find the average. Accepts up to 29 numlist arguments, or up to 28 if the optional format argument is used. Ignores text that can't be evaluated to a number. Ignores blank cells.  
format  Optional.
Determines formatting options (formatting negatives with parentheses instead
of a leading hyphen, adding thousands separators, adding currency symbol,
and formatting in exponential notation), and setting maximum significant
digits. Also determines whether to return a table of all unique numeric arguments in one column, with the count of times they occur in another column. Any argument that begins with the text "format:" (must include the colon at the end) is evaluated as a format argument. Each of the four format options can be used individually in separate arguments, or any number of them can be combined in the same argument. When combining multiple format options into one format argument:
Must be enclosed in double quotes ("") if included directly in an xlpAVERAGE argument. Double quotes are not necessary if the format argument references a cell in which the format argument is entered. May be included anywhere in the series of xlpAVERAGE arguments  can be the first argument, or the last, or anywhere inbetween. The format argument is not case sensitive. 

format value 
Result  
format:table  Returns a table of all
unique numeric arguments in one column, with the count of times they occur
in another column, sorted from most frequently occurring to least frequently
occurring. If format:table is used, other format arguments are applied to all values in the table. 

format:blank=<text>&  If format:table is used, determines the text used in any extra cells.  
format:negative  If return value is
negative, it is formatted with parentheses ("()") instead of the default
leading hyphen (""). You can also format negatives with a red font. 

format:thousands  Return value is formatted with thousands separators (commas in English).  
format:currency  Return value is formatted with the local currency symbol. The currency symbol will be added either to the beginning or to the end of the result, whichever is appropriate for the locale.  
format:exponent  Return value is formatted in exponential notation.  
format:MSD=n  Determines the maximum number of significant digits to be returned. Default is 100, or the user's custom maximum set in the About box, or the maximum number allowed by the edition of xlPrecision, whichever is less.  
Examples of valid combination format values 

format:negative,thousands,currency,MSD=200 (recognizes negative, thousands, currency, and MSD=200) 

format: negative  thousands  currency  MSD=75 blah blah this
extra text is ignored (recognizes negative, thousands, currency, and MSD=75) 

format:negativethousandscurrencyMSD=1000 (recognizes negative, thousands, currency, and MSD=1000) 

FORMAT:NEGATIVE,THOUSANDS,CURRENCY,MSD=200 (recognizes negative, thousands, currency, and MSD=200) 

Format:Negative,Thousands,cUrReNcY,msD=200 (recognizes negative, thousands, currency, and MSD=200) 

format:MSD=200,thousands,negative,currency (recognizes MSD=200, thousands, negative, and currency) 

format:table blah blah this extra text is ignored blank=empty& (recognizes table, and blank text = "empty") 

format:currency,thousands (recognizes currency and thousands) 

Examples of invalid combination format values  
format negative,thousands,currency,MSD=200 (missing colon (:) after "format") 

format = negative,thousands,currency,MSD=200 (missing colon (:) after "format") 

Examples of partially valid combination format values  
format:negative,thousands,currency,MSD200 (recognizes negative, thousands, currency, BUT missing "=" after "MSD") 

format:negative,thousands,currency,MSD:200 (recognizes negative, thousands, currency, BUT missing "=" after "MSD") 

format:negative,thousand,currency,MSD=200 (recognizes negative, currency, and MSD=200, BUT "thousands" is misspelled as "thousand") 

format:negative,thousands,currency,MSD=1,000 (recognizes negative, thousands, currency, BUT MSD is recognized as 1, not 1000, because the comma (",") is not a numeric digit) 
Remarks
When using the table format, if different formats are desired for the two columns, enter two sets of adjacent array formulas, hide the inner two columns, and format each array formula as desired. For example, if currency and thousandsseparated formatting is desired in the right column but not in the left column:
Arrayenter an xlpMODE formula with "format:table" in columns A and B
Arrayenter an xlpMODE formula with "format:table,currency,thousands" in columns C and D.
Hide (Format  Column  Hide) columns B and C.
xlPrecision results are returned as text that look like numbers, not as values that Excel recognizes as numbers. This is because Excel would truncate the results to 15 significant digits if it recognized them as numbers.
format:negative, format:thousands, format:currency, and format:exponent are all ignored by the 25 SD edition of xlPrecision.
format:thousands and format:exponent ignored by the 35 SD edition of xlPrecision.
format:MSD=n is ignored if it is higher than the maximum significant digits allowed by the edition of xlPrecision.
Use format:MSD=n to increase calculation speed where desired. The lower the number used, the faster the calculation.
numlist can accept cells with both numbers and text.
numlist can accept cells with text formatted with the local currency symbol and thousands separators, and negatives can be formatted with either a leading hyphen or parentheses.
You can use the results of xlPrecision functions as the operands in other xlPrecision formulas without losing any precision, but using them as operands in Excel's arithmetic functions will truncate them to 15 significant digits.
If the return value is so large that it has more than 32,767 characters to the left of the decimal, then xlPrecision is of course unable to return a correct value and instead returns "#VALUE!". Note, that's a vastly larger number than Excel can return without xlPrecision. Excel itself can only return or recognize a number with no more than 308 digits to the left of the decimal.
Decimal symbols, thousands separators, and currency symbols are all localized. This means that an xlPrecision formula that returns "$1,234,567.89" in the USA will return "1.234.567,89 €" in Germany, "1 234 567,89 €" in France, "1 234 567.89 kr" in Estonia, and "1.234.567,89Lek" in Albania.
The 32,767 SD edition can only provide a maximum of 32,767 total characters, including all formatting characters such as decimal, leading hyphen or parentheses for negatives, and thousands separators. As a result, it can only return the maximum 32,767 significant digits when the result is an unformatted positive integer. This is due to Excel's limitation of 32,767 characters in a cell. In all cases, the 32,767 SD edition will give you as many significant digits as possible with the formatting you have chosen.
Depending on how many significant digits the edition of xlPrecision provides, the result may be too long to conveniently view. You can view the full result by rightclicking the cell and choosing Format Cells  Alignment  Wrap Text, and widening the column to the width of the screen. An easy way to view the full result without changing column widths or wrapping text is to rightclick the cell, choose Copy, and then paste into Notepad or a word processor.
Examples
Formula  Description  Result  
=xlpMODE(1,2,2,2,3,3)  Most frequently occurring of 1,2,2,2,3,and 3  2  
=xlpMODE(A1:B2)

Most frequently occurring of values in cells A1:B2  10  
=xlpMODE(A1:C3)

Most frequently occurring of values in cells A1:C3, ignoring text in cell B1 and ignoring blank cell (C2) 
30 

=xlpMODE(A1:C3,"format:negative,thousands,currency")

Most frequently occurring of values in cells A1:C3, ignoring text in cell B1 and ignoring blank cell (C2), and formatting with parentheses for negatives, with thousands separators, with local currency symbol, and limiting significant digits to 20  ($30,000)  
=xlpMODE(A1:C3,format:negative,thousands,currency)

Most frequently occurring of values in cells A1:C3, ignoring text in cell B1 and ignoring blank cell (C2), and with double quotes missing from around formatting argument 
30000 (missing double quotes around format argument)


=xlpMODE(A1:C3,A4)

Most frequently occurring of values in cells A1:C3 and A4, ignoring text in cell B1 and ignoring blank cell (C2), and formatting with parentheses for negatives, with thousands separators, with local currency symbol, and limiting significant digits to 20 
($30,000) (double quotes around format argument not necessary if format argument references a cell in which the format argument is entered) 

=xlpMODE(A1:C3,A4)

Most frequently occurring of values in cells A1:C3 and A4, ignoring text in cell B1 and ignoring blank cell (C2), and formatting in exponential notation  3.0E+4  
=xlpMODE(A1:C3,"format:currency",A4:A5)

Most frequently occurring of values in cells A1:C3 and A4:A5, ignoring text in cell B1 and ignoring blank cell (C2), and formatting with parentheses for negatives, with thousands separators, with local currency symbol, and limiting significant digits to 20  ($30,000)  
=xlpMODE(A1:C26,"format:table,thousands,blank=&") (arrayentered in C1:D20)

Most frequently
occurring of values in cells A1:C3, ignoring text in cell B1 and ignoring
blank cell (C2), and returning a table of all unique numeric arguments in
one column, with the count of times they occur in another column, sorted
from most frequently occurring to least frequently occurring.
Also, formatting all values in the table with thousands separators, and displaying "" in unused cells. 

See Also