Hello Kohei, Eike, all,


for public interest, I post my knowledge about formula separators in MS Excel into the mailing list...

After some testing with different Excel versions with different UI languages (3.0 German, 4.0 German, 5.0 German, 2003 English and German, 2007 English) in combination with different system locales (German, English, French, Japanese), I think it works following the rules below.

There are 4 types of variable formula separators/operators in Excel:
1) Function parameter separator
2) Union operator (range list operator)
3) Array column separator
4) Array row separator

1) and 2) are always equal. 3) and 4) are always different. 1) and 2) are independent from 3) and 4). All separators are dependent on, and may change with the current system decimal separator.

All other formula operators are fixed and independent from current system settings. Group separators (a.k.a. thousands separators) are not allowed in formnulas.



1) 2) The Parameter Separator / Union Operator
==============================================

Example (english): =SUM(0.5,1,(A1,A2))

The parameter separator is taken from the Windows regional settings ("list separator"). By default, Windows uses the comma or the semicolon, dependent on the locale. This default is independent from the default decimal separator.

Examples:

System locale        Default decimal separator  Default list separator
----------------------------------------------------------------------
en_US (USA)          Period                     Comma
de_DE (Germany)      Comma                      Semicolon
de_CH (Switzerland)  Period                     Semicolon

Both separators can be changed manually, e.g. to a # or *, which may cause any kind of confusion in Excel (e.g. the list separator set to the asterisk makes it impossible to enter multiplication, tried with Excel 5.0 and 2003). If both separators are equal, Excel changes the list separator to a semicolon. If both separators are the semicolon, Excel DOES NOT change the list separator to something else, which leads to unusable formulas.

Examples:

Legend:
DecSep = current system decimal separator
ListSep = current system list separator
ParamSep = resulting parameter separator / union operator in Excel

DecSep  ListSep    ParamSep    Example formula
--------------------------------------------------------
  .        ,           ,       =SUM(0.5,1,(A1,A2))
  .        ;           ;       =SUM(0.5;1;(A1;A2))
  .        .           ;       =SUM(0.5;1;(A1;A2))  (*)
  .        #           #       =SUM(0.5#1#(A1#A2))

  ,        ;           ;       =SUM(0,5;1;(A1;A2))
  ,        .           .       =SUM(0,5.1.(A1.A2))
  ,        ,           ;       =SUM(0,5;1;(A1;A2))  (*)
  ,        #           #       =SUM(0,5#1#(A1#A2))

  ;        .           .       =SUM(0;5.1.(A1.A2))
  ;        ,           ,       =SUM(0;5,1,(A1,A2))
  ;        ;           ;       =SUM(0;5;1;(A1;A2))  (**)
  ;        #           #       =SUM(0;5#1#(A1#A2))

  #        .           .       =SUM(0#5.1.(A1.A2))
  #        ,           ,       =SUM(0#5,1,(A1,A2))
  #        ;           ;       =SUM(0#5;1;(A1;A2))
  #        #           ;       =SUM(0#5;1;(A1;A2))  (*)

(*)  parameter separator changed to semicolon
(**) both system separators semicolon, leads to unusable formula



3) 4) The Array Separators
==========================

Example (english): =SUM({1.5,2;3,4})

A) The array column separator is dependent on the Excel UI language, especially the default decimal separator of this language. Possible are the period (e.g. English UI) and the comma (e.g. German UI). If it is a period, the array column separator will be a comma. If it is a comma, the array column separator will be a period.

B) The array row separator is a semicolon.

C) If the array column separator or the array row separator are equal to the current system decimal separator, the respective array separator is replaced by a backslash.

Examples:

Legend:
ExcelUI = current Excel UI language (with internal decimal separator)
DecSep = current system decimal separator
ColSep = array column separator
RowSep = array row separator

ExcelUI      DecSep    ColSep RowSep    Example formula
----------------------------------------------------------------
English (.)    .         ,      ;       =SUM({1.5,2;3,4})
English (.)    ,         \      ;       =SUM({1,5\2;3\4})  (*)
English (.)    ;         ,      \       =SUM({1;5,2\3,4})  (*)
English (.)    #         ,      ;       =SUM({1#5,2;3,4})

German (,)     ,         .      ;       =SUMME({1,5.2;3.4})
German (,)     .         \      ;       =SUMME({1.5\2;3\4})  (*)
German (,)     ;         .      \       =SUMME({1;5.2\3.4})  (*)
German (,)     #         .      ;       =SUMME({1#5.2;3.4})

(*) one array separator replaced by backslash



Conclusion: This is a big mess, and I want to see fixed separators... ;-)


Regards
Daniel


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to