XESS Spreadsheet - Version 5.0


Copyright 1990 - 2000 Applied Information Systems, Inc.
Chapel Hill, NC, USA
All Rights Reserved

XESS is a licensed registered trademark of Applied Information Systems.


Overview of XESS Spreadsheet

The Best Spreadsheet for Business, Technology, and Personal Use

The XESS spreadsheet application is designed specifically for users who want familiar spreadsheet functionality and ease-of-use right on their X Windows platform without any emulators! By using the intuitive XESS user interface, you can easily access its powerful computational, reporting, and graphing tools.

You need only a few keystrokes or mouse clicks to analyze your data and then present the results with graphs ranging from simple line plots to 3D surfaces. You can create attractive reports just as easily. And you can just as easily publish them as web pages.

The XESS spreadsheet provides a flexible and comfortable visual environment in which to handle simple or complex calculations and data manipulations and anything in between. It calculates a full range of mathematical, statistical, matrix and string functions all with the ease of a familiar spreadsheet format with point-and-click screen displays and pull-down menus.

XESS 5.0 is fully upward compatible from XESS Version 4 (Xess4). References to XESS throughout this document refer to any version of the XESS spreadsheet. Things which are applicable to a specific version of the XESS spreadsheet or its environment are qualified as such.

The XESS product line includes spreadsheet products for most Linux, UNIX, OpenVMS, and Windows NT systems. Optional products provide additional capabilities, including a developer's SDK for tightly integrating with other applications, the xsBasic Macro Add-in facility, and industry-specific applications.

Computational Functions

XESS supports all arithmetic, Boolean, and logical operators available in the C programming language, plus special XESS matrix functions which allow matrix, vector, Fourier transform, and similar operations to be entered and recalculated as simply as other spreadsheet functions.

Other features of XESS calculations include:

Supported File Types

You can save XESS files in the native XESS format or in other common spreadsheet formats such as the XLS, WKS ,WK1, or WK3 formats used by many spreadsheet programs. The XESS format has the advantage that it can be easily mailed among systems without the need for any filtering.

XESS directly creates print files in two formats for printing later or incorporating into other documents: ASCII or PostScript. This gives you the freedom to use the format best suited for your application. Filters are provided which support print preview and printing to non-PostScript printers (e.g. PCL).

The PostScript output format gives you flexibility of producing WYSIWYG output, with the printed output matching the chosen font styles and sizes, graphs, and images on the display. The PostScript Files created by the XESS Print operation are widely accepted into other documents.

You can also produce output in LaTeX or HTML formats for use in other applications or for display using browser technology. You can create area, bar, stacked bar, line, scatter, X-Y, polar, histogram, pie, high-low, box, control, contour and surface graphs of the data in your spreadsheets, with user-selected formats, colors, scaling, axis characteristics, labeling, and annotation.

Using XESS

XESS is an X Window System compatible spreadsheet that runs under X11 release 5 or later on a wide variety of computers and operating systems. While many of the supported systems are Unix variants (including Linux), Unix is not a requirement for XESS. XESS is supported on a number of X Windows platforms based on other operating systems (e.g. OpenVMS on VAX and Alpha AXP systems, Windows NT).

XESS was designed in accordance with Open Software Foundation, Inc. style guidelines for OSF/Motif software applications. Therefore, the look and feel of XESS should be familiar and intuitive to anyone who has used OSF/Motif applications before. In fact, OSF/Motif conventions such as pull-down menus, scroll bars, list boxes, pop-up dialog boxes, buttons to click on and off, and multiple windows should look familiar to anyone who has used a windows type program, including those that operate on Apple or IBM-compatible personal computers.

XESS is designed to be easy to learn and easy to use:

Major Features of XESS

XESS disproves the old theory that sophisticated programs have to be difficult to use. XESS is feature-rich, but it makes these features accessible with convenient menus and dialog boxes. Here is a sampling of what you can expect from XESS in major functional areas:

Accessing Workbooks

Manipulating the Workbook

Functions and Tools

Defining the Appearance of the Spreadsheet and Display

XESS Calculations and Functions

Creating Graphs and Reports


How to Get Help

XESS is designed to be easy to learn, using a familiar spreadsheet format and self-explanatory menus and messages. However, you may encounter situations where you need help. Accordingly, you can take advantage of

Using On-Line Help

There are several types of on-line help:

To select a help topic:

  1. Select Index... from the Help menu. XESS displays the XESS Help dialog. Click on a topic in the Help Topics list that is shown with a page icon to view the help on that topic. When you click on a topic shown with a closed-book icon, the "book is opened" and topics within that book are shown and the closed-book icon is replaced with an opened-book icon. Clicking on this icon "closes the book".
  2. In the XESS Help dialog box you will be able to read about the topic you selected. If necessary, use the scroll bars to view all the information about the topic.
  3. Any keywords or phrases that are highlighted in the help text are links to other on-line help topics. Simply click on these keywords to go directly to the corresponding help topic. To return back to where your were, click the Back button.
  4. Use the Search option of the Help dialog to locate topics which relate to the keywords you specify. Words that must be found in the topic should be preceded by a plus (+) character; those that must not, by a minus (-). The result of the search operation is a list of topics displayed in the Search Help File dialog. Click on these topics to view the related help. The topics that best match your query are displayed first in the list.
  5. Click Cancel to dismiss the XESS Help dialog box

Through the Help menu, you can get information on:

The Help dialog can be resized to display more of the help at one time. The relative size of the help area versus the help topics area can be adjusted by dragging the indicator between the scroll bars. You can also get context sensitive help while performing an operation that uses a dialog box.

To get help from a dialog box:

  1. Select an XESS operation, for example, select Save As from the File menu.
  2. XESS displays the Open Sheet dialog box.
  3. Click Help. XESS displays the Help dialog box. The dialog box contains information about opening workbooks. Use the scroll bars to view all the information.
  4. Click Cancel to dismiss the XESS Help dialog box and resume the Save operation.

The help file is formatted as HTML which makes it possible to access on-line help outside XESS with a standard HTML browser such as that provided with Netscape.

Help is also available using the Help on feature or the [?] toolbar icon. First click Help on or [?], and then click on the feature of interest. XESS then displays a pop-up description of the feature. These pop-up features, tips, are automatically displayed when the cursor is over a toolbar icon.

Error Messages

Have you ever wasted time doing detective work, trying to find the source of a problem while a spreadsheet program beeps warnings at you? If so, you will appreciate the XESS difference. XESS error messages do more than notify you of a problem; they describe the nature of the problem and provide clues to resolving it.

For example:


The message:
       Error:  Goal Seek - variable cell must be a constant
means:
       The independent cell to be changed during Goal Seek 
       must not contain a formula.

XESS displays error messages on the Message Line at the bottom of the primary spreadsheet display. A full list of XESS error messages and values and what they mean is contained in Appendix C of the User's Guide.


Primary Spreadsheet Window

Components

The standard primary XESS display window has several distinct areas:

You can control which of these are actually being displayed by using the Display Options dialog from the Options menu.

There is a primary XESS display for each open workbook.

Main Menu Bar

The main menu bar stretches across the top of the primary XESS display area, beginning with the word File and ending with the word Help. The words in the menu bar do not directly carry out commands; they are buttons that display pull-down menus organized in functional groups containing commands for XESS operations.

If you open multiple workbooks within the same XESS session, each workbook will be attached to its own main menu.

Toolbar

The Toolbar is a set of icons (little pictures) below the main menu. Each icon is a push button which provides a short-cut to the associated operation. Positioned from left to right the icons are:

To display or remove the toolbar:

  1. Select Display Options from the Options menu to display the dialog box.
  2. Click the Toolbar check button on to display the toolbar or off to remove.
  3. Click Apply or OK to complete the operation.

Edit Line

The Edit Line is used for:
It contains the current cell indicator, followed by two check boxes used for accept and cancel when edit mode is active, followed by the cell contents. The cell contents field is a scrollable field.

Data Area

The data area is a rectangular grid defined by a sheet reference (identified by a name on the sheet tab), columns (identified by letters) and rows (identified by numbers). Each block within this grid is a cell, which is where you enter data and formulas. Each data element in the grid has a unique location whose address is defined by the name convention, Sheet!RC (e.g. Sheet1!A1 )

For sheets larger than the window, XESS shows only part of the sheet on screen at a time. To access other areas, you can scroll through the sheet using the scroll bars or the arrow keys on your keyboard. All components of the Data Area may be selectively removed from the display using the Display Options dialog.

XESS spreadsheets are a computerized version of a ledger pad, with information stored in a row-by-column table of cells. A group of sheets which work together and are saved in a single disk file is called a workbook. The cells in a sheet may contain several types of information:

Text
Text entries are useful for labeling columns and rows, for including comments about data values being calculated, and for managing textual data such as lists of names and addresses. A text string may be up to 4095 bytes. XESS accepts any character defined for your locale. By default, this is the ISO 8859-1 (Latin-1) character set.
Numbers
XESS treats numeric entries as constants, which you may change by editing the cell but which are not changed when the workbook is recalculated.
Dates and Times
XESS accepts date and time entries in several formats and displays these in the format you choose. You can perform calculations with dates and times. XESS supports both 1900 and 1904 date systems for compatibility with other spreadsheet products.
Formulas
Formulas are the backbone of the spreadsheet, defining and calculating mathematical relationships between elements of the spreadsheet. XESS formulas can calculate with numbers, text, logical values, cell references, and other formulas.
Graphs
Graphs created in XESS can be stored directly in a cell in the sheet. Once stored in the sheet, standard operations can be used to change its cell location.
Images
Images created outside XESS may be included in the body of a sheet by establishing a link in the cell where you want the image to be displayed. Several image formats are supported. Refer to File->Link for more details.

A Cell Note can also be associated with each cell, but is not considered as the value of the cell. A cell with a cell note is displayed with a small dot in its upper right corner. When the mouse cursor is positioned over the cell, the note is displayed in a pop-up window.

Overlay Objects can be drawn and displayed on top of the Data Area. As an option, they can be positioned relative to a cell and will scroll in the display area along with the associated cell.

Column Border

A horizontal row of letters that identify each column of cells in the sheet. The first 26 columns are labeled with single letters (A to Z); the remaining columns are labeled with double and triple letters (AA to FAN). The column of the current selection is highlighted in reverse video or a different color, depending on your monitor.

Row Border

A vertical column of numbers (1 to the maximum row allowed) that identify each row of cells in the sheet. The row of the current selection is highlighted in reverse video or a different color, depending on your monitor.

Select All Button

A push button at the intersection of the row and column borders (in the upper left section of the XESS display) selects all cells in the in the current sheet in a workbook. For example, if your maximum row number is set to 60,000, then the selection would be A1..AMI60000.

Sheet Border and Sheet Tabs

A horizontal row of sheet tabs at the bottom of the Data Area (above the Message Line) that have sheet tab scrolling buttons on the far left and far right. One view always contains one active sheet. The tab of the active sheet is typically highlighted in some manner. To display multiple sheets within a workbook at the same time, you must create a view for each sheet and set each view to the desired active sheet.

Sheet Tab Scroll Buttons

To the left and right of the Sheet Tabs below the Data Area (just above the Message Line) are scrolling buttons which allows you to easily scroll the Sheet Tabs when the number of tabs exceeds the width of the window. In the figure below these are the three buttons on the far left and far right equating to reverse and forward tab scrolling respectively.

Message Line

The message line is displayed at the bottom of the primary display. It is used to display status and error messages about a current operation or calculation condition.

Multiple Views

The primary XESS display for a workbook contains all of the elements. In addition, you may create multiple secondary windows of the spreadsheet data area to display other areas of the current sheet or of other sheets in the current workbook. Secondary windows contain only the spreadsheet data, sheet tabs, and scrolling bars. They do not have a menu bar, toolbar, edit line, or message line.

Each secondary window can be sized, navigated, and manipulated independently using the main menu bar along with standard scrolling and window management facilities.

To create a secondary data window:

  1. Select Create New View from the View menu.
To remove a secondary data window:
  1. Select Cancel from the view window.

Display Options Dialog

By using the Display Options dialog of the Options menu, you can control which components are displayed. This allows you to tailor the display by selectively eliminating the main menu bar, edit line, row and column buttons, toolbar, and the message line. These elements are all controlled from the Display Options dialog under the Options menu.

Working with the Keyboard and the Mouse

Most XESS operations can be performed with either the keyboard or with the mouse (or similar pointing device). The following discussion assumes that your workstation is equipped with a mouse and that mouse actions are used.

Using the Mouse

A mouse is a hand-operated pointing device that sends signals to your computer. For operations that can be performed with either the keyboard or the mouse, the mouse offers many advantages, such as an intuitive, point-and-click way of working and greater mobility when moving around large spreadsheets.

To move the mouse pointer (which usually appears on screen as an arrow), move the mouse across your desktop or mouse pad. To move the mouse pointer further than your mouse area allows, lift the mouse off the surface and reposition it.

The mouse has two or three buttons. Most XESS operations require only the left button (MB1). The right mouse button (MB3) is used to activate a short-cut dialog. On a three-button mouse, the middle button (MB2) is the paste operation. On a two-button mouse, you simulate MB2 by simultaneously clicking MB1 and MB3.

Mouse Actions

Point
Move the mouse pointer to a specific area of the screen.
Click
Quickly press and release the left button.
Double-click
Quickly press and release the left button twice.
Hold down
Hold down the left button while you perform some action, such as moving the mouse.
Drag
Press the left button and hold it down while you move the pointer.
Release
Release the left button after dragging.
Select
Hold down the left left mouse button and drag it over the area to be selected.
Paste
Click the middle mouse button to copy a selection to a new location.

Using the Keyboard

The mouse provides a convenient and intuitive way to move around the XESS display and menus. As you become more familiar with XESS you may wish to use shortcuts that make routine operations much faster.

XESS provides two faster methods for many operations:

Keyboard Accelerators

A keyboard accelerator is a key or key combination that invokes a menu action without displaying the menu. Not every menu item has a keyboard accelerator. Those that do are marked with the accelerator key or key combination on the menu.

Many keyboard accelerators are formed by holding down the Ctrl key or the Meta key while pressing another key. This type of action is documented as Meta + key or Ctrl + key where key is the name of the key that is pressed. Depending on the system, the [Meta] key on your keyboard may be labeled [ALT], [Compose], [Meta], or be represented with a diamond.

The definition of keyboard accelerators can be changed by modifying the XESS resources. The ones documented below are the defaults.

XESS Keyboard Accelerators and special function keys are shown in the table below:

Keyboard Accelerators and Special Function Keys

Delete
Clear
Ctrl + a
Select All
Ctrl + b
Bold Font
Ctrl + c
Insert Column
Ctrl + d
Redo
Ctrl + f
Copy Formula
Ctrl + g
Go To
Ctrl + i
Italic Font
Ctrl + m
Move
Ctrl + n
Normal Font
Ctrl + o
Open Sheet
Ctrl + r
Insert Row
Ctrl + s
Save
Ctrl + t
Insert Sheet
Ctrl + u
Undo
Ctrl + v
Copy Value
Ctrl + C
Delete Column
Ctrl + F
Format Range
Ctrl + I
Bold-Italic Font
Ctrl + R
Delete Row
Ctrl + T
Delete Sheet
Ctrl + V
Create new view
Ctrl + Space
Select
Ctrl + Meta + Space
Reselect
Meta + a
Automatic Alignment
Meta + c
Center Alignment
Meta + i
Center-over-selection Alignment
Meta + l
Left Alignment
Meta + p
Print Sheet
Meta + q
Quit
Meta + C
Close Sheet
Meta + N
New Sheet
Meta + R
Right Alignment
F1
Help
F2
Edit Cell
F3
Replace
Meta + F3
Replace Next Cell
F4
Toggle absolute/relative cell reference
F6
Find
F7
Find Next
F8
Find Previous
F9
Recalculate
F10
Shift focus to the menu bar
F11
Cancel Edit
Esc
Cancel Edit
Left Arrow
Move left one cell
Right Arrow
Move right one cell
Up Arrow
Move up one cell
Down Arrow
Move down one cell
Ctrl + Left Arrow
Page left
Ctrl + Right Arrow
Page right
Ctrl + Up Arrow,
Page up
Ctrl + Down Arrow
Page down
Next Page/Page Down
Page down
Prev Page/Page Up
Page up
Home
Top of sheet -- cell A1
End
Last non-empty row
Ctrl + End
Right-most non-empty column
Shift + any motion
Select while moving cursor
Meta + arrow key
Advance to next "break" in data in the specified direction

Mnemonics

A mnemonic is a single character that provides a shortcut for making selections from the keyboard. Mnemonics are usually the first character of a menu item and are always marked on the menu with an underline. While a pull-down menu is displayed, simply press the mnemonic character. Pressing the mnemonic character has the same effect as selecting the menu choice with the mouse or the arrow keys.

To display a pull-down menu using mnemonics:

  1. Press [F10] to shift keyboard focus to the menu bar (the File option will be highlighted by a square).
  2. Type the underlined letter in the option you wish to select.
  3. Repeat for each level of the menu structure until the final selection is made.
OR
  1. Press [Meta] and the underlined letter at the same time.

Mnemonics are a keyboard alternative to using the mouse or cursor to access menus. For tear-off menus, mnemonics can be used when the menu has focus.


How to Use Menus

The main menu bar is usually visible across the top of the primary XESS display area. There is a separate primary display area and menu bar for each concurrently open workbook.

When secondary data windows (Multiple Views) are displayed within the same workbook, the menu bar is not attached to each window; however, any operation invoked through the menu bar is applied to the window(s) containing the current cell.

To view a pull-down menu from the menu bar:

  1. Move the mouse pointer to the desired menu title.
  2. Press the left mouse button.
OR
  1. Press [F10] on the keyboard.
  2. Use the arrow keys to move the highlight to the desired menu title.
OR
  1. Press [F10].
  2. Type the underlined character in the menu selection you desire.

To select a menu action:

  1. Display the pull-down menu from the menu bar.
  2. Move the highlight to the desired menu selection.
  3. Release the mouse button.

Menu selections can result in any of three actions:

To display a submenu:

  1. Display a pull-down main menu from the menu bar.
  2. Move the highlight to a menu selection with an arrow next to it.
  3. Move the mouse to the right to display the submenu.
To select a submenu item:
  1. Pressing the left mouse button, move the highlight to the desired selection.
  2. Release the mouse button.

To avoid making a menu selection when you have displayed a menu, drag the pointer off the menu and release the mouse button. Keyboard users press the [Esc] or [F11] key.

Mouse Button 3 Popup Menu

With a single mouse click you can access a popup menu allowing you to quickly invoke frequently used operations which effect selected cells. When you click the right mouse button (MB3) or its equivalent, a popup dialog box is displayed which contains most of the Edit and Format operations.

To invoke the short-cut menu:

  1. Select the cells to be effected.
  2. Hold down MB3 and traverse as needed to the desired operation and release.

To disable MB3 popup, change the resource *popupMenu in the Xess5 resource file to False.

If you are in the middle of editing data in a cell and click MB3, some operations will be greyed out.

Tear-off Menus

Most of the menus within the XESS Spreadsheet have the TearOff attribute, indicated by a dashed line at the top of the menu. When the line is selected, the menu is made into a separate window and acts much like a dialog box. It does not disappear after a selection is made.

When you are through using a tear-off menu, it may be dismissed. On the Motif Window Manager (mwm), to cancel (close) a tear-off menu, double-click the top left button of the tear-off window frame.

How to Use Dialog Boxes

XESS uses dialog boxes to accept user entries that define certain operations, such as formatting, sorting, and printing. Dialog boxes are displayed in separate windows on your display. Dialog boxes accept information by using:

Check Button

To activate a check button:
  1. Move the mouse pointer to the desired selection.
  2. Click the left button. The button will appear in reverse video or a different color, depending on your monitor.

Keyboard users: Press the space bar to display button options or change on/off state.

Option Button

To activate an option button:
  1. Move the mouse pointer to the desired button.
  2. Click the left button to display the option menu. While holding down the left mouse button move the pointer to the desired selection and release.

Slider Bar

To change the slider bar:
  1. Move the mouse pointer onto the slider bar.
  2. Drag the mouse to the right or left until the desired parameter is displayed above the slider.

Data Entry Line or Box

To use a data entry line or box:
  1. Move the mouse pointer to the desired location on the line.
  2. Click the left button. The vertical bar cursor will blink, indicating that XESS is ready to accept text in that space.
  3. Use the keyboard and numeric keypad to enter the information.

OK and Apply Buttons

To confirm and activate your entries:
  1. Move the mouse pointer to the OK button at the bottom of the dialog box.
  2. Click the left mouse button. By clicking OK you activate your choices and dismiss the dialog box.
OR
  1. Move the mouse pointer to the Apply button at the bottom of the dialog box.
  2. Click the left mouse button.

By clicking Apply you activate your choices and keep the dialog box open. With the Apply button, you are able to quickly readjust or add more settings without having to reopen the dialog box.

Any applied spreadsheet action which is destructive to the data can be reversed using Undo. Ten (10) levels of Undo are supported by default. You can reverse the most recent Undo with Redo.

Cancel Button

To cancel your entries and return to the display:
  1. Move the mouse pointer to the Cancel button at the bottom of the dialog box.
  2. Click the left mouse button.

Cancel does not undo changes that have already been applied.

Reset Button

Sets the fields in the dialog back to their default values. These values are derived from the user template file (if one is present), from the resource file, or from the standard default values.

Help Button

Each dialog box contains a Help button which is context-sensitive. It invokes on-line Help displaying the topic related to the dialog box. Once the XESS Help dialog box is open, you may select any other topic of interest from the Topic Index.

File Selection Dialog

All XESS operations which involve file input or output such as Opening, Saving, and Printing a workbook use the Motif standard File Selection Dialog with slight variations.

The File Selection dialog box displays an alphabetical list of all the files in the selected directory whose names meet the criteria in your Filter. The current directory name is displayed at the top of the Directories list. If the lists are large, all the names may not fit in the boxes.

To move the selection highlight, use the up and down arrow keys, or move the mouse pointer to the desired name and click.

To scroll through the list of file names, click the up and down arrows along the right side of the list box, or drag the scroll box.

To jump to a specific alphabetical section of the list, type the first character(s) of the name of the file you are looking for in front of the asterisk (*). The dialog box then starts the display at the first file name starting with those characters.

To select a different directory, double-click on the directory name in the Directories list. XESS then displays the names of files in that directory in the Files list. Double-click on the second file in the Directories list change to the next-higher directory level.

To select a workbook, double-click on the workbook name, or click the name once and then click OK to complete the operation.

To cancel the operation after viewing the dialog box, click Cancel.


Window Frame and the Window Manager

The menu bar, edit line, data area and message line are all contained within a window frame. Window frames do more than enclose the XESS display area. They contain icons and menus that let you manipulate the size and position of windows on the screen.

You can have several windows open at once, move from window to window, change the size and position of windows on screen, and shuffle the order in which windows overlap one another. If several windows are open at once, all of them are active, but keyboard and mouse actions can address only one current window. In X Window System terminology, that window has the input focus.

The window frame and functions are not controlled by XESS but rather by your system's window manager program. The exact method for manipulating windows depends on the window manager program you are using. XESS should work with any X11 compliant window manager.

The following instructions assume that you are using the OSF/Motif Window Manager (mwm) from the Open Software Foundation, Inc. Other window managers have different window frames and use different mouse and keyboard sequences to perform comparable actions.

OSF/Motif Window Manager windows usually contain the following functional elements:

The Window Manager provides several options for manipulating windows with the keyboard, mouse and built-in shortcuts.

Current Window

To make a window current:
  1. Move the mouse pointer into the window, or
  2. Move the mouse pointer into the window and click the left mouse button.

Window Sizing

To enlarge the spreadsheet to fill the entire display:
  1. Move the mouse pointer to the larger box icon at the upper far right of the window frame.
  2. Click the left mouse button.
OR
  1. Click the window menu icon at the top left of the window frame.
  2. Select Maximize from the window menu.

To return a maximized spreadsheet to normal size:

  1. Move the mouse pointer to the maximize button at the upper right corner of the window frame.
  2. Click the left mouse button.
OR
  1. Click the window menu icon at the top left of the window frame.
  2. Select Restore from the window menu.

To change the dimensions of the window:

  1. Position the mouse pointer in the window border. The pointer will change shape.
  2. Press and hold the left mouse button. Drag the mouse until the fine cross-lines indicate the desired dimension.
  3. Release the mouse button.
OR
  1. Click on the window menu icon at the top left of the window frame.
  2. Select Size from the window menu.
  3. Press the left mouse button and drag the mouse until the cross-lines indicate the desired dimension.
  4. Release the mouse button.

Iconifying

To reduce the window to an icon:
  1. Move the mouse pointer to the smaller box icon at the upper right of the window frame.
  2. Click the left mouse button.
OR
  1. Click the window menu icon at the top left of the window frame.
  2. Select Minimize from the window menu.

To restore a spreadsheet that has been turned into an icon:

  1. Move the mouse pointer to the icon.
  2. Click the left mouse button.
  3. Select Restore.
OR
  1. Move the mouse pointer to the icon.
  2. Double click the left mouse button.

Moving a Window

To move the window:
  1. Move the mouse pointer to the title bar.
  2. Press the mouse button. While holding the mouse button down, move the mouse to reposition the window.
  3. Release the mouse button.
OR
  1. Click the window menu icon at the top left of the window frame.
  2. Select Move from the window menu.
  3. Press the left mouse button and drag the mouse until the cross-lines indicate the desired position.
  4. Release the mouse button.

To move the current window behind another window:

  1. Click the window menu icon at the top left of the window frame.
  2. Select Lower from the window menu.
To close the window and remove it from the workspace:
  1. Display the File menu from the menu bar.
  2. Select Quit from the File menu.

Keyboard shortcuts can be used to perform these functions. The keystrokes are marked beside the selection on the menus.


User Preferences Dialog

This operation allows you to enable or disable several session-specific. Settings are not saved in the workbook; they are maintained in the user-preference file in the user's home file directory.

Smart Text Entry

When Smart Text Entry is enabled, it allows the entry of numeric and special data as text strings without them being processed as a formula. A typical use would be for entry of telephone numbers or social security numbers:
	1-919-942-7801
	561-042-563

See the section Entering Text for details.

Smart Date Entry

and

Smart Time Entry

When Smart Date Entry or Smart Time Entry is enabled, XESS will recognize most date and time formats when entered without having to start the entry with the slash(/) character.

Enable In Cell Editor

When Enable In Cell Editor is selected, you can enter and edit data directly in the cell.

Enable Multiple Workbooks

When Enable Multiple Workbooks is selected, you can open more than one workbook in the same XESS session. Each workbook has its own primary window and menu bar.

Remember Cursor Position

When Remember Cursor Position is enabled, the active cell location is remembered for each sheet in a workbook. When you change your view from sheet to sheet the cursor location may be different. When this option is disabled, the location of the cell cursor on the current sheet will be maintained when tabbing to different sheets.

Disable Bell

When Disable Bell is specified, the audible bell in the workstation is not used for error messages and similar actions.

Editor Colors Match Cell

When Editor Colors Match Cell is set, the within-cell editor uses the same colors as the current settings for the cell.

Use @ for Functions

When Use @ for Functions is set, the @ character is displayed before each function name. Function names may be entered with or without the initial @.

Use ! for Sheet Names

If Use ! for Sheet Names is set, then the exclamation point is used to separate sheet names from cell names in cell references. Otherwise, a period is used to separate the names.

Enable Visual Bell

When Enable Visual Bell is set, a visual equivalent to the bell is flashed when the audible bell would be used. This is a flashing border around the accept/reject icons on the edit line or around the current dialog.

Enable Toolbar Animation

When Enable Toolbar Animation is set, a border is only shown around a Toolbar icons when the cursor is over the icon.

Normal Cursor

Normal Cursor provides a selection of cursor styles for use in the spreadsheet for normal operation.

Working Cursor

Working Cursor provides a slection of cursor styles to use to indicate that the spreadsheet is busy.

Scrolling Speed

Scrolling Speed controls how fast the spreadsheet scrolls when using the mouse. Smaller values causes the display to scroll slower. The impact of this value depends on your specific hardware and software.

How XESS Handles Errors

When the syntax of a formula is incorrect or a calculation cannot be performed, XESS generates an error message. If you make a mistake, XESS tells you by giving you an error message in descriptive terms that actually helps you solve the problem. The types of errors are described below. A complete list of XESS error messages and their explanations can be found in the XESS User's Guide Appendix C, Error Messages.

Calculation Errors

When XESS encounters a computational error, a descriptive message is displayed on the Message Line. In addition, the word Error followed by the message appears highlighted in the affected cells. If there are multiple errors flagged in the body of the sheet, the message on the message line represents the first calculation error encountered.

For example:

If you try to invert a 3 x 2 matrix, XESS highlights the cell where the formula was entered, and displays the message, "Error - @INVERT, matrix must be square" in the cell containing the invalid formula. In addition, the message, "Cell xx:Error - @INVERT must be square" appears on the Message Line.

Syntax Errors

If you attempt to enter an expression which is syntactically incorrect, XESS displays an informational message on the Message Line, while placing the text edit cursor in the expression where the error was detected.

XESS will not allow a syntactically incorrect expression to be entered.

For example:

If you enter the formula @DATE(1/10), XESS displays the message, "ERROR: not enough arguments to function", on the Message Line and the cursor is positioned to the right of the 0 on the Edit Line. You must correct or erase the invalid expression.

Operational Errors

When you request XESS to perform an invalid operation, the condition is flagged by the XESS Message dialog box which immediately pops up with a message describing the error. You must click Cancel to dismiss the dialog box.

For example:

If you enter an invalid cell address in a dialog box which requires that data to continue, XESS displays the XESS Message dialog box which contains the message, ERROR: - illegal range specification. You must press Cancel to remove the box and continue.

Accessing Workbooks

One or more sheets that work together make a workbook. Workbooks are saved in a single XESS file of type .xs5.

Building a New Workbook

When you start XESS, it displays a blank spreadsheet ready for you to enter data.

If you are already working in a spreadsheet workbook and want to erase all cells and start again with an empty workbook:

  1. Display the File menu from the menu bar.
  2. Select Close from the File menu.
  3. Display the File menu again and then select New.

If you are working in a workbook and want to begin working in a different workbook:

  1. Display the File menu from the menu bar.
  2. Select Open... and XESS will display the Open Sheet dialog box for selecting the name of the workbook you wish to use.

If you have set User Preferences to single-workbook mode and have made changes to the current workbook, XESS will first ask if you want to save the changes before loading the new workbook. In multiple-workbook mode, the new workbook is displayed in a new primary window.

Loading an Existing Workbook

XESS saves workbooks in specialized files, usually with the file type .xs5 attached to the end of the file name. One of these files contains the entire definition of all the sheets in a workbook, including formats, graphs, and overlays.

The .xs5 file format consists entirely of printable characters. This makes it easy for you to copy XESS files from one system to another regardless of the operating system or file structure. It also means that XESS files can be mailed among systems without additional processing.

XESS can also access spreadsheets and workbooks in several other popular formats: .xs, .xs3, and .xs4 sheets compatible with previous versions of XESS; and .wk1, .wks, .wk3 (wk3/wk4), and .xls sheets compatible with most other spreadsheet systems.

You can get an existing workbook, view it, change it, recalculate it, and then save it (overwriting the original version) or exit without affecting the original version. You can load and use workbooks from other spreadsheet programs or load data from text files in a variety of formats.

To load an existing XESS, WK*, or XLS workbook:

  1. Select Open... from the File menu. XESS displays the Open Sheet dialog box.
  2. Select the type of spreadsheet file you wish to read: XS5, XS4, XS3, XS, WK1, WKS, WK3/WK4, or XLS.
  3. Click the Selection entry box and type the name of the file you wish to use, or select a file by highlighting its name in the Files list using the mouse.

Adjacent to the Files list is the Directories list. The files shown in the Files list are those files found in the directory whose name is highlighted in the Directories list.

The dialog box displays an alphabetical list of all files whose names meet the criteria in your File Filter. If the list is large, all the document names may not fit in the box.

If you do not find the file name you are looking for, check the File Format and the File Filter in the dialog box to make sure you are searching in the correct disk or disk directory and for the desired spreadsheet type.

The File Filter

The File Filter controls which files are presented in the dialog box Files list or the Directories list. For most operations, XESS automatically displays all files with the .xs5 extension, the typical extension for XESS files.

XESS changes the default filter to match the file format you requested. For example, if you set File Format to WKS, the File Filter appears as *.wks and the Files list includes all files with names ending in .wks.

On Linux and UNIX systems, the default extension allows filenames in upper, lower, or mixed case, similar to the following: .[Xx][Ss]5. On OpenVMS and Windows NT, the same extension is displayed as .xs5 but is not case sensitive.

You can change the file filter to display only certain groups of files. This is especially useful when you have many files on the disk and the list is cumbersome to search. For example, you can change the file filter to display:

One way to change the file filter is to double-click on a different directory. Alternatively, you can change the file filter by doing the following:

  1. While the dialog box is displayed, click on the text of the File Filter. XESS displays a blinking cursor in the File Filter area.
  2. Using the keyboard, type the desired file filter. You can use the asterisk (*) as a wildcard. For instance, the file filter *.xs5 tells XESS to display files with the .xs5 extension, no matter what characters precede the extension. The file filter test*.xs tells XESS to display all files whose names begin with test and end with the .xs extension.
  3. Press [Enter] or click on the Filter button. XESS displays file names that meet the criteria specified in the new file filter.

Loading a Workbook in a Different Format

XESS lets you load and save files stored in the popular WKS ,WK1, WK3, WK4, and XLS spreadsheet formats using the Open and Save operations. When opening WK* and XLS files, XESS loads the entire workbook along with its default characteristics such as column width and format. XESS automatically determines the proper file format for loading a file by examining its contents.

Note that there are differences between spreadsheet programs, so you may have to modify certain formulas or cells to get the spreadsheet to work properly in XESS. You can load most spreadsheets without any difficulty, but those with complex interactions that use macros or certain functions may require some modification.

When loading an XLS or WK* file into XESS, formulas which contain functions that exist in the source spreadsheet product but not in XESS will generate a standard formula error indicating that the function does not exist. Formulas containing ambiguous function references are converted to text strings in XESS for manual intervention.

In addition, with the Import operation, you can load tabular data from text files in several formats which include comma-separated values (CSV), tab-separated values (TSV), user-defined delimiter, and HTML.


Saving the Workbook

The Save and Save As operations are used to save your workbook to a file on disk. When a workbook is saved, all of its current characteristics, including window size, window location, and scrolling position within the file are preserved as a snapshot.

To save a workbook that has not yet been named:

  1. Select Save As from the File menu. XESS displays the Save Sheet dialog box.
  2. Select the type of spreadsheet file you wish to create: XS5, XS4, XS3, WK1, WK3/WK4, WKS, XLS, or XLS V4.
  3. Enter the name of your file in the Selection area of the dialog. Alternatively, use the Files display and select the file name there.
  4. Click OK or press [Enter]. To cancel the operation, click Cancel.

To save a workbook that has already been named:

  1. Display the File menu from the menu bar.
  2. Select Save from the File menu. XESS saves the sheet using the current name and displays a message on the Message Line.

The Save and Save As operations do not remove your workbook from memory, so you can continue to make changes to it after saving. You should, in fact, save your work periodically during a session to minimize the risk of losing work if the computer system is interrupted for any reason.

If you Save the current workbook, it will have the same file name as the file already on your disk. The old version of this file is renamed to have a tilde character (~) at the end of the name before the workbook is saved with the file name.

Saving a Workbook in a Different Format

XESS lets you save workbook files stored in the popular XLS, WKS, WK1, and WK3 formats using the Save and Save As operations. The Save operation for WK* and XLS format files writes the workbook to a file along with its default characteristics such as column width and cell format.

When saving an XLS or WK* file from XESS, formula which contain functions that exist in XESS but not in Excel or Lotus are converted to text strings when XESS creates the XLS or WK* file.

In addition, with the Export operation, you can save tabular data into text files in several formats which include comma-separated values (CSV), tab-separated values (TSV), user-defined separators, LaTeX (TEX), and Hypertext Markup Language (HTML).

Naming the Workbook File

XESS stores spreadsheet workbooks by names with extensions. The name identifies the workbook for your purposes; the file extension lets XESS identify the file type for different operations. File names for XESS files usually end in .xs5.

You should use names that are descriptive or mnemonic, so you can easily identify the file from a directory listing, possibly weeks or months after you have last used the file. If you have several files that are similar, you can differentiate between them by adding dates or code numbers, for example, MFG_391 or TEST91.

Follow these conventions in assigning file names:

Copying, Moving, Renaming, or Deleting Files

XESS workbooks and related files are stored as simple text files. Therefore, you can copy, move, rename, mail, or delete XESS files using the file management commands of your operating system. XESS provides no additional functions for copying, moving, renaming or deleting files.

Opening Multiple Workbooks

Multiple workbooks can be open at the same time -- just open the second workbook without closing the first one. Each workbook has its own primary window. References between two open workbooks are recalculated automatically when the source value is changed.

Ending an XESS Session

To end an XESS session: select Exit from the File menu. If you have made changes to any of the active workbooks, XESS displays the Warning dialog box.

To save the changed version, click the Save button. XESS saves the new version (possibly overwriting a previous version) and ends the session.

To discard your changes and preserve the workbook on disk, click Discard. XESS discards the version on screen and ends the session.

To cancel the Exit operation, click the Cancel button. XESS returns you to the active workspace without saving or discarding anything.


Moving Around the Spreadsheet

XESS gives you many options for moving around the spreadsheet. You can use:

Moving with the Keyboard

You can use the keyboard arrow keys to move the cell cursor to a desired cell. Each time you press an arrow key, the cell cursor moves one row or column in the direction of the arrow. Press the appropriate arrow key until the target cell is highlighted by the cell cursor. This is the cell that will be affected by your next action, such as editing, formatting, copying, deleting, or pasting.

Because the spreadsheet window can show only part of a large sheet, you may need to scroll through the sheet to view other sections. The arrow keys can be used to scroll to the remote areas of the sheet as described below.

To move the view to the right:

  1. Hold down the right arrow key and watch the sheet scroll to the right.
  2. Release the arrow key once you reached the desired view area.

Similarly, use the down, up, and left arrow keys to move the view other areas of the sheet.

The Ctrl key plus the arrow keys allow you to move the cell cursor around the sheet a page at a time. Hold down the Ctrl key while using the arrow keys to move an entire window (page) in any direction. Your keyboard may also have specific keys for moving a page at a time. These are usually labeled PageUp and PageDown or PrevScreen and LastScreen.

The Meta key plus the arrow keys advance the cursor to the next "break" in the current row or column. (On many keyboards, Meta is labeled ALT.) For example, Meta+Down advances to the last entry in the current column -- the one with an empty cell below it. A subsequent Meta+ Down might take you to the absolute last row available.

Other keys may be available on your keyboard which help you move around the workbook:

Keyboard Accelerators and Special Function Keys

Ctrl + g
Go To
Ctrl + V
Create new view
F6
Find
F7
Find Next
F8
Find Previous
Left Arrow
Move left one cell
Right Arrow
Move right one cell
Up Arrow
Move up one cell
Down Arrow
Move down one cell
Ctrl + Left Arrow
Page left
Ctrl + Right Arrow
Page right
Ctrl + Up Arrow,
Page up
Ctrl + Down Arrow
Page down
Next Page/Page Down
Page down
Prev Page/Page Up
Page up
Home
Top of sheet -- cell A1
End
Last non-empty row
Ctrl + End
Right-most non-empty column
Meta + arrow key
Advance to next "break" in data in the specified direction

Moving with the Mouse

You can move about your XESS sheet using the mouse or other pointer device. To position the cursor to a different cell in the current view, just click on the desired cell with the left mouse button. You can also scroll to a different area of the sheet using the mouse.

To move the view to the right:

  1. First position the cell cursor somewhere in the rightmost column that is displayed.
  2. Press the left mouse button and drag the mouse (still holding down the left mouse button) a little to the right and watch the sheet scroll to the right.
  3. Release the left mouse button once you reach the desired view area.

To move the view down:

  1. First position the cell cursor somewhere in the last displayed row of the sheet.
  2. Press the left mouse button and drag the mouse (still holding down the left mouse button) a little towards the bottom and watch the sheet scroll down.
  3. Release the left mouse button once you reach the desired view area.

Similarly, follow the steps above to scroll towards the left and top of the sheet.

Moving with the Scroll Bars

Scroll bars, which appear on the bottom and right edges of the spreadsheet area, allow you to scroll through the sheet just as though it were printed on a continuous roll of paper. On a scroll bar, a slider bar indicates:

Each view has its own scroll bars. If the slider fills the entire scroll bar, then the current view displays the entire sheet.

To move the view left or right one column at a time:

  1. Move the mouse pointer to the arrow at the left or right of the horizontal scroll bar.
  2. Click the left mouse button.

To move the view up or down one row at a time:

  1. Move the mouse pointer to the arrow at the top or bottom of the vertical scroll bar.
  2. Click the left mouse button.

To move the view one page at a time:

  1. Move the mouse pointer to an empty area at either end of the scroll bar.
  2. Click the left mouse button.

To move the view anywhere in the sheet:

  1. Move the mouse pointer into the slider.
  2. Press the left mouse button and drag the slider until the view reaches the desired location.
  3. Release the mouse button.

Moving with the Goto Dialog

XESS lets you move to a designated cell address anywhere in the workbook. This feature is particularly useful in large sheets that are cumbersome to scroll through. Even in moderate-sized sheets, the Goto dialog is often the fastest way to get to your destination.

To go to a designated cell:

  1. Select Go To... from the View menu. XESS displays the Goto Cell dialog box.
  2. In the Enter Cell Address entry box, type the address of the cell to which the cursor should move. Named ranges may be used for the cell address.
  3. Click OK to carry out the command and dismiss the dialog box. Click Apply to carry out the command and leave the dialog box open. Click Cancel to cancel the operation.

If the cell is not currently visible, XESS changes the view so that the requested cell is in the displayed area of the sheet.

The Goto Cell dialog can reference sheet names and named ranges. This allows you to move the cell cursor to a cell anywhere on any sheet in the workbook.


Moving with the Find Tool

The Find tool lets you quickly locate a specific character string or numeric value. The power of the Find tool lies in its ability to accept expressions. XESS is not limited to just locating a specified string. It can find numeric values that meet certain logical or calculated conditions and can find strings that match specified patterns.

For example, you can search for cells whose values are greater than 100 and less than 150, or for cells whose values are less than the average of the three preceding cells. This facility is extremely useful for spotting patterns in large, complex data sets.

You can tell XESS which part of the workbook to search, whether to search by row or by column, and whether to search for text characters or numeric values.

To use the Find tool:

  1. Select Find... from the Search menu or press the [F6] key. XESS displays the Find dialog box.
  2. In the Find dialog box, make the following entries to carry out the Find operation:
    Search Range
    Specify the range of cells in which XESS should search, by entering two corner coordinates (e.g. A1..Z55). The default range is the entire sheet. If a range was selected when you invoked the Find operation, the default is this selected range.
    Target
    Specify the string or value as it would appear formatted in the cell. To find a numeric value that meets certain criteria, enter an expression in Target. For example, to find values less than 20, specify the Filter as #<20 and do a numeric search. The Target criteria are explained in detail below.
  3. By default, XESS searches row by row. Change the selection box to Search by Column to start searching column by column.
  4. Select Text Comparison, Regular Expression, or Numeric Comparison to indicate whether the Find operation does character comparisons, regular expressions, or evaluates numeric and logical expressions. These are described in detail in following sections.
  5. For Text Comparison and Regular Expressions searching:
    1. Use the Ignore case toggle button to determine whether or not upper/lower case is taken into consideration with the Find operation. If you wish to find both upper and lower case occurrences of alphabetic characters, click the toggle button on to Ignore case. Otherwise, if this toggle button is off, the Find operation will be case sensitive.
    2. Use the Ignore accents toggle button to determine whether or not accents used in the extended ISO 8859 character pages are taken into consideration with the Find operation. If you wish to find both unaccented and accented occurrences of the same alphabetic character, click the toggle button on to Ignore accents. Otherwise, if this toggle button is off, the Find operation will differentiate between accented and unaccented characters.
    3. Use the Match whole word to require that parts of words do not satisfy the search.
  6. To start the search, select Apply or OK. Select Find Next ([F7]) and Find Previous ([F8]) on the Search menu to find additional cells meeting the search requirements.

The initial settings for the Ignore case and Ignore accents toggles are determined by the respective collating settings for case and accents in the Workbook Defaults dialog. Once you override either setting from the Find dialog, it will be remembered with subsequent Find operations within the same session.

Find Next

To find the next occurrence of the value or string being searched, select Find Next button from the Search menu. Alternatively, press F7 key to repeat the search. The Find operation (described above) must precede the Find Next operation.

Find Previous

To find the previous value that was searched, select Find Previous from the Search menu. Alternatively, press F8 key to search the previous value.

Target Criteria

To find a character string, type the string inside the Target entry box as it would appear when formatted in the cell. For example:
                Doe, John

To find a character string that matches a pattern, select Regular Expression and enter the desired pattern in the Target area. For example:

                A[B-Z]

This finds a cell containing an A followed by another letter other than an A.

To find a numeric value, either a constant or a calculated value, type the value exactly as it would appear formatted in the cell. For example:

                $1,000,000

To find numeric values that meet certain criteria, enter the target with a constraint expression. # is used to represent the current cell being examined. Select Numeric Comparison. For example:

How XESS Evaluates Target Criteria

XESS follows these rules when finding a target string:

Creating Multiple Views

XESS allows you to create multiple secondary windows to the same workbook. These windows can be navigated independently of each other. Each view is a transient window which means it is always positioned on top of the main XESS window. Each secondary window can be moved and resizedbut not iconified.

Secondary windows do not include a menu bar. However, any menu or operation selected from the main menu on the primary window is applied to any secondary window which has the current or selected cell(s) in view.

To create a secondary window of the spreadsheet data:

  1. Select Create New View from the View menu.
To remove a secondary window:
  1. Click Cancel on the window to be removed.

Setting and Clearing View Titles

XESS provides utilities to set view titles that remain on screen when you scroll through the sheet:

Entering Data

XESS gives you many options for entering data into cells, using both the keyboard and mouse. To reference a cell in a formula, you can type its cell address, or you can point and click with the mouse to select the cell address, or you can type the cell name. You can define the format of cells and allow designated cells to accept only certain types of input, or restrict access completely to certain cells.

This section describes how to enter data in your spreadsheet and how to enable cell protection. For more information about editing cells, moving and copying data, and manipulating spreadsheets, refer to Manipulating the Spreadsheet. For more information about using formulas to calculate values, refer to Calculations.

About Cells

XESS spreadsheets are a computerized version of a ledger pad, with information stored in a row-by-column table of cells. A group of sheets which work together and are saved in a single disk file is called a workbook.

A cell is the intersection of a row and column within a sheet in a workbook. Cells can contain numeric or text constants, dates and time, formulas, images, and graphs. Constants and calculated values are visible on screen, but the formulas that produce those values are generally invisible.

Formulas are viewed and changed directly in the cell if in-cell edit is enabled or in the Edit Line otherwise; they appear only when the cell is highlighted. The current cell is typically outlined in red in the body of the sheet; in addition the row and column button of the current cell is a different color from the other row/column buttons. This is the cell that will be affected by your next action.

Each cell is identified by an address that contains the column and row coordinates of a specific sheet in the workbook. For instance, the address of the first cell in the workbook is typically Sheet1!A1; the cell in column D, row 4 of Sheet 10 has the cell address Sheet10!D4. With 4096 columns, 10,000,000 rows, and 4095 sheets an XESS workbook may contain more 167 trillion cells. However, the actual size of your workbook is limited by the memory capacity of your computer system, which is far less than the theoretical size of the workbook.

The amount of information in each cell and the nature of the entries themselves determine how many cell entries you can make before you run out of memory. There is a good reason, though, for XESS to provide a spreadsheet grid larger than you can ever fill; it gives you the flexibility to develop long, narrow sheets or wide ones with few rows.

The actual size of a given workbook can be determined with the Workbook Statistics Tool.

Cell Ranges

A cell range is a rectangular group of cells that are grouped so that operations or formulas act on several cells at once. Ranges are identified by the cell addresses of two opposite corners, usually the top left and bottom right corners.

Ranges can also be be 3-dimensional by referencing cells on more than one sheet in a workbook. For example, Sheet1!A1..Sheet10!A1 creates a rectangular group which cuts through the third dimension of a workbook.

You can reference ranges in other workbooks by including the filename of the other workbook in the range specification. Thus,


        =@SUM("OtherSheets.xs5"::A.A1..C.A10) 

will sum 30 cells from another workbook, 10 on each of 3 sheets.

Input Mode and Edit Mode

XESS has two modes of operation for entering data, input mode and edit mode.

Input Mode

Input Mode allows you to enter data into a blank cell or retype the contents of a cell.

To enter input mode, press any alphanumeric key on your keyboard. You can then enter text, numeric values or formulas. XESS stays in input mode until you press [Enter], move the cell cursor to another cell location by using the up or down arrow keys, or click the accept or reject indicators left of the edit line.

Edit Mode

Edit Mode allows you to modify the contents of a cell without retyping the entire contents. Use the mouse or the arrow keys to position the cell cursor to the cell to be edited.

To enter edit mode, either use the mouse to position the cursor in the current cell contents in the Edit Line, choose Edit Cell from the Edit menu, or use the [F2] key. You may edit either in the Edit Line or within the cell itself.

Use the [Delete] or [Backspace] key to erase and enter the correct entry.

Use the left and right arrow keys to move within the cell.

After making your changes, click the accept or reject buttons, press [Enter], or use the up or down arrow keys to complete the edit. You can cancel Edit Mode by pressing the [esc] key or by clicking the reject button.

In both input mode and edit mode, data entered from the keyboard appears in the line in the Edit Line of the main view of the current sheet. When you complete the entry with [Enter] or its equivalent, XESS inserts the new value into the current cell. In input mode, you can also use any arrow key to complete the entry and move one cell in the direction of the arrow.

You can change the current cell by:

When you are modifying the Edit Line, various editing options are usually available:

left arrow
Move the character cursor a single character.
right arrow
Move the character cursor a single character.
Ctrl + left
Moves the character cursor a word left.
Ctrl + right
Moves the character cursor a word right.
Meta + left
Moves to the beginning of the line.
Meta + right
Moves to the end of the line.
Shift
With one of the above, selects characters to be deleted or replaced.

Cell Contents

XESS accepts several basic types of cell contents: text, constant numeric values, dates or times, formulas that calculate a value, graphs, and images. Calculated values may be single numbers or strings, or they can be arrays or tables of values.
Text Entries
Text entries are useful for labeling columns and rows, for including comments about data values being calculated, and for using XESS to manage textual information, such as names, addresses or whatever your application may require.
Numeric Values
If a cell entry begins with a digit from 0 - 9, XESS treats the entry as a numeric entry. XESS also recognizes the following symbols as indicators of numeric entries: + - . (and , in some locales)

You can format numeric values to be displayed in several ways, including fixed formats, scientific notation, currency, fractions, and hex.

Dates and Times
XESS provides special, built-in features for displaying date entries in the format you choose. Date and time entries begin with the the slash (/). Example date and time formats include:
 
    24-Oct-99
    24-Oct
    10/24
    4-Jul-1776
    11/23/1963
    24.10.91
    2001-10-24
    14:27
Dates and times can also be entered without the initial slash. In this mode, both the day and year must be entered or the cell must already be formatted as date.
Formulas
Formulas establish and calculate mathematical relationships between spreadsheet elements. XESS formulas can calculate with numbers, text, logical values, cell references, and other formulas. For example, you can easily calculate the sum of a series of cells, the total of values in a column, or the absolute value of another cell entry.
Graphs
Graphs can be inserted into cells. The anchor cell becomes the upper left corner of the embedded graph. Graph objects in cells can be moved with the Copy Formulas operation.

Entering Text

A text entry is usually used for descriptive information, such as a column heading, a row label, or an explanatory comment. You can also make text entries of names, addresses, or other non-numeric information your application requires.

XESS treats text and numeric entries differently, so you differentiate between text and numeric values when entering cell contents.

To enter most text into a cell, just type the text string as you want it to appear. If the text you wish to enter would normally be considered a formula or a date, then you must precede the actual text with the ' (apostrophe) character.

If you make an entry that is not text but which returns an error when treated as a formula, XESS inserts an error message but remains in input mode.

Character Sets
XESS will accommodate the characters in the various ISO 8859 code pages, including 8859-1 (ISO Latin 1). Languages that require multi-byte characters (e.g. Chinese) are supported by specifying appropriate locale resources. In addition, collating options for extended (accented) characters in European languages can be set in the Workbook Defaults dialog box. This setting affects Sort, Find, Extract, Replace, and string comparisons.
Treating Numeric Entries as Text
Note that some numeric entries, such as phone numbers, should really be treated as text. For example, if you enter the phone number 555-1212 in a cell, XESS will display the number -657, the difference of 555 and 1,212. However, if you start the string with the apostrophe ('555-1212, for example), XESS treats the phone number as text and does not calculate it.

If Smart Text Entry is set in the User Preferences dialog, then cells formatted as Text assume that their input will also be text strings (and not numbers or formulas), unless the initial character entered is:

	=	number or formula
	/	date or time
	//g 	graph
	//r 	repeating character
	\ 	escaped character
	'	string
This ensures that values entered are treated as text. A typical use of this feature would be to enter postal codes and to keep the leading zeros:
	01754

In this mode, if you change the format of a non-empty cell to Text, XESS displays the underlying contents of the cell. For example, a formula would be displayed rather than the result of its evaluation.
Repeating Characters
You can automatically repeat one or more characters to fill the cell by starting the character string with the characters slash-slash-r (//r). For instance, to fill a cell with hyphens:
             Type:  //r-

This feature can be useful for drawing lines to demarcate areas of your spreadsheet when printed. Another way is to fill a cell with hyphens and plus signs:

	Type:  //r-+

However, if you wish to enter a character string that begins with a slash (/), you must be sure to begin the entry with the special text-indicator characters ' (apostrophe).

Entering Text Wider than One Cell
Text entries can be up to 4095 bytes long, so it is possible to make an entry that exceeds the current width of a column. If you make an entry longer than it can be displayed in the column, XESS continues to display the text into adjacent empty cells to the right, until it reaches an occupied cell. XESS stores all of the text string you entered into a single cell, but only displays the number of characters that will fit over adjacent empty cells.

If you change the alignment of the data in the cell, the text will overflow or be truncated as needed on the left, the right, or both. You can format the entire column with the Snap Column Width to Contents option to adjust the column width to contain the entire string.

Text Wrapping
If the cell has the wrap attribute, the text will be divided between words to fit within the current cell width. The cell contents are displayed on successive lines extending downward to accommodate the entire cell contents. This downward display will be truncated by a non-empty cell. You can adjust the row height to accommodate the multiple lines of text fully displayed. The Snap Row Height to Contents option forces a best-fit row height.

To edit an entry that is displayed over more than one cell, position the cell cursor to the cell actually containing the value. XESS displays the full entry in the Edit Line. Press [F2].

XESS lets you change the width of columns to accommodate entries up to 255 characters long.

Entering Special Characters
Special characters can be entered as text by using the back-slash convention (\). (This technique is compatible with STANDARD C escape codes.) The most common use of this is to explicitly force a new line in a text cell by entering \n. Other useful ones are \" which allows the quotes character within a string and \\ which allows the back-slash character.

Entering Numeric Values

Follow these conventions for entering numeric values:
Entering Numeric Values Wider than the Cell
If the numeric value of a cell fits within the cell size and format, XESS displays it in full. Otherwise, XESS displays as much of the value as it can with a large solid line at the edge of the cell to show that it has been truncated. This is usually on the left edge of the cell, but can be on the right edge or on both edges, depending on the alignment of the cell.
Changing the Numeric Format
You can choose from a variety of formats for displaying numbers. The display formats do not change the number itself, the way the number is stored internally, or the way it is used in calculations. Formatting just changes the way XESS displays numbers. XESS offers four methods for changing the format of cell contents:
XESS Formats
Scientific
Displays the number in scientific notation (exponent form) with N significant digits.
Fixed
Displays the number using a fixed number of decimal places, specified by N.
General
Displays the number in fixed format or scientific notation, whichever fits. Trailing zeros are not displayed.
Dollars
Displays the number with a leading $ sign and with comma delimiters, as in $1,000,000. Negative values are displayed in parentheses.
Currency
Displays the number using the relevant currency settings from the workstation's Locale.
Custom
Displays the number using the combination of specification from the Custom dialog which allows you to override all settings defined by Locale.
Comma
Displays the number with comma delimiters, as in 1,000,000. Negative values are displayed in parentheses.
Percent
Display the number as a percentage, multiplying it by 100. For example, the value .1 is displayed as 10.00%.
Fraction
Displays the non-integer part of a number as a fraction instead of decimal.
MM/DD/YY
Displays the integer portion of a date/time value in the format 08/01/99.
DD-MMM-YY
Displays the integer portion of a date/time value as a Gregorian date, in the format 08-Aug-91.
MMM-YY
Displays the integer portion of a date/time value in the format Aug-99.
DD-MMM
Displays the integer portion of a date/time value in the format 08-Aug.
YY-MM-DD
Displays the integer portion of a date/time value in the format 99-08-01.
YYYY-MM-DD
Displays the integer portion of a date/time value in the format 2000-01-01.
DD.MM.YY
Displays the integer portion of a date/time value in the format 01.08.99.
HH:MM
Displays the fractional portion of a date/time value in the format 06:15.
HH:MM:SS
Displays the fractional portion of a date/time value in the format 06:15:30.
Hex
Displays the integer portion of the number in base 16 with a leading 0x indicator. For example, the value 30.5 would be displayed as 0x1e.
Logic
Displays 0 as 0, displays 1 as 1, and displays all other values as ? .
Hidden
Cell contents are not displayed.
Text
Displays the characters which were entered to create the cell rather than the resulting value of the cell.
In the Cell Format dialog box there is an additional choice for Default. Default displays the number in the manner defined by the default format governing the entire workbook. (This default is set by the Cell Default operation from the Options menu.)

When Default is chosen, the Decimal Places value is taken from the Cell Defaults dialog, not the Cell Format dialog.

The @TEXT function provides a higher-level of user control of formatting.

Entering Dates and Times

If the Smart Date Entry or Smart Time Entry is enabled in the Users Preferences dialog, XESS will recognize most of the dates and times entered in their standard format and convert them to @DATE or @TIME functions. You do not need the explicit date prefix (/ ). For dates such as dd-mmm and mmm-yy, you still need to prepend the leading slash (/).

If Smart Date Entry or Smart Time Entry is not enabled, then for XESS to interpret the entry as a date or time, you must begin all date and time entries by typing a slash (/) before the desired value. Type a / followed by the date or time in any of the date/time formats. The dates and times entered with this method are also converted to the equivalent references to @DATE and @TIME.

Date and Time Examples

Date/Time            Entered as      Generates

19 July 1990         /07/19/90       @DATE(1990,7,19)
27 September 1991    /27-sep-91      @DATE(1991,9,27)
01 August 1999       /01-Aug         @DATE(1999,8,1)
01 Aug 2003          /Aug-2003       @DATE(2003,8,1)
21 May 1621          /1621-05-21     @DATE(1621,5,21)
21 May 1621          /21.05.1621     @DATE(1621,5,21)
12:30                /12:30          @TIME(12,30,0)

XESS supports dates from 1 January 100 through 31 December 3999. The transition from the Julian calendar to the Gregorian calendar is implemented in 1582 when 15 October immediately follows 4 October, as it was decreed by Pope Gregory XIII.
Using Date Functions to Enter Dates
Another way to enter dates is to use one of the XESS date functions. You can use the Format dialog box from the Edit menu to choose how the date should appear in the cell.

XESS internally stores date and time information using the same convention as other popular spreadsheet programs:

Dates
are represented as an integer equal to the number of days before or since December 30, 1899 (or January 1, 1904 in the 1904 date system).
Times
are represented as fractions of a day, starting at midnight. For example, 6:00 am is stored as .25 (a quarter of a 24-hour day).
Using this convention, date and time values may be used together. For example, the date/time value 2.25 corresponds to 6:00:00 AM, January 1, 1900.

You can use date values in calculations. For example, subtracting 05-Oct-1999 from 10-Oct-1999 yields a value of 5 days.

Entering the Current Date or Time
The Insert Current Date and Insert Current Time operations on the Edit menu set the cell to the date or time at that moment. This differs from the from using the @NOW function which changes value each time it is recalculated.

Entering Sequences of Values Quickly

The Data Fill Tool provides an efficient method for entering values which follow a pattern, such as the months, times, or numeric series. Simply enter the first few items in the sequence, select the entire range (including those just entered), and use the Tool>Data Fill operations (Ctrl+d).

Entering Formulas

Formulas are the backbone of the XESS spreadsheet, defining relationships between the values in other cells. For example, formulas can be used to sum a column of numbers, compute an average, determine a minimum or maximum value, or round the results of a calculation. Formulas must begin with an equal (=) sign as shown in this example:

	=A1+B2-C4/(E1+E2)

Whereas constant entries remain the same until you change them, cells defined by formulas are automatically changed to reflect changes in referenced cells -- even where there are complex interdependencies among cells.

Once entered in a cell, formulas are hidden behind the scenes, performing their work in the background and displaying only the result of their calculation. To view the formula in a cell, move the cell cursor to the cell. XESS displays the formula in the Edit Line.

You can edit the formula or values in cells by selecting the Edit Cell option from the Edit menu or by positioning into the cell contents in the Edit Line with the mouse.

Point-and-Click Entry
During formula entry, instead of typing cell coordinates into the formula, you may simply move the mouse cursor to the desired cell coordinate and click the left mouse button. The cell coordinate will be pasted into the formula. You must begin the formula as usual with the equal (=) sign then click on the desired cell coordinate. You may then enter another operator followed by subsequent point-and-click operations. When the formula is complete, press [Enter] to complete the entry.

If you type a non-formula cell value intended for the current cell and then click the mouse in a different cell, the data will be accepted into the current cell before the current cell is moved to the new mouse location. If you type/edit a formula, and click the mouse on different cell, XESS will treat this as true formula point/click mode and adjust the formula in the edit line with the cell address.

Built-in Functions
XESS also provides a wide array of functions that perform specific tasks. Functions can be used alone or in combination with formulas and other functions. XESS was designed for demanding users, so it provides many highly specialized functions for business, engineering, scientific, and statistical applications.

Entering Graphs

In addition to displaying graphs in separate graph windows, you may embed graphs directly into cells in the sheet. There are two mechanisms provided:

To embed a graph in the sheet using the menus:

  1. Position the cursor cell where you want the top left corner of the graph to be.
  2. Select Insert in Sheet from the Graph menu.
  3. Select the desired graph from the Choose Graph dialog box.
  4. Click OK or Apply to complete the operation.

To embed a graph in the sheet from the edit line:

  1. Position the cell cursor in the cell where you want the top left corner of the graph to be.
  2. Move the mouse pointer to the edit line and type the string //gn where n is the number assigned to the graph when you first saved it in the Graph Editor. (One way to determine the graph number is to select Edit Graph from the Graph menu).
  3. Press [Enter] or click the accept button in the Edit Line to complete the entry.

Entering Images

You can store a link to an XPM, XBM, BMP, ICO, PBM, PNG, JPG, or PCX graphics image in a cell. The image is visible on the display and in printed output, a link to the associated file is saved in the sheet, and the image is restored from this file when the spreadsheet is loaded. These image types are also recognized in the <IMG> tag and the background in the HTML Help browser.

To insert a link to an image into a cell:

  1. Place the cursor on the cell to contain the image.
  2. Select Link from the File menu.
  3. In the Link Image dialog, select the image type and filename. Press OK.
Foreground and background cell color settings affect XBM images.

Cell Notes

Cell notes allow you to attach textual information with a cell which is displayed when the mouse cursor points within the cell. The text of the cell note is displayed in a pop-up area. When the mouse is moved, the pop-up is no longer displayed. Cells which contain notes are displayed with a small dot in the upper right corner, the same color as the cell cursor.

To enter a note in a cell or to modify an existing note:

  1. Place the cell cursor in the desired cell.
  2. Choose Cell Note... from the Format menu.
  3. Enter or edit the text of the note in the dialog box.
  4. Click OK.

To delete a note from a cell:

  1. Place the cell cursor in the desired cell.
  2. Choose Delete Cell Note from the Edit menu.

Cell notes are saved in the spreadsheet file. Cell notes can be copied along with other cell values and attributes. This is controlled by the Copy Options dialog.


Protecting Cells from Modification

Cell protection is used to prevent modification of certain cells while allowing others to be modified. (Cells will still be changed by recalculation).

XESS provides a global setting Cell Protection in the Workbook Defaults dialog which controls whether or not protection is enabled and, if so, the level of cell protection being enforced for the entire workbook:

Off means that protection is disable or not enforced. Max does not allow any modification, manipulation, or movement of protected cells by the user, except through recalculation. The Mid and Min settings relax the stringency of the protection checking. For example, clearing an unprotected range within a protected workbook is allowed in both. The Min setting also allows relocation and reordering of data in protected workbooks.

Like color, font, format, etc. each cell has a protection attribute: Default, Protected, or Unprotected. The protection attribute of cells or ranges are set via the Tools->Cell Protection menu. It may be set to:

The default value of the protection attribute is defined by the Protection field in Cell Defaults dialog. Cell protection is controlled by three operations:

To enable or disable cell protection for the entire workbook:

  1. Select Workbook Defaults from the Options menu to display the Workbook Defaults dialog box.
  2. Select the type of Cell Protection desired.
  3. Apply your selection by clicking OK or Apply.

To set default cell protection for the entire workbook:

  1. Select Cell Defaults from the Options menu to display the Cell Defaults dialog box.
  2. Move the pointer to the Protection option button. While holding down the left mouse button to display the options, point to desired option and release.
  3. Move the pointer to the Recalc Mode option button. While holding down the left mouse button to display the options point to desired option and release.

To apply cell protection to a selected cell or range:

  1. Select the cell or range to be protected.
  2. Select Cell Protection from the Tools menu.
  3. Select Protect from the cascade menu.

To remove cell protection from a selected cell or range:

  1. Select the cell or range of cells for which protection should be removed.
  2. Select Cell Protection from the Tools menu.
  3. Select Unprotect from the cascade menu.

To apply the default cell protection to a selected cell or range:

  1. Select the cell or range to be protected.
  2. Select Cell Protection from the Tools menu.
  3. Select Default from the cascade menu.

Cells are protected by default. If Cell Protection is on, then all cells will be protected until changed.

Correcting Entry Errors

If you make a mistake in a cell, it is very easy to edit the cell and change its contents or formula. But what if you accidentally erase the wrong data or overwrite some cell with a Copy or Move? XESS allows you to easily recover from your mistakes using the Undo option from the Edit menu. The Undo operation allows you to undo the most recent operations performed on the workbook. The menu is updated so you can now undo the next-most-recent operation.

The Undo option is context-sensitive and the menu reflects which operation is to be removed. For example, if the last operation were Copy Formulas the menu would read Undo Copy. To Undo the Copy Formulas operation, select Undo Copy from the Edit menu.

If you accidentally Undo too many levels, use the Redo operation to redo the operation that was undone.

By default, you can undo 10 previous operations. This is can be changed in the resource file.


Manipulating Data and the Edit Menu

Most of the operations that manipulate cells in the sheet are done with Edit menu selections. To use this menu, select Edit from the menu bar. (Mouse button 3 popup menu may be used as a short-cut access to most Edit operations.)
Undo
Undoes the last operation performed on the workbook. The Undo operation is context-sensitive and removes the most recent operation.
Redo
Performs again the operation that was just canceled with Undo.
Edit Cell
Switches into Edit Mode so that you can edit the contents of the current cell.
Cut to Clipboard
Copies the selected cells to the Clipboard and removes them from the sheet.
Copy to Clipboard
Copies the selected cells to the Clipboard.
Paste from Clipboard
Copies the Clipboard to the cells beginning at the cell cursor.
Select All
Highlights (selects) the entire sheet for use by the next operation.
Select...
Highlights a range of cells to be affected by a subsequent operation.
Reselect
Selects the most recent selection.
Named Range...
Defines and manipulates named ranges.
Move
Moves a selected cell or range of cells (including all data values, formulas, formatting and cell references) to a designated location, overwriting existing data in the destination range.
Copy
Duplicates the contents of a range of cells and writes them one or more times into a specified area of the workbook.
Clear
Erases all data values and formulas in a selected cell or range of cells. The cells and their formatting are retained.
Insert
Inserts a row, a column, or a page break into the sheet at the present position of the cursor or inserts a sheet before the current sheet.
Delete
Removes rows, columns, page breaks, or sheets from the workbook. When a row or column of cells is deleted, they no longer exist and other cells shift up and left to replace them.

Mouse Button 3 (MB3) Popup Menu

Many of the operations available from the Edit and Format menus may also be accessed via the mouse button 3 (MB3) popup menu. Simply hold down the right mouse button or equivalent and traverse the choice of operations to the one desired and release.

If you happen to click MB3 during an edit operation, some selections will be greyed out.

You may disable the MB3 functionality by setting the resource, *popupMenu, in the Xess5 resource file to False.


Undo

If you make a mistake in a cell, it is very easy to edit the cell and change its contents or formula. But what if you accidentally erase the wrong data or accidentally overwrite some cell with a Copy or Move? XESS allows you to easily recover from your mistakes using the Undo option from the Edit menu.

The Undo operation allows you to undo the most recent operations performed on the workbook. Undo is context-sensitive. For example, if the last operation were Copy Formulas, the menu would read Undo Copy.

If there is not a command that can be undone, the Undo option will appear dim on the Edit menu and you can not select it.

Note: If Undo results in restoring cells to the empty state, some of their cell attributes may not be restored.

Redo

If you Undo too many operations, Redo lets you perform again the operation just undone.

Selecting Cells and Ranges

Some edit actions affect only one cell at a time, such as changing the value of a cell. Others actions affect blocks of cells, known as cell ranges. The copy, move, clear and format operations, for example, can affect one cell or a group of cells.

Before you do an operation that manipulates cell contents, you must select which cell(s) you wish to affect. For example:

XESS offers five options for selecting cells:

In each case, XESS highlights the selection. If no range or cell is selected, most XESS operations apply to the current cell.

Most operations affect all the cells in the selected range (for example: Clear, Cell Color, or Copy). Certain operations restrict the ranges that they use. For example, if you have 10 rows of numbers each in columns A and B and select all of both columns (using the column buttons) to define a graph, the graph operation will only use the 10 data points and ignore the thousands of empty cells.

Selecting Ranges Using the Mouse

To select a cell using the mouse:
  1. Move the mouse pointer to the desired cell.
  2. Click the left mouse button and drag the mouse pointer just outside of the cell boundary, and then back in.
  3. Release the mouse button. The selected cell will be highlighted.

If there is not an explicit selection of a cell or range, most operations affect the current cell, the one where the cell cursor is positioned.

To edit the contents of the current cell, use Edit Cell, or place the mouse cursor in the Edit Line and click the left mouse button.

If you wish to move, copy or clear cell contents, click once on the cell, then select the appropriate function from the Edit menu.

To select a range of cells using the mouse:

  1. Move the mouse pointer to one corner of the range.
  2. Press the left mouse button and drag the mouse (still holding down the left mouse button) to the opposite corner of the range.
  3. Release the mouse button. The selected range will be highlighted.

To select a row using the mouse:

  1. Move the mouse pointer to the row border. For example, move the mouse pointer to the number of the row you wish to select.
  2. Press the left mouse button to select the whole row.
  3. Drag the mouse pointer up or down if you wish to select several contiguous rows.
  4. Release the mouse button. The selected row(s) will be highlighted.

To select a column using the mouse:

  1. Move the mouse pointer to the column border. For example, move the mouse pointer to the letter of the column you wish to select.
  2. Press the left mouse button to select the column.
  3. Drag the mouse pointer to the left or right if you wish to select several contiguous columns.
  4. Release the mouse button. The selected column(s) will be highlighted.

To extend a selection with the mouse:

Use the Shift key with the left mouse button to extend or reduce a selection. The current selection will be adjusted so that the newly-selected cell becomes one of the corners of the selection.

Multiple views of the workbook can be used when extending selections. For example, select the top elements in one view and shift-click the bottom cell in another view. The selection is extended as if it were all in a single view.

To select the entire sheet with the mouse:

Use either the Select All option of the Edit menu or click on the push button at the top of the row numbers and to the left of the column names. This selects the entire sheet.

Selecting Ranges Using the Select Range Dialog

For large or remote ranges, using the keyboard or mouse to highlight the range can be cumbersome. It is much easier to select the range by specifying the cell addresses of two opposite corners of the range. The Select... operation (from the Edit menu) displays a dialog box for that purpose. The Select Range dialog works for any XESS operation.

To select a cell using the Select Range dialog:

  1. Choose Select... from the Edit menu. XESS displays the Select Range dialog box.
  2. In the Selection entry box, type the cell address or range in the dialog box. For example, type in B17. Named ranges can also be used.
  3. Apply your selection by clicking OK or Apply or by typing [Enter].

To select a range of cells using the Select operation:

  1. Choose Select... from the Edit menu. XESS displays the Select Range dialog box.
  2. In the Selection entry box, type the addresses of two cells in opposite corners of the desired range, separated by two periods ( .. ). For example, to select a range from A14 to B27, type A14..B27. Named ranges can also be used.
  3. Apply your selection by clicking OK or Apply or by typing [Enter].

To select all cells using the Select All command, choose Select All from the Edit menu. XESS selects the range which covers all cells in the sheet.

If you are working in edit mode or input mode, XESS assumes that Select All is meant to be an insertion into the content of the current cell. Therefore, XESS does not leave the selection highlighted for subsequent action; it inserts the range address into the edit line text at the current cursor position.

Selecting Ranges Using the Keyboard

To select a cell using the keyboard:
  1. Using the arrow keys, move the cell cursor to the desired cell.
  2. Hold the Shift key and move the cursor to an adjacent cell and back to the desired cell. The desired cell will be highlighted.

If you wish to edit the contents of the cell, press the accelerator key for Edit Cell (usually [F2]) to enter edit mode. You can then use the keyboard to change cell contents.

To select a range of cells using the keyboard:

  1. Using the arrow keys, move the cursor to one corner of the range.
  2. Hold down the Shift key.
  3. Use the arrow keys to move the cursor to the diagonally opposite corner of the range.
  4. If this is the selection of a destination for a move or copy, type [Enter] to complete the operation.

To select all cells using the keyboard, press Ctrl+a. This is the accelerator for Select All.

To enter a selection into the Edit Line: Press [Enter] after making the selection with the arrow keys and Shift.

Deselecting Cells and Ranges

You can cancel a selection by deselecting cells and ranges using the keyboard or mouse.

To cancel a selection using the mouse, click the left mouse button on any cell.

To cancel a selection using the keyboard, move the cursor without depressing the Shift key. XESS will de-select the current cell or range.

Note: Any motion such as the arrow keys (without Shift), scrolling, Goto, Top, and Bottom also cancels the selection.

Reselecting a Range of Cells

Use the Reselect option to select the cells that were most-recently selected. The selected range is highlighted and the cell cursor is positioned within the range.

Specifying Cells and Ranges in Dialog Boxes

Some XESS dialog boxes have entry fields where you can specify a cell name or a range of cells.

To specify a cell in a dialog box:

  1. Enter the address of the cell. For example: A1.
OR
  1. Use the mouse to point to the cell, and then click the left mouse button (This moves the cell cursor.). Now position the mouse over the dialog entry and press the middle mouse button (MB2). XESS pastes the cell name into the dialog as a relative reference. To paste an absolute reference, hold the Ctrl key when you press the middle mouse button.

To specify a range in a dialog box:

  1. Type the addresses of opposite corners of the range, separated by two periods ( .. ). For example: A1..E5.
OR
  1. Use the mouse or keyboard to highlight the range of cells. Now position the mouse over the dialog entry and click the middle mouse button (MB2). XESS pastes the cell range into the dialog as a relative reference. To paste it as an absolute reference, hold the Ctrl key when you click the middle mouse button.

If you have previously assigned a name to a cell or cell range using the Named Range dialog, you can specify cells and ranges by this name rather than by pointing or by coordinates.

Named Ranges

Individual cells and rectangular ranges of cells may be referred to by their standard address coordinates (A5..D25, for example) or by pre-assigned names. Using names can help clarify your logic making it easier to share among users, and easier to update long after it was originally designed. The Named Range option lets you assign a name to any cell or range. Once defined, names can be used anywhere standard cell or range references are used including cell formulas.

The following guidelines apply to named ranges:

To name a cell or range:

  1. Select the cell or range to be named.
  2. Select Named Range... from the Edit menu. XESS displays the Named Range dialog box.
  3. In the Selection entry box, the current cell or range is displayed. Click on the entry box before the equal (=) sign and enter a name.
  4. Click Set or press [Enter]. Click Cancel to dismiss the dialog box.

To clear the name from a cell or range:

  1. Select Named Range... from the Edit menu. XESS displays the Named Range dialog box.
  2. Click on an entry in the Named Range List box. XESS displays your choice in the Selection entry box.
  3. Click Clear.

Copying Data

XESS provides considerable flexibility in copying data from one part of the sheet to another, and for copying data from one XESS sheet to another within the same workbook. You can copy cell formulas or values either for one cell or for a range of cells and place these formulas or values into a designated cell or range of cells.

The most common ways to copy data are:

You can also copy between workbooks using either the mouse or the Clipboard.

Copying with the Mouse

One of the easiest and most powerful ways to copy cells uses just the mouse. Select the cell you want to copy by holding the left mouse button while dragging the mouse through the desired range. Then position the mouse pointer to the upper left cell where you want the result and click the middle mouse button to do a Paste. (On a two-button mouse, click both buttons at the same time.) XESS performs a Copy Formulas operation, copying the cell values and attributes, but not the cell notes.

Selection-Paste can be used within the current sheet, between XESS workbooks, and between XESS and other applications. If XESS is unable to exchange cell information with the other application, the current values are passed as text.

Selection-Paste is the standard convention for most X applications including terminal windows, text editors, and utility applications. This makes it easy to do things like selecting a file directory listing in a terminal window and pasting it directly into a sheet where the data might be sorted and graphed.

Using the Clipboard

To copy using the clipboard, select the range to be copied. Then Copy to Clipboard using either the Edit menu or the toolbar copy icon. Now position the cell cursor to the upper left corner of the target range and paste the result by using the Paste from Clipboard on the Edit menu, using the paste icon on the toolbar, or clicking the middle mouse button.

Items copied to the clipboard may be pasted into several different locations by using repeated paste operations. The clipboard holds its contents until the next cut or copy to the clipboard.

Using the Copy Menu

To copy formulas, use the Copy Formulas operation from the Edit menu. To copy values, use the Copy Values operation from the Edit menu:
Copy Formulas
Copies formulas from a selected cell or cell range into a selected cell or range, overwriting existing data in the destination range. XESS changes cell references to reflect the new location, unless the cell references are absolute (marked with a dollar sign, $), which indicates that they should not change.
Copy Values
Copies values from an active cell or cell range into a designated cell or range, overwriting existing data in the destination range. When copying cells that contain formulas, XESS copies the present value of the cell, not the formula, and enters it into the destination cell or range as a constant.
For Copy Formulas and Copy Values, XESS follows these rules for distributing the copies to the destination cell or range:

Note: You can make multiple copies of cells or cell ranges in one operation, simply by making the destination range longer or wider than the source destination.

Copying Formulas

The Copy Formulas operation duplicates a cell or range of cells (along with all formatting) and places these formulas in a new location, overwriting existing data in the destination range. XESS automatically translates relative cell references in the copied formulas to reflect their new locations. For example, if cell A10 contains the formula =@SUM(A1..A9) and is copied to cell B10, then B10 will contain the formula =@SUM(B1..B9).

To create an absolute cell reference -- one that XESS will not translate if the cell contents are copied or moved -- insert a dollar sign ( $ ) before each component of the cell reference (e.g., $A$1). You can use the [F4] key to insert the $ into formulas.

To copy formulas from one cell or range to another:

  1. Select a cell or range of cells whose formulas or values are to be copied. For example, select A1 through A10.
  2. Select Copy from the Edit menu, MB3 popup, or press Ctrl+f, and display its submenu.
  3. Select Copy Formulas from the Copy submenu. XESS displays the Copying formulas from A1..A10, select destination Range/Address... in the Message Line.
  4. Using the mouse, click on a cell or select a range to which the formulas should be copied. For example, click on cell E1 to copy the formulas to cells E1 through E10, or select the range E1..G1 to copy three columns of the formulas in cells E1 through G10. XESS copies the formulas and their values from the source range to the destination range, overwriting any existing data.

Alternatively, use the the Select Range dialog box from the Edit menu to select a destination range.

Remember that copying with the mouse is usually an easier operation.

Copy Formulas can be use to copy cells with repeating characters or graphs that are stored in the sheet.

Copying Values

The Copy Values operation copies the current value of a cell or range of cells to a new location. When copying a cell that contains a formula, XESS copies the calculated result of that formula, not the original formula. The value is copied to the new location and treated thereafter as a constant value.

If you have used formulas to build part of your sheet and no longer need the formulas themselves, converting the formulas to values can save memory and reduce recalculation times.

To copy values from one part of the workbook to another:

  1. Select a cell or range of cells whose values are to be copied. For example select A1 through A10.
  2. Select Copy from the Edit menu, MB3 popup, or press Ctrl+v, and display its submenu.
  3. Select Copy Values from the Copy submenu. XESS displays copying values from A1..A10, select destination Range/Address... in the Message Line. Using the mouse, click on a cell or select a range to which the values should be copied. For example, click on cell C1 to copy the values to cells C1 through C10, or select the range E1..G1 to copy three columns of the values in cells E1 through G10. XESS copies the values from the source range to the destination range, overwriting any existing data.

Alternatively, use the the Select Range dialog box from the Edit menu to select a destination range.

Copying Large Blocks of Data

When you need to handle a large block of data which exceeds the screen boundary, instead of using the mouse to select the data, use the Select operation from the Edit menu in conjunction with the Copy operations.

To copy a large block of data using the Select operation:

  1. Select Select... from the Edit menu or MB3 popup menu to display the Select Range dialog box.
  2. Enter the range you wish to copy and click OK or Apply.
  3. Select the desired Copy operation from the Edit menu or MB3 popup menu.
  4. To complete the operation, identify the beginning target cell by scrolling to the location and clicking in the cell.
-OR-
  1. Select the Go To... operation from the View menu.
  2. Enter the target cell address and click OK or Apply.
To copy a single cell to a large block of cells using the Select operation:
  1. Select the cell to be copied with the mouse.
  2. Select the desired Copy operation from the Edit menu or MB3 popup menu.
  3. Select Select... from the Edit menu or MB3 popup menu to display the Select Range dialog.
  4. Enter the target range and click OK or Apply. This will cause the target area to be selected only.
  5. Press [Enter] to complete the copy operation.

Tailoring Copy Options

You can control which attributes of a cell are copied by using the Copy Options dialog of the Options menu. This dialog contains settings which determine which of the attributes are copied with the Copy Values and Copy Formulas operations. They are not used by the Selection-Paste operation used for copying with just the mouse.

Transpose Tool

The Transpose operation on the Tools menu allows copy and move operations where the row and column orientation of the result is reversed from that of the source. For example, the transpose of the range A4..A10 into C3 places the results into the range C3..I3.

The Transpose command can copy the values, copy the formulas, or move the formulas. With Transpose>Move and Transpose>Formulas, the cell references are updated appropriately.

Copy Options Dialog

The copy options determine which aspects of a non-empty cell are transferred to the destination cell with the Copy action. The following choices are available:
To change copy options:
  1. Display "Copy Options..." dialog box from the Options menu.
  2. Click on the check box to activate/deactivate one or more options.
  3. Click OK (or press Return) to accept settings and dismiss dialog. Click APPLY to accept settings while retaining dialog. Click CANCEL to dismiss the dialog box.

Moving Data

The Move operation moves a cell or range of cells to a new location, along with all formulas. XESS clears the source cells and overwrites any existing data in the destination cells. Like the Copy Formulas operation, all cell references are updated to reflect the new cell/range location.

To move data in a cell or range of cells:

  1. Select a cell or range of cells to be moved. For example, select A1 through A10.
  2. Select Move from the Edit menu, MB3 popup, or press Ctrl+m. XESS displays moving from A1..A10, select destination Range/Address... in the Message Line. Using the mouse, click on the cell to which the values should be moved.

For example, click on cell A17 to move the contents to cells A17 through A26. XESS clears the original cell location and overwrites any existing data in the destination range with values and formulas from the source. Alternatively, use the the Select Range dialog box from the Edit menu to select a destination cell.

Cells can also be moved by doing a Cut to Clipboard followed by a Paste from Clipboard at the appropriate destination. Effects of Moving Cells

Note: If you make a mistake when copying or moving data, you can use Undo from the Edit menu to restore the workbook to its state prior to the copy or move operation.

Copying or Moving Data from one Workbook to Another

With XESS, you can have many workbooks active at the same time. Cells can be copied between workbooks using either the mouse select-paste operation or by using the clipboard.

You cannot move data from one workbook to another using the Move operation. You can accomplish the same effect, however, with Cut to Clipboard followed by Paste from Clipboard. You can also paste data to and from other X Windows application. For more information, see Interacting with Other Applications.

Removing Data -- Clear, Delete, and Cut

XESS provides several methods for removing data and formatting from the workbook:

Clearing Cells

To erase data in cells:
  1. Select a cell or range of cells to be cleared.
  2. Select Clear from the Edit menu, MB3 popup, or press Delete). XESS makes the selected cells be empty.

Deleting Columns and Rows

The Delete operations deletes rows and columns from the sheet, along with all formulas and values in the deleted cells. XESS reassigns addresses for the remaining rows and columns and adjusts formulas in other cells as needed so that cell dependencies are preserved. If the deleted rows or columns were included in named or referenced ranges, XESS contracts those ranges accordingly.

To delete a row:

  1. Use the mouse to select the row(s) you wish to delete. Place the mouse pointer over the number which identifies the row, and click the left mouse button. To select more than one row, place the mouse pointer over the number, drag the mouse (holding down the left mouse button) to the desired ending number, and release the left mouse button.
  2. Select Delete from the Edit menu or MB3 popup to display its submenu.
  3. Select Delete Row from the Delete submenu. XESS deletes the row(s) and all data contained in that row. XESS re-addresses the remaining rows and rewrites cell references where necessary to be consistent with the new row numbering.

To delete a column:

  1. Use the mouse to select the column(s) you wish to delete. Place the mouse pointer over the letter which identifies the column, and click the left mouse button. To select more than one column, place the mouse pointer over the letter, drag the mouse (holding down the left mouse button) to the desired ending letter, and release the left mouse button.
  2. Select Delete from the Edit menu or MB3 popup to display its submenu.
  3. Select Delete Column, from the Delete submenu. XESS deletes the column(s) and all data contained in that column. XESS re-addresses the remaining columns and rewrites cell references where necessary to be consistent with the new column lettering.

Calculations

How XESS Calculates

XESS uses natural order recalculation, which is a method of ordering the computations such that each cell's value is computed only after the values for all cells on which it depends have been computed. Natural order recalculation guarantees that cells are always computed correctly, regardless of the order in which the cell formulas were entered. Iconified sheets are recalculated the same as visible sheets.

XESS supports several recalculation options:

All four options are set in the Recalc Options Dialog.

Mode of Recalculation

XESS supports two modes of recalculation: Manual and Automatic. When Manual is set, formulas are only recomputed when an explicit recalculation operation is requested. When Automatic is set, any action which causes the contents of a cell to change automatically triggers recalculation of any formulas depending on the changed cell.

Method of Recalculation

Automatic recalculation supports two methods of recalculations: Foreground and As Needed.

Foreground

When Foreground is set, XESS enforces minimal recalculation, which means that only the cells in the workbook which are potentially affected by an operation which you perform (such as editing a cell, or moving a range of cell) are recalculated. This feature minimizes the work performed during recalculation and thus speeds up your computations. Minimal recalculation is in effect whenever the recalculation mode in the Recalc Options dialog is set to Automatic and the method is set to Foreground.

As Needed

When As Needed is set XESS enforces frugal recalculation, which further reduces the number of cells that need to be computed. The performance gain in recalculation can be significant, depending on the size and complexity of the sheet. Frugal recalculation is in effect whenever the recalculation mode in the Recalc Options dialog is set to Automatic and method is set to As Needed.

Note that As Needed does not support Constraint Checking and Iterative Recalculation options.

Iterative Calculations

Normally, a formula in a given cell should not depend on that cell itself, either directly or indirectly. Such a condition is called a cyclic dependency. When cyclic dependencies exist, the rule for natural order recalculation as described above does not make sense. When you enter a formula which creates a cyclic dependency, the message "Cycle!" is displayed in the cell.

In some cases cyclic dependencies are useful in that they can represent iterative calculations, which XESS supports. Iterative calculation is useful when two or more cells mutually depend on each other such that each time they are recalculated, their values become closer and closer to the desired answer.

When the Iteration Limit field in the Recalc Options dialog box is set to a non-zero value and Method is set to Foreground, iterative calculation is enabled. In this mode, XESS will make multiple recalculation passes, still preserving the natural order and minimal recalculation rules described above, until either the iteration limit has been reached or, if constraint checking is enabled, until all constraints are satisfied. The @INIT function helps perform iterative calculations.

Constraint-Checking

XESS formulas may contain conditional expression which establish conditions under which a formula operates or boundaries for valid results of the formula. When calculating the workbook, XESS only performs constraint checking when it is explicitly enabled in the Recalc Options dialog on the Options menu.

Precision and Accuracy

XESS performs all calculations in double-precision floating point binary numbers. This allows numbers to be represented with up to 15 significant decimal digits. This works well for integer values, but you need to use care when working with fractional values.

A simple example of the problem with fractions is to enter the value 0.01 into 100 cells and then sum the values and subtract 1. The result is not 0. Rather, it has small value in the 16th decimal place. The reason for this round-off error is that the decimal value .01 cannot be exactly represented as a binary fraction -- just as the value 2/3 cannot be exactly represented as a decimal number.

This behavior is well known and well understood in scientific and statistical computing, but can cause surprise when first using spreadsheet products to work with currencies. This behavior is found in all popular spreadsheet products.

Calculations with logical operators -- ! (logical NOT), && (logical AND), || (logical OR), and ?: (conditional) -- consider a non-zero value to be True and a zero value to be False. Integer operators -- ~ (complement), & (bitwise AND), | (bitwise OR), ^ (bitwise EXCLUSIVE-OR), and % (modulus) convert their operands to 32-bit integers before performing the operation.


Formulas

Formulas are the backbone of spreadsheets, establishing and calculating mathematical relationships between spreadsheet elements. Whereas numeric entries remain the same until you change them, cells defined by formulas are automatically changed to reflect changes in referenced cells -- even where there are complex interdependencies among cells.

XESS formulas can calculate with numbers, text, logical values, cell references, and other formulas. For example, you can easily calculate the sum of a series of cells, the total of values in a column, a minimum or maximum value within a range, the rounded result of another formula, or the absolute value of a cell entry. Formulas can express complex interdependencies among cells, and they can define constraints on the calculation, such as limits on acceptable values or specific conditions under which a calculation should take place.

Once entered in a cell, formulas are hidden behind the scenes, perform their work in the background, and display only the result of their calculation. To view the formula in a cell, simply select the cell.

XESS displays the formula in the Edit Line just below the main menu bar. You can edit the formula or values in cells at any time.

XESS also provides a wide variety of functions that perform certain tasks. Functions can be used alone or in conjunction with formulas and other functions. XESS provides many specialized functions in addition to those that are usually found in typical financial spreadsheets.

Formula Syntax

The general form of an XESS formula is: = expression ; constraint expression //comment where expression defines the calculations needed to generate the cell's value, constraint expression places limits on acceptable values or the circumstances under which the calculation should take place, and comment is any text you want to attach to the cell.

The expression part of XESS formulas look just like algebraic formulas; they contain values and operators that define the relationships between values.

XESS uses the following conventions for formulas:

Formula Operators

XESS supports all the arithmetic, boolean and logical operators available in the C programming language. It does not support the C address operators or the operators that have side effects, such as ++. XESS provides two operators, exponentiation (**) and percent (%), that are not available in the C language.

XESS Formulas can contain the following operators to define relationship between values.


Operator Precedence      Definition

   %       14           Unary percent
   **      13           Exponentiation
   +       12           Unary  plus
   -       12           Unary minus (negation)
   ~       12           Bitwise complement (integer)
   !       12           Logical not
   *       11           Multiplication
   /       11           Division
   %       11           Remainder (integer)
   +       10           Addition
   -       10           Subtraction
   <<       9           Shift left (integer)
   >>       9           Shift right (integer)
   <        8           Less Than
   >        8           Greater Than
   <=       8           Less Than or Equal
   >=       8           Greater Than or Equal
   ==       7           Equal
   !=       7           Not Equal
   &        6           Bitwise And (integer) or
                        String Concatenation
   ^        5           Bitwise Exclusive Or (integer)
   |        4           Bitwise Or (integer)
   &&       3           Logical And
   ||       2           Logical Or
   ?:       1           Conditional

In formulas with more than one operator, XESS calculates operators in the order of precedence presented above, with highest precedence first. That is, AND/OR/NOT relationships are considered after equal/unequal relationships, and subtraction/ addition are considered after multiplication/division. Operators at the same precedence level are evaluated from left to right.

To change the precedence of operators, enclose highest priority operations in parentheses.

Here are some special notes about XESS operators:

Case and Accent Sensitivity in String Comparisons

Case sensitivity and the effect of accented characters with respect to string comparisons in @IF, @HLOOKUP, @REGEX, @VLOOKUP, @XHLOOKUP, and @XVLOOKUP are controlled by options in the Workbook Defaults dialog box. (@EXACT and @FIND ignore these options.)

Empty Cells and Trailing Spaces

XESS lets you control whether spaces pad the shorter of two strings when doing a comparison. This is controlled by an option in the Workbook Defaults dialog. When XLS sheets are opened, this option is set True. When other formats are opened, it is set False. If this option is set to True, empty cells will compare equal to blank strings and to 0 numeric values.

Referencing Other Cells in Formulas

The real power of XESS lies in its ability to calculate relationships among different cells in the workbook. These references can be to cells in the current sheet, in other sheets in the current workbook, or to cells in other workbooks, including those produced by Excel and Lotus. XESS provides several ways within a formula to reference other cells. You can:

To reference a cell by address:

Type the row and column coordinates of the cell in the formula. For example, to reference Row 5 in Column D, type D5
OR
While entering a formula, move the mouse pointer to the cell to be referenced and click once. In input mode, XESS inserts the cell reference after the last character entered. In edit mode, XESS inserts the cell reference at the cursor location in the Edit Line.

To reference a contiguous group of cells by address:

Type the row and column coordinates of two cells in opposite corners of the block to be referenced, with two periods ( .. ) between the coordinates. For example, to reference the first five columns and the first five rows of the sheet, type A1..E5.
OR
Move the mouse pointer to one corner of the block or range to be referenced. Press the left mouse button and drag the mouse to the opposite corner, then release the mouse button. In input mode,

XESS inserts the cell reference after the last character typed. In edit mode, XESS inserts the cell reference at the cursor location.

To reference a cell or range by name, type the pre-assigned name of the cell or cell block into the formula.

To assign a name to a cell or range of cells, use the Named Range utility in the Edit menu.


Types of Cell References

XESS differentiates between relative, absolute, and indirect references.

Relative Reference

XESS tracks the referenced cell by considering its position relative to the formula cell, not by its address. For example, if the formula in cell A1 references cell B2, XESS remembers that the referenced cell is one row down and one column right. If you copy the formula in cell A1 to another location (e.g. D17), the formula will reference the cell one row down and one column right of the new location (e.g. E18).

Absolute Reference

Absolute references remain the same, no matter where you move or copy the original formula. For example, if the formula in cell A1 references cell B2, and you copy the formula in cell A1 to another location (e.g. D17), the formula still references cell B2.

To specify an absolute cell address, insert a dollar sign ($) before the address coordinate to be fixed, or before both coordinates if the row and column coordinates are to be fixed. For example: $B$2.

To specify all or part of a cell address to be absolute, insert a dollar sign ($) before the address coordinate to remain fixed For example:

Cell ranges are also relative, so when you move a cell range, references in formulas within that range are updated to reflect their new location.

To specify an absolute range reference, insert dollar signs ($) before the coordinates in the formula. For example, to make the range A1..D5 absolute, type the reference as $A$1..$D$5.

To specify part of a cell range to be absolute, insert dollar signs only before the coordinates to remain absolute. For example, $A1..$D5 will fix the column coordinates of cell references but adjust the row coordinates to reflect the new location.

You can use the [F4] key when editing a cell to toggle through the addressing modes in a reference.

Indirect Reference

The current cell is identified in any expression with the symbol (#). References to other cells are made with offset values enclosed in braces ( {} ) and following the #. Offset references tell XESS where to look, in relation to the current cell, for the cell to use in the expression.

The format is as follows: #{column offset,row offset}

@CSUM(C4..C100,#{-1} == "Joe") calculates the sum of all the values in the range C4..C100 for which the cell in the column to the left contains the string "Joe."

@CCOUNT(C4..C100,# > #{0,-1}) counts all the cells in the range C4..C100 whose value is greater than the contents of the cell immediately above.

@XVALUE("master.xs5",#) returns the value of the same cell reference in which this function is stored from the sheet indicated.

#{-1}+2 adds 2 to the cell value from the cell to the left.

Sheet Names in References

Sheet names may be used to indicate which sheet contains the cell or range of cells needed. By default, sheet names are of the form:

	Sheet1, Sheet2,...Sheetn

The alternate form of sheet names is the same as column names:


	A,B,C...AMI

The style of names used for new sheets is specified in the Workbook Defaults dialog and is controlled by the *defaultSheetNameFormat resource with values of N (numeric) or A (alphabetic). Sheets can also be given user-defined names. Sheet names are separated from cell specifications by either a period (.) or an exclamation point (!).

The upper left cell in the first sheet is: Sheet1.A1 or A.A1 Sheet1!A1 or A!A1

If an explicit sheet name is not specified, the cell reference is assumed to be on the current sheet. Sheet names (like column names) are case insensitive. Sheet1 is the same as SHEET1 and sheet1.

One or both of the cells which define the boundaries for a range may be qualified with a sheet name. Thus:


	Sheet3.A1..Sheet9.A1 or C.A1..I.A1

defines a range of 7 cells, drilling through the sheets.

	Sheet3!A1..A5 or C.A1..A5

defines a 5 cell range on Sheet3, which may not be the current sheet. By varying the sheet name, the column, and the row you can reference 3-dimensional ranges. For example:

	Sheet1.A1..Sheet10.E10 or A.A1..J.E10

defines a cubic solid containing 500 cells (10 sheets * 5 columns * 10 rows).

Just as row and column references may be relative or absolute, so can sheet names. Place a dollar sign ($) before the sheet name to prevent it from changing when formulas are are copied from one sheet to another.


Set Sheet Name Dialog

By default, new sheets are given names according to the style selected in the Sheet Defaults dialog and they are case insensitive. You can also rename sheets to any name you like.

To change the name of a sheet:

  1. Select the sheet whose name you want to modify.
  2. Choose Set Sheet Name... from the Edit menu. The Set Sheet Name dialog is displayed containing the current sheet name.
  3. Edit the sheet name to contain the new name.
  4. Click OK. All references to the sheet name are updated.
Sheet names can contain special characters and spaces. In this case, the sheet name must be enclosed in quotes ("). Examples would be:
              "cr�pe"!A5
              "1997 Sales"!B5..J5
              "Sales/Quarter"!B12

Referencing Cells in Other Workbooks

Cells in other workbooks can be referenced directly in formulas. These other workbooks can be in any of the spreadsheet file formats: XESS, Excel, or Lotus.

External cell references have the filename of the workbook enclosed in quotes and followed by two colons (::):

     
     "book2.xs5"::Sheet1!A4
     "/home/test/olddata.xls"::Sheet4.C1..C17
     "part-table.xs5"::namedrange

If the referenced workbook is not active, the values of the cells are retrieved from the file on disk. If the referenced workbook file is opened by XESS, then the values dynamically change and the referencing workbook is recalculated as required.


Constraint Expressions

Constraints are limitations or conditions placed on the variables in your workbook. They are expressed as algebraic statements appended to formulas. You can attach a constraint expression to any formula, by typing a semicolon (;) and the constraint conditions after the formula.

Constraint expressions establish conditions under which a formula operates or boundaries for valid results of the formula. Constraint expressions may be simple equality/inequality relationships, or they can be arbitrary formulas. Any valid XESS expression which returns a numeric value is also a valid constraint expression. However, unlike the expression that defines a cell value, a constraint expression can reference the cell in which it resides, using the symbol #.

For example, the formula


	=A1 + A2 ; #>2 && #<=B5 || #==C7

means, "the value of the current cell is the sum of cells A1 and A2, and that value must be either greater than 2 and less than or equal to the value of cell B5, or equal to the value of cell C7."

Constraint expressions are used in several other contexts within XESS, including the Find and Extract Tools, and the conditional statistical functions.

The benefit of constraint expressions is maximized when combined with indirect reference support (#) as illustrated in the above example.

Explicit Dependency

There may be instances where you need to force a recalculation when certain cell values changes, when there is no implicit dependency in the formula that would trigger an automatic recalculation. This option is indicated by appending a backslash (\) to the end of the dependent formula. For example, the formula

	=@SUM(A1..A20)\D50

instructs XESS to recalculate @SUM(A1..A20) whenever the contents of D50 change.

This feature is particularly important when you have a constraint expression containing an offset reference that produces a cell reference outside the cell range referenced in a dependent formula. Under these circumstances, Automatic Recalculation would not necessarily be triggered. Take for instance, the example from above:

@CCOUNT(C4..C100,# > #{0,-1}) counts all the cells in the range C4..C100 whose value is greater than the contents of the cell immediately above.

In order for C4 to be evaluated, it must be compared to C3 - which is not part of the explicit range, C4..C100. Without indicating an explicit dependency, C4 would never be evaluated properly. So, in this case, we could indicate the dependency as follows:


       @CCOUNT(C4..C100,# > #{0,-1})\C3..C99

which tells XESS to recalculate whenever any cell in the range C3..C99 changes.

Changing Calculation Options

The Recalc Options dialog box allows you to change certain features about XESS calculations defined as:

To change or view the calculation options using the Recalc Options dialog box:

  1. Select Recalc Options from the Options menu to display the Recalc Options dialog box.
  2. Change any of the options (described below).
  3. Apply your selection by clicking OK or Apply.

Setting Recalculation Method

Recalc Method defines how XESS will proceed with recalculation. There are two options: As Needed and Foreground.

As Needed means that recalculation is highly optimized to recompute the minimum number of cells when updating the workbook. This can result in significant performance improvement for certain types of workbooks, particularly on very large workbooks.

As Needed does not support Constraint Checking and Iteration Limits.

Foreground means that minimal recalculation is performed, similar to other spreadsheets.

To change recalculation method:

  1. Select Recalc Options from the Options menu. XESS displays the Recalc Options dialog box.
  2. Move the pointer to the Recalc Method option button. While holding down the left mouse button to display the options point to the desired option and release.
  3. Apply your selection by clicking OK or Apply.

Controlling Automatic Recalculation

XESS lets you decide whether or not to recalculate the workbook after you make changes that affect other cells or whenever the file is initially loaded. XESS automatically recalculates the formulas in both cases if Recalculation Mode is set to Automatic. However, this can be time-consuming for large workbooks, especially those with graphs that are automatically recalculated as well. If recalculation is taking too much time, you can turn automatic recalculation off. XESS will only recalculate upon explicit request.

Disabling Automatic Recalculation

To turn automatic recalculation off:
  1. Select Recalc Options from the Options menu. XESS displays the Recalc Options dialog box.
  2. Move the pointer to the Recalc Mode option button. While holding down the left mouse button to display the options point to desired option and release.
  3. Apply your selection by clicking OK or Apply.

Manual Recalculation

To manually recalculate a workbook, select Recalculate from the Tools menu or press [F9] on the keyboard.

Recalculate on Load

This options forces a recalculation of values when a saved spreadsheet is first loaded. (This is usually the result of the File>Open operations.) Otherwise, the values initially displayed are those at the time the sheet was last saved.

Enabling Constraint-Checking

When calculating the formulas, XESS ignores constraint expressions unless constraint-checking is turned on for the workbook.

To turn constraint-checking on:

  1. Select Recalc Options from the Options menu. XESS displays the Recalc Options dialog box.
  2. Click the Constraint Checking check button on.
  3. Apply your selection by clicking OK or Apply.

Setting Iteration Limits

When the Iteration Limit field on the Recalc Options dialog is set to a non-zero value, iterative calculation is enabled for all formulas in the workbook. In this mode, XESS will make multiple recalculation passes, still preserving the natural order and minimal recalculation rules, until either the iteration limit has been reached or, if constraint checking is enabled, until all constraints are satisfied, whichever comes first.

To set iteration limit:

  1. Select Recalc Options from the Options menu. XESS displays the Recalc Options dialog box.
  2. Move the Iteration Limit slider bar to the desired number.
  3. Apply your selection by clicking OK or Apply.

Highlighting Special Calculated Results

XESS provides a mechanism for flagging certain calculation results such as errors, negative values, and constraint conditions that are not met.

Functions

XESS functions are predefined formulas supplied with the program. They offer a shortcut approach to accomplishing the work of long, complex formulas. Mathematical and statistical functions are often used to sum a column of numbers, compute an average, determine a minimum or maximum value, or round the results of a formula.

Other functions are used for more specialized purposes such as computing the future value of an investment or the product of multiplying one cell range by another range. Some functions perform calculations that arithmetic operators cannot handle such as text-string manipulations.

XESS functions fall into the following categories:

Using XESS Functions

You enter a function in a cell in the same way you enter a formula or any other entry, with a few additional guidelines.

Arguments

Arguments specify the values the function should use in its calculations. The number of arguments, their types, and their formats vary from one function to another. Arguments are usually numeric values, cell or range references, or string values. Most functions have at least one argument; a few have none.

The following chart shows different types of arguments used in XESS functions.


      Argument                 Example
      
      Numeric Value            123
      Address of a cell        A10
      Address of a range       F9..F99
      Name of a cell or range  BUDGET1, where BUDGET1 is the range D9..K9
      String Value             "Quarterly Report"
      Matrix constant          {1,1,2,3,5,8,13,21}


Using Operators with Functions

The result of an @ function depends on the order in which XESS handles the calculations. Please see Calculations for more information on operators and their precedence

Explicit Dependencies

Certain formulas, particularly those using relative cell references, make it difficult to detect all the cells whose values might affect the value of the functions. XESS provides a special construct to force a recalculation, referred to as an explicit dependency. For example,

          =@CCOUNT(C3..C100,#>#{-1} )

would not recalculate when the values in column B change. To make the formula recalculate when these values change, make the formula be:

          =@CCOUNT(C3..C100,#>#{-1} )\B3..B10

Matrix and Table Results

Certain functions return arrays (or tables) of values. They may be used as arguments to other functions in formulas. When the final value of a cell formula is an array, the values of its elements are stored in a group of adjacent cells. These adjacent cells are set to constant formulas with explicit dependencies on the anchor cell. For example, an matrix function in cell B2 might produce the formula =1.3459\B2 in cell B3. This formula indicates that the cell currently contains the constant 1.3459 but that its value depends on the contents of cell B2 (the cell containing the formula).

This notion of explicit dependencies is important for recalculation. It guarantees that any cell that references B3 will not be recalculated until after cell B2 is recalculated. This ensures that data generated by the formulas is always current.

Functions by Category

These functions are grouped by general type of function performed.

Mathematical Functions

Mathematical Functions perform calculations such as determining absolute value, finding the integer portion of a number, or establishing the value of a constant. Although you could accomplish these tasks with a formula, using a function saves time and trouble.

XESS also provides a full range of trigonometric functions as well as ones for matrix arithmetic and manipulation. Mathematical functions perform calculations with numeric values as arguments, returning numeric values.

@ABS(X)
The absolute value of X
@ACOS(X)
The arc cosine of X
@ACOSH(X)
The hyperbolic arc cosine of X
@ACOT(X)
The arc cotangent of X
@ACOTH(X)
The hyperbolic arc cotangent of X
@ACSC(X)
The arc cosecant of X
@ACSCH(X)
The hyperbolic arc cosecant of X
@ASEC(X)
The arc secant of X
@ASECH(X)
The hyperbolic arc secant of X
@ASIN(X)
The arc sine of X
@ASINH(X)
The hyperbolic arc sine of X
@ATAN(X)
The 2-quadrant arc tangent of X
@ATAN2(X,Y)
The 4-quadrant arc tangent of Y/X
@ATANH(X)
The hyperbolic arc tangent of X
@BESSELI(X,N)
The Bessel function of order In(x).
@BESSELJ(X,N)
The Bessel function of order Jn(x).
@BESSELK(X,N)
The Bessel function of order Kn(x).
@BESSELY(X,N)
The Bessel function of order Yn(x).
@BETA(Z,W)
The beta function of z and w
@BETAI(A,B,X)
The incomplete beta function
@CEIL(X)
The smallest integer greater than or equal to X
@COMPLEX(A,B[,S])
The complex number defined by the coefficients a and b of the form "a + bi" or "a + bj",
@COS(X)
The cosine of X
@COSH(X)
The hyperbolic cosine of X
@COT(X)
The cotangent of X
@COTH(X)
The hyperbolic cotangent of X
@CSC(X)
The cosecant of X
@CSCH(X)
The hyperbolic cosecant of X
@DEGREES(X)
Converts the angle expressed in radians to degrees (180/p*X)
@DELTA(X,Y)
Returns 1 if numbers are equal
@DET(M)
The determinant of the matrix range M, which must be a square matrix
@DFT(R)
The Discrete Fourier Transform of the range R
@DOT(R1,R2)
The dot product of the vectors R1 and R2
@EIGEN(M)
The eigenvalues of the matrix M
@EVEN(X)
The next larger even integer
@EXP(X)
e raised to the X power
@FACT(N)
The value of N!
@FACTDOUBLE(N)
The value of N * (N-2) * (N-4) ...
@FFT(R)
The Discrete Fourier Transform of the range R using a fast Fourier Transform algorithm
@FLOOR(X)
The largest integer less than or equal to X
@FRAC(X)
The fractional portion of X
@GAMMA(X)
The value of the gamma function evaluated at X
@GCD(X,...)
Greatest Common Divisor of all the numeric values in the argument list
@GRAND(
A 12th-degree binomial approximation to a Gaussian random number with zero mean and unit variance
@IMABS(A)
The absolute value (modulus) of the complex number A.
@IMAGINARY(A)
The imaginary coefficient of the complex number A.
@IMARGUMENT(A)
The argument (or amplitude) of the complex number A.
@IMCONJUGATE(A)
The conjugate of the complex number A.
@IMCOS(A)
The cosine of the complex number A.
@IMDIV(A,B)
The quotient of A divided by B.
@IMEXP(A)
The exponetial of the complex number A.
@IMLN(A)
The natural logarithm of the complex number A.
@IMLOG10(A)
The common logarithm (base 10) of the complex number A.
@IMLOG2(A)
The logarithm base 2 of the complex number A.
@IMPOWER(A, X)
The complex number A raised to the power X.
@IMPRODUCT(...)
The product of the complex arguments
@IMREAL(A)
The real componnent of the complex number A.
@IMSIN(A)
The sine of the complex number A.
@IMSQRT(A)
The square root of the complex number A.
@IMSUB(A, B)
The difference between the complex numbers A and B.
@IMSUM(...)
The sum of the complex arguments
@INT(X)
The integer portion of X
@INVDFT(R)
The inverse of the Discrete Fourier Transform of the range R
@INVERT(M)
The inverse of matrix M
@INVFFT(R)
The inverse of the Discrete Fourier Transform of the range R using a fast Fourier Transform algorithm
@LCM(X,...)
Lowest Common Multiple of all the numeric values in the argument list
@LN(X)
The natural log (base e) of X
@LNGAMMA(X)
The log base e of the gamma function evaluated at X
@LOG(X)
The log base 10 of X (included for compatibility with WKS/WK1)
@LOG10(X)
The log base 10 of X
@LOG2(X)
The log base 2 of X
@MADD(M1,M2)
The result of adding matrix M2 to matrix M1
@MMUL(M1,M2)
The product of multiplying matrix M2 by matrix M1
@MOD(X,Y)
The remainder of X/Y
@MODULUS(X,Y)
The modulus of X/Y
@MSUB(M1,M2)
The result of subtracting matrix M2 from matrix M1
@ODD(X)
The next larger odd integer
@PI
The value of p
@POLY(X,...)
The value of an Nth-degree polynomial in X
@PRODUCT(X,...)
The product of all the numeric values in the argument list.
@RADIANS(X)
Converts the angle expressed in degrees to radians (p/180*X)
@RAND
A uniform random number on the interval 0,1
@ROUND(X,n)
X rounded to n number of decimal places (0 to 15)
@ROUNDDOWN(X,n)
X rounded towards zero at n decimal places (-15 to 15)
@ROUNDUP(X,n)
X rounded away from zero at n decimal places (-15 to 15)
@SEC(X)
The secant of X
@SECH(X)
The hyperbolic secant of X
@SIGMOID(X)
The value of the sigmoid function 1/(1 + exp(-X))
@SIGN(X)
The sign of X as (-1, 0, 1).
@SIN(X)
The sine of X
@SINH(X)
The hyperbolic sine of X
@SQRT(X)
The positive square root of X
@SQRTPI(X)
The positive square root of X*@PI
@SUMPRODUCT(R1,R2)
The dot product of the vectors R1 and R2, where R1 and R2 are of equal dimension
@TAN(X)
The tangent of X
@TANH(X)
The hyperbolic tangent of X
@TRANSPOSE(M)
The transpose of matrix M
@TRUNC(X,N)
Returns the value of X truncated to N decimal places
@VECLEN(...)
The square root of the sum of squares of its arguments

Statistical Functions

Statistical Functions perform descriptive statistics such as calculating means, minimums, maximums, and averages. XESS also provides more sophisticated statistical test functions that perform operations on a group of values expressed as a list of arguments. These include the F-test, T-tests, correlation coefficient, deviations, and all common averages.

Statistical functions return numeric values.

@AVERAGE(...)
The average (arithmetic mean) of its arguments
@AVG(...)
The average (arithmetic mean) of its arguments
@CORR(R1,R2)
Pearson's product-moment correlation coefficient for the paired data in ranges R1 and R2
@COUNT(...)
A count of its non-blank arguments
@F(M,N,F)
The integral of Snedecor's F-distribution with M and N degrees of freedom from minus infinity to F
@ERF(L[,U])
Error function integrated between 0 and L; if U specified, between L and U.
@ERFC(L)
Complementary error function integrated between L and infinity.
@FORECAST(...)
Predicted Y values for given X
@FREQUENCY(R,B)
Returns a frequency distribution for values R with a set of intervals B.
@FTEST(R1,R2)
The significance level (alpha) of the two-sided F-test on the variances of the data specified by ranges R1 and R2
@GMEAN(...)
The geometric mean of its arguments
@HMEAN(...)
The harmonic mean of its arguments
@LARGE(R,N)
The Nth largest value in range R.
@LINCOEF(X,Y)
The least squares coefficients for the straight line fit
@LINFIT(X,Y)
The straight line least squares fit. This function is equivalent to @POLYFIT(X,Y,1)
@LLS(A,Y)
The linear least squares solution X to the over-determined system of equations AX=Y
@MAX(...)
The maximum of its arguments
@MEAN(...)
The average (arithmetic mean) of its arguments
@MEDIAN(...)
The median (middle value) of the range R1.
@MIN(...)
The minimum of its arguments
@MODE(...)
The mode, or most frequently occurring value
@MSQ(...)
The mean of the squares of its arguments
@PERCENTILE(R,N) The
value from the range R which is at the Nth percentile in R.
@PERCENTRANK(R,N)
The percentile rank of the number N among the values in range R.
@PERMUT(S,T)
The number of T objects that can be chosen from the set S, where order is significant.
@PTTEST(R1,R2)
The significance level (alpha) of the two-sided T-test for the paired samples contained in ranges R1 and R2
@QUARTILE(R,Q)
The quartile Q of the data in range R.
@PLS(X,Y,d)
Analyzes the least squares polynomial model
@POLYCOEF(X,Y,d)
The least squares coefficients for the polynomial fit
@POLYFIT(X,Y,d)
The least squares polynomial fit, given a vector of independent variables (X), dependent variables (Y), and the degree (d) of polynomial.
@PURECOUNT(...)
A count of its non-string arguments
@RANK(E,R[,O])
The rank of a numeric argument E in the range R.
@RMS(...)
The root of the mean of squares of its arguments
@SMALL(R,N)
The Nth smallest number in range R.
@SSE(...)
The sum squared error of its arguments. It is equivalent to @VAR(...) * @COUNT(...)
@SSQ(...)
The sum of squares of its arguments
@STD(...)
The population standard deviation (N weighting) of its arguments
@STDS(...)
The sample standard deviation (N-1 weighting) of its arguments
@SUM(...)
The sum of its arguments
@SUMNEGATIVE(...)
The sum of its negative arguments
@SUMPOSITIVE(...)
The sum of its positive arguments
@SUMSQ(...)
The sum of the squares of its arguments
@SUMXMY2(RX,RY)
The sum of the squares of the differences between ranges RX and RY
@SUMX2MY2(RX,RY)
The sum of the differences between the squares of the elements of ranges RX and RY
@SUMXPY2(RX,RY)
The sum of the squares of the addition of elements of ranges RX and RY
@T(N,T)
The integral of Student's T-distribution with N degrees of freedom from minus infinity to T
@TREND(NX,KX,KY) The
y values for new x values given existing x and y values.
@TTEST(R,X)
The significance level (alpha) of the two-sided single population T-test for the population samples contained in range R
@TTEST2EV(R1,R2)
The significance level (alpha) of the two-sided dual population T-test for ranges R1 and R2, where the population variances are equal
@TTEST2UV(R1,R2)
The significance level (alpha) of the two-sided dual population T-test for ranges R1 and R2, where the population variances are not equal
@VAR(...)
The sample variance (N weighting) of its arguments
@VARS(...)
The sample variance (N-1 weighting) of its arguments
@VSUM(...)
The "visual sum" of its arguments, using precision and rounding of formatted cell values

Conditional Statistical Functions

Conditional Statistical Functions operate much like statistical aggregation functions, except that the last argument is a constraint expression that XESS evaluates for each cell in the argument list. Only cells that meet constraint criteria are included in the calculation. The constraint expression may be any XESS expression that evaluates to a numeric result.

Conditional Statistical Functions return a numeric value.

These functions provide capabilities similar to those of database functions found in other spreadsheet products (e.g. DSUM).

@CAVG(...,C)
Conditional average
@CCOUNT(...,C)
Conditional count
@CMAX(...,C)
Conditional maximum
@CMIN(...,C)
Conditional minimum
@CSTD(...,C)
Conditional sample standard deviation (N weighting)
@CSTDS(...,C)
Conditional sample standard deviation (N-1 weighting)
@CSUM(...,C)
Conditional sum
@CVAR(...,C)
Conditional population variance (N weighting)
@CVARS(...,C)
Conditional population variance (N-1 weighting)

String Functions

String Functions manipulate and evaluate character strings. For example, string functions can return the length of a string, find the first occurrence of a string in a range, change a string from upper to lower-case and vice versa, or replace one string with another.

String functions return strings or numeric values.

@CHAR(N)
The character represented by the code N
@CLEAN(S)
The string formed by removing all non-printing characters from the string S
@CODE(S)
The integer value of the first byte in string S
@EXACT(S1,S2)
Returns true (1) if string S1 exactly matches string S2, otherwise returns 0
@FIND(S1,S2,N)
The index of the first occurrence of S1 in S2
@FORMAT(F,N,X)
The string formed by formatting the value X using format code F and precision N
@HEXTONUM(S)
The numeric value for the hexadecimal interpretation of S
@LEFT(S,N)
The string composed of the leftmost N characters of S
@LENGTH(S)
The number of characters in S
@LOWER(S)
S converted to lower case
@MID(S,N1,N2)
The string of length N2 that starts at position N1 in S
@NUMTOHEX(X)
The hexadecimal representation of the integer portion of X
@OCCUR(S1,S2)
Returns the number of times string S2 occurs in string S1
@PROPER(S)
The string S with the first letter of each word capitalized
@REGEX(S1,S2)
Returns true (1) if string S1 exactly matches string S2; otherwise returns false (0). Allows "wildcard" comparisons by interpreting S1 as a regular expression.
@REPEAT(S,N)
The string S repeated N times
@REPLACE(S1,N1,N2,S2)
The string formed by replacing the N2 characters starting at position N1 in S1 with string S2
@REVERSE(S)
The reverse order of characters in S.
@RIGHT(S,N)
The string composed of the rightmost N characters of S
@SETSTRING(S,N,F)
Returns a string of lenght N with the string S aligned within (left, right, center)
@STRCAT(...)
The concatenation of all its arguments
@STRING(X,N)
The string representing the numeric value of X, to N decimal places
@STRLEN(...)
The total length of all strings in its arguments
@SUBSTITUTE(S,OLD,NEW,N)
Replaces the Nth occurrence of string OLD in string S with string NEW from beginning and end of the string S
@TRIM(S)
The string formed by removing spaces from beginning and end of the string S
@UPPER(S)
The string S converted to upper case
@VALUE(S)
The numeric value represented by the
@VERIFY(S1,S2)
Returns the number of the first character in S1 not in string S2

Logic Functions

Logic Functions return one value if an argument meets certain criteria, another value if it does not. Logic functions are used as an adjunct to conditional statements.

Logic functions return the value 1, 0, or a value.

@FALSE
The logical value 0
@FILEEXISTS(S)
1 if file S can be opened for reading; otherwise 0
@IF(X,T,F)
The value of T if X evaluates to on-zero, or F if X evaluates to zero
@ISERROR(X)
Returns 1 if X contains an error, otherwise 0.
@ISEVEN(X)
1 if integer part of X is even; otherwise 0.
@ISNUMBER(X)
1 if X is a numeric value; otherwise 0
@ISODD(X)
1 if integer part of X is odd; otherwise 0.
@ISSTRING(X)
1 if X is a string value; otherwise 0
@TRUE
The logical value 1

Digital Logic Functions

Digital Logic Functions perform digital logic operations such as AND, OR, NOT, etc.

Digital logic functions return the values 0, 1, or -1 (for unknown). Any argument value whose integer portion is not equal to 0 or 1 is considered unknown. Unknown input values may cause unknown output values. For example, @OR(1,27) returns 1, while @OR(0,27) returns -1.

@AND(...)
0 if any arguments are 0; 1 if all arguments are 1; otherwise -1
@NAND(...)
0 if all arguments are 1; 1 if any arguments are 0; otherwise -1
@NOR(...)
0 if any arguments are 1; 1 if all arguments are 0; otherwise -1
@NOT(X)
0 if X=1; 1 if X=0; otherwise -1
@OR(...)
0 if all arguments are 0; 1 if any arguments are 1; otherwise -1
@XOR(...)
-1 if any of the arguments are not 0 or 1; otherwise 0 if the total number of arguments with the value 1 is even; 1 if the total number of arguments with the value 1 is odd.

Financial Functions

Financial Functions perform common financial calculations, such as calculating the future value of an annuity at a given interest rate, straight-line depreciation, double-declining depreciation, or the payment term for a given investment. The financial functions in XESS cover annuities, cash flows, assets. bonds, and Treasury Bills.

Financial functions are most useful for solving cash flow calculations where you know all but one variable. For example, if you know the present value of an investment, interest rate, and periodic payment, you can use the @FV function to calculate the future value of the investment. If you know the future value and other variables, but need to know the present value, you can use the @PV function.

Many financial functions require specifying a Day Count Basis. A Day Count Basis indicates the way in which the days in a month and the days in a year are to be counted. Most of the financial functions in securities involve 4 different Day Count Basis: 30/360, actual/actual, actual/360 and actual/365.

30/360 Day Count Basis assumes 30-day months and 360-day years (12 months x 30 days). XESS also follows the "End-of-Month" rule which assumes that a security pays interest on the last day of the month and will always make its interest on the last day of the month. Special rules are followed when calculating the days between two dates on 30/360 Day Count Basis.

For example, let Start_Date = D1/M1/Y1, End_Date = D2/M2/Y2.

  1. If D1=31, XESS uses 30 for D1.
  2. If D2=31, XESS uses 31, unless D1=30 or D1=31. In this case, XESS uses 30.
  3. If D1 is the last day of February (D1=28 or 29 in a leap year), XESS uses 30 for D1.
  4. If D2 is the last day of February (D2=28 or 29 in a leap year) and D1 is also the last day of February, XESS uses 30 for D2.

Financial functions use the following arguments:

interest rate
The interest rate to be used in the calculations. The rate may be specified as annual, monthly or quarterly, but it must agree with the increment you use for periods. By default the interest rate is an annual rate.
present value
The present value of an investment, representing the amount already received from or committed to an investment. period The number of periods over which the loan, investment or depreciation is to be calculated. The periods may be defined in months, quarters or years, but must agree with the increment used to define interest rate.
future value
The future value of an investment, given a certain present value, interest rate, and number of periods.
cost
The original cost of a depreciable capital asset.
salvage value
The remaining value of a capital asset after the depreciation period has expired. allowable life The allowable life of a depreciable item.
yield
The interest rate that will make the present value of the expected future cash flows equal to the price of the financial instrument.
price
The present value of the expected future cash flows where the discount rate is equal to the yield of the financial instrument.
coupon rate
The annual coupon rate of a security.
frequency
The number of coupon payments in a year.
basis
The day count basis to be used in calculation.

Functions related to fixed income securities usually require special dates as arguments: issue date, settlement date, first coupon date, last coupon date, maturity date of a security. When specified, the following constraints should be followed:

issue > settlement > maturity
issue > first coupon > maturity
issue > last coupon > maturity
@ACCRINT(I,Ft,S,R,P,F[,B])
Accrued interest for a security that pays periodic interest.
@ACCRINTM(I,S,R,P[,B])
Accrued interest for a security that pays interest at maturity
@CTERM(R,FV,PV)
The number of compounding periods for an investment
@COUPDAYBS(S,M,F[,B])
The number of days between the beginning of the coupon period to the settlement date.
@COUPDAYS(S,M,F[,B])
The number of days in the coupon period that the settlement date is in.
@COUPDAYSNC(S,M,F[,B])
The number of days between the settlement date and the next coupon date.
@COUPNCD(S,M,F[,B])
The next coupon date after the settlement date.
@COUPNUM(S,M,F[,B])
The number of coupon payments between the settlement date and maturity date.
@COUPPCD(S,M,F[,B])
The previous (most recent) coupon date before the settlement date.
@CUMIPMT(R,NP,PV,S,E,T)
The cumulative interest on a loan between start period S and end period E.
@CUMPRINC(R,NP,PV,S,E,T)
The cumulative principal paid on a loan between start period S and end period E..
@DB(C,S,L,P[,M])
Fixed-declining depreciation allowance
@DDB(C,S,L,N)
Double-declining depreciation allowance
@DISC(S,M,P,R[,B])
The discount rate for a security.
@DOLLARDE(FD,F)
Converts a dollar amount expressed as a fraction form into a decimal form.
@DOLLARFR(DD,F)
Converts a dollar amount expressed as a decimal form into a fraction form.
@DURATION(S,M,R,Y,F[,B])
The Macauley duration of a security assuming $100 face value.
@EFFECT(NR,NP)
Returns the effective annual interest rate.
@FV(P,R,N)
Future value of an annuity
@FVSCHEDULE(P,S)
The future value of an initial investment after compounding a series of interest rates.
@INTRATE(S,M,I,R[,B])
The interest rate for a fully invested security.
@IPMT(R,P,NP,PV,FV[,T])
The interest payment for a specific period for an investment based on periodic, constant payments and a constant interest rate.
@IRR(G,F)
The internal rate of return on an investment.
@MDURATION(S,M,R,Y,F[,B])
The modified Macauley duration of a security assuming $100 face value.
@MIRR(CF,FR,RR)
The modified internal rate of return for a series of periodic cash flows.
@NOMINAL(ER,NP)
The nominal annual interest rate.
@NPV(R,CF)
The present value of a series of future cash flows at given the rate R and the cash flow CF range
@ODDFPRICE(S,M,I,FC,R,Y,RD,F[,B])
The price per $100 face value of a security with an odd (short or long) first period.
@ODDFYIELD(S,M,I,FC,R,PR,RD,F[,B])
The yield per of a security with an odd (short or long) first period.
@ODDLPRICE(S,M,LC,R,Y,RD,F[,B])
The price per $100 face value of a security with an odd (short or long) last period.
@ODDLYIELD(S,M,LC,R,PR,RD,F[,B])
The yield per of a security with an odd (short or long) first period.
@PMT(PV,R,N)
The periodic payment for a loan
@PPMT(R,P,NP,PV,FV,T)
The payment on the principal for a specific period for an investment based on periodic, constant payments and a constant interest rate.
@PRICE(S,M,R,Y,RD,F[,B])
The price per $100 face value of a security that pays periodic interest
@PRICEDISC(S,M,D,RD[,B])
The price per $100 face value of a discounted security.
@PRICEMAT(S,M,I,R,Y[,B])
The price per $100 face value of a security that pays interest at maturity
@PV(P,R,N)
The present value of an annuity
@RATE(FV,PV,N)
The interest rate required to reach future value FV
@RECEIVED(S,M,I,D,[,B])
The amount received at maturity for a fully vested security
@SLN(C,S,L)
The straight-line depreciation allowance
@SYD(C,S,L,N)
The "sum-of-years-digits" depreciation allowance
@TBILLEQ(S,M,D)
The bond-equivalent yield (BEY) for a Treasury Bill.
@TBILLPRICE(S,M,D)
The price per $100 face value for a Treasury bill.
@TBILLYIELD(S,M,D)
The yield on a Treasury bill.
@TERM(P,R,FV)
The number of payment periods for an investment
@VDB(C,S,L,S,E)
Fixed-declining depreciation allowance between two periods
@XIRR(G,V,D)
Internal rate of return for a series of cash flows with variable intervals
@XNPV(R,V,D)
Returns the net present value for a series of cash flows with variable intervals.
@YIELD(S,M,R,PR,RD,F[,B])
Yield of security paying periodic interest
@YIELDDISC(S,M,PR,RD[,B])
The annual yield for a discounted security
@YIELDMAT(S,M,I,R,PR[,B])
Annual yield of a security which pays interest at security

Date and Time Functions

Date and Time Functions return values corresponding to the specified date, month, year, hour, minute or second. You can also use date/time functions to enter the current system time and date in a cell. These functions open up many possibilities for managing accounts receivable and calculating test times.

XESS internally stores date and time information using the same conventions as other popular spreadsheet programs:

Dates
are represented as an integer equal to the number of days before or since December 30, 1899 (or January 1, 1904 for the 1904 date system).
Times
are represented as fractions of a day, starting at midnight. For example, 6:00 AM is stored as .25 (a quarter of a 24-hour day).
Using this convention, date and time values may be used together. For example, the date/time value 2.25 corresponds to 6:00:00 AM, January 1, 1900.
@DATE(Y,M,D)
The date value for year Y, month M, and day D
@DATEVALUE(S)
The corresponding date value for a given string S
@DAY(DT)
The day number in the date/time value DT
@DAYS360(S,E)
The number of days between two dates, based on a 30/360 day count system.
@EDATE(S,M)
The date/time value representing number of months (M) before or after start date (S).
@EOMONTH(S,M)
The date/time value representing the last day of the month M months after S, if M is positive, or M months before if M is negative
@HOUR(DT)
The hour value (0-23) of date/time value DT
@MINUTE(DT)
The minute value (0-59) of date/time value DT
@MONTH(DT)
The number of the month in date/time value DT
@NETWORKDAYS(S,E[,H])
The number of whole working days, starting at S and going to E, excluding weekends and holidays.
@NOW
The date/time value of the current system date and time
@SECOND(DT)
The seconds value (0-59) of the date/time value DT
@TIME
The time value for hour H, minute M, and second S
@TIMEVALUE(S)
The corresponding time value for a given string value S
@TODAY
The date value of the current system date
@WEEKDAY(D)
The integer representing the day of the week on which the day D falls. 1 is Sunday, 7 is Saturday.
@WORKDAY(S,D[,H])
The day that is D working days after S, if D is positive, or before S, if D is negative, excluding weekends and all holidays specified as dates in range H
@YEAR(DT)
The year value of date/time value DT
@YEARFRAC(S,E[,B])
The portion of the year represented by the number of days between start date (S) and end date (E).

Miscellaneous Functions

Miscellaneous Functions perform a variety of calculations, such as returning a reference to specific cells or ranges or returning the Nth argument from a list of arguments.
@@(S)
Reference to the cell or range S
@ALARM(X,S)
If X evaluates non-zero, string (S) is evaluated as an expression and displayed in the message line, and the terminal beeps. If X evaluates to zero, S is not evaluated and the return value is zero.
@ANNOTATE(Text,X,Y[,H[,V]])
Generates a dynamic graph annotation text, given the text (Text), coordinates (X,Y) and the alignment values (H,V)
@CELL(S,C)
The value of property S for cell C
@CELLPOINTER(S)
The value of property S for the current cell
@CELLREF(N1,N2)
A reference to the cell in column N1 and row N2
@CHOOSE(N,...)
The Nth argument from the list
@COL(C)
The column address of the cell referenced by C
@COLS(R)
The number of columns in the specified range R
@COORD(SH,C,R,F)
The string cell address equivalent to sheet SH, column C, row R
@DOLLAR(X,N)
Formats the number X using the Dollars format with N decimal places
@ENVIRON(S)
The value of the environmental variable in string S
@ERR
Returns an error indicator
@HLOOKUP(X,R,N)
The value of the cell N rows below the cell in range R that matches the value X
@INDEX(R,C,R[,S])
The element of the range (or array) R indexed by the column C and row R.
@INFO(S)
Returns information item S for current workbook and environment
@INIT(X1,X2)
The first argument on the first recalculation pass and the second argument on all subsequent recalculation passes when XESS is performing iterative calculations
@INTERP2D(R1,R2,N)
The interpolation value for a 2 dimensional vector
@INTERP3D(R,X,Y)
The interpolation value for a 3 dimensional vector.
@MATCH(V,R[,T])
The relative position in range R of value V based on positioning criteria T.
@MESSAGE(X,S)
The string S is displayed on the status line and the terminal beeps, if X evaluates non-zero
@N(R)
The numeric value of the top left cell in range R
@RANGENAME(R)
Returns the name of the first range (alphabetically) containing the cell R
@RANGEREF(N1,N2,N3,N4)
A reference to the range defined by coordinates N1 through N4
@ROMAN(X[,N])
Returns the Roman numeral for the value X and simplification N
@ROW(C)
The row address of the cell referenced by C
@ROWS(R)
The number of rows in the specified range R
@S(R)
The string value of the top left cell in range R
@SALARM(X,S)
Silent alarm. The same as @ALARM with no terminal beep.
@SHEET(R)
The number of the sheet for the top left cell in range R
@SHEETS(R)
The number of sheets in the range R
@TEXT(X,S)
Formats the number X using the format pattern string S
@VLOOKUP(X,C,N)
The value of the cell N columns to the right of the cell in range C that matches the value X
@XHLOOKUP(F,X,R,N)
In the workbook file F, the value of the cell N rows below the cell in range R that matches the value X
@XVALUE(F,R)
In the workbook file F, the value of cell R
@XVLOOKUP(F,X,C,N)
In the workbook file F, the value of the cell N columns to the right of the cell in range C that matches the value X

Functions - Alphabetical Listing


@@

Syntax: @@(S)

S = a string representing a cell, a range, or a named range

@@ returns a reference to the cell or range represented by S. Also known as an indirect reference.

Example:

@@("B17") = 17, where B17 = 17

@SUM(@@("B2..B7")) = 24, where B2..B7 = 12, 1, 0, 4, and 7


@ABS

Syntax: @ABS(X)

X = a numeric value or cell reference containing a numeric value

@ABS returns the absolute (positive) value of X.

Example:

@ABS(5) = 5

@ABS(-5) = 5

@ABS(C15) = 10, where C15 = -10

@SQRT(@ABS(D4)) = 10, where D4 = -100


@ACCRINT

Syntax: @ACCRINT(I,Ft,S,R,P,F[,B])

I = The issue date

Ft = The first interest date

S = The settlement date

R = The annual coupon rate

P = The par value of the security

F = The number of coupon payments per year (frequency):

1 annual

2 semi-annual

4 quarterly

B = (Optional) The day count basis to be used:

0 or omitted 30/360

1 actual/actual

2 actual/360

3 actual/365

Examples:

A security has the following terms: 4/1/93 settlement date, 6/1/93 maturity date, 10% semiannual coupon, $1000 par value, 30/360 basis:
@accrint(34060,34121,10%,1000,2,0) = 33.333

@ACCRINTM

Syntax: @ACCRINTM(I, S, R, P [,B])

I = The issue date, a date/time value.

S = The settlement date, a date/time value.

R = The annual coupon rate.

P = The par value of the security.

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@ACCRINTM returns the accrued interest for a security that pays interest at maturity.

Example:

@ACCRINTM(C6,C7,C8.C9,C10) = 39.3442, where C6 = 02/03/1992, C7 = 07/12/1992, C8 = 9%, C9 = 1000 and C10 = 1


@ACOS

Syntax: @ACOS(X)

X = a numeric value between -1 and 1.

@ACOS returns the arc cosine of angle X. The result is the angle (in radians) whose cosine is X and ranges from 0 to p. To convert the result from radians to degrees, use the @DEGREES function.

Examples:

@ACOS(1) = 0

@ACOS(R3) = 1.670963748, where R3 = -0.1

@DEGREES(@ACOS(0)) = 90

@ACOS(-20) = Error - @ACOS, domain is -1 <= x <= 1


@ACOSH

Syntax: @ACOSH(X)

X = a numeric value greater than or equal to 1.

@ACOSH returns the hyperbolic arc cosine of angle X. The result is the angle (in radians) whose hyperbolic cosine is X.

Examples:

@ACOSH(5) = 2.2924317

@ACOSH(F5) = 5.192926, where F5 = 90

@ACOSH(-1) = Error - @ACOSH, domain is x >= 1


@ACOT

Syntax: @ACOT(X)

X = a numeric value

@ACOT returns the arc cotangent of X.

Examples:

@ACOT(0) = 1.5707963

@ACOT(20) = 0.049958396


@ACOTH

Syntax: @ACOTH(X)

X = a numeric value

@ACOTH returns the hyperbolic arc cotangent of X.

Examples:

@ACOTH(40) = 0.02500521

@ACOTH(0) = Error - @ACOTH, domain is x > 1

@ACOTH returns the hyperbolic arc cotangent of X.

Examples:

@ACOTH(40) = 0.02500521

@ACOTH(0) = Error - @ACOTH, domain is x > 1


@ACSC

Syntax: @ACSC(X)

X = a numeric value

@ACSC returns the arc cosecant of X.

Examples:

@ACSC(1) = 1.5707963

@ACSC(0.5) = Error - @ACSC, domain is x >= 1


@ACSCH

Syntax: @ACSCH(X)

X = a numeric value

@ACSCH returns the hyperbolic arc cosecant of X.

Examples:

@ACSCH(1) = 0.88137359

@ACSCH(0) = Error: x must not be zero


@ALARM

Syntax: @ALARM(X,S)

X = an expression

S = a string ( evaluated as an expression if X is non-zero )

@ALARM evaluates expression X. If X evaluates to non-zero, it beeps and returns the result of evaluating string S as an expression. If X evaluates to zero, S is not evaluated and the return value is zero. @ALARM was important because, prior to Version 3, XESS always evaluated both the true and false clauses of @IF. This could cause side effects with remote functions.

Examples:

@ALARM(Pressure > 500, "@REMOTE_FN(Pressure)") If "Pressure" exceeds 500, then the terminal beeps and REMOTE_FN is called with the value of "Pressure".

@AND

Syntax: @AND(argumentlist)

argumentlist = any combination of numbers, cells, or ranges

@AND returns 1 if all arguments are 1; 0 if any argument is 0; otherwise -1 (unknown).

Examples:

A1=1, B1=1, C1=0, D1=0, E1=1 and A2=24

@AND(A1,B1) = 1

@AND(A1..E1) = 0

@AND(A1..A2) = -1


@ANNOTATE

Syntax: @ANNOTATE(Text,X,Y[,H[,V]])

Text = a string value of the annotation

X, Y = numeric values representing graph coordinates

H, V = numeric values representing alignment

@ANNOTATE allows you specify a coordinate at which a label (Text) will be displayed in the data area of a 2-dimensional graph, and also how that label will appear in relation to the coordinate. X and Y represent the coordinates of the label on the graph.

H (horizontal alignment)and V (vertical alignment) are optional values that represent the text spacing offset of the label. If V is specified, H must be specified; however, you may specify only H. This is a convenience function for creating strings of the form accepted by the XESS graph annotation mechanism. For more information on annotation see Graphs.

Examples:

@ANNOTATE("Average",5/2,12,1,0.5) = "(2.5,12,1.0,5)Average"

@ANNOTATE("Data Point",5,10)= "(5,10)Data Point"

@ANNOTATE("x^2",6,36,-1/4) = "(6,36,-0.25)x2"


@ASEC

Syntax: @ASEC(X)

X = a numeric value

@ASEC returns the arc secant of X.

Examples:

@ASEC(1) = 0

@ASEC(1e+100) = 1.5707963

@ASEC(0) = Error: @ASEC, domain is abs(x) >= 1


@ASECH

Syntax: @ASECH(X)

X = a numeric value

@ASECH returns the hyperbolic arc secant of X.

Examples:

@ASECH(0.1) = 2.9932228

@ASECH(1000) = Error: @ASECH, domain is 0 < x < 1


@ASIN

Syntax: @ASIN(X)

X = a numeric value between -1 and 1.

@ASIN returns the arc sine of angle X. The result is the angle (in radians) whose sine is X and ranges from p/2 to -p/2. To convert the result from radians to degrees, use the @DEGREES function.

Examples:

@ASIN(A2) = 1.570796327, where A2 = 1

@DEGREES(@ASIN(V7)) = -11.536959, where V7 = -0.2

@ASIN(30) = Error - @ASIN, domain is -1 <= x <= 1


@ASINH

Syntax: @ASINH(X)

X = a numeric value

@ASINH returns the hyperbolic arc sine of angle X. The result is the angle (in radians) whose hyperbolic sine is X.

Examples:

@ASINH(1) = 0.88137359

@ASINH(L7) = -0.60282073, where L7 = -0.64


@ATAN

Syntax: @ATAN(X)

X = a numeric value expressed in radians.

@ATAN returns the 2-quadrant arc tangent of angle X. The result is the angle (in radians) whose tangent is X and ranges from -p/2 to p/2. To convert radians to degrees, use the @DEGREES function.

Examples:

@ATAN(.5) = 0.463647609

@ATAN(J44) = -0.785398163, where J44 = -1

@DEGREES(@ATAN(U6)) = 87.70939, where U6 = 25


@ATAN2

Syntax: @ATAN2(X,Y)

X = a numeric value

Y = a numeric value

@ATAN2 returns the 4-quadrant arc tangent of Y/X. At least one of the arguments must be non-zero. The result is the angle (in radians) and ranges between -p and p. To convert the result from radians to degrees, use the @DEGREES function.

Examples:

@ATAN2(1,1) = 0.78539816

@ATAN2(A1,A2) = -0.78539816, where A1 = 10 and A2 = -10

@ATAN2(D3,S5) = 1.5707963, where D3 = 0 and S5 = 1

@ATAN2(0,0) = Error - @ATAN2, one argument must be non-zero

@DEGREES(@ATAN2(1,3)) = 71.565


@ATANH

Syntax: @ATANH(X)

X = a numeric value between -1 and 1

@ATANH returns the hyperbolic arc tangent of angle X. The result is the angle (in radians) whose hyperbolic tangent is X.

Examples:

@ATANH(0) = 0

@ATANH(J20) = 1.127029, where J20 = 0.81

@ATANH(1) = Error - @ATANH, domain is -1 < x < 1


@AVERAGE

Syntax: @AVVERAGE(argumentlist)

argumentlist = any combination of numbers, cells, or ranges

@AVERAGE returns the average (arithmetic mean) of its arguments. Empty cells and strings are ignored.

Examples:

@AVERAGE(A1,B9,J32,F16) = 21.125, where A1 = 12, B9 = 34.5, J32 = 22, F16 = 16

@AVERAGE(A1,A12..H13,111+32) = 135.67, where we don't really care what is at those variables, but which shows that you can use numbers, ranges, and expressions all together as arguments for @AVG.


@AVG

Syntax: @AVG(argumentlist)

argumentlist = any combination of numbers, cells, or ranges

@AVG returns the average (arithmetic mean) of its arguments. Empty cells and strings are ignored. Another name for @AVERAGE.


@BESSELI

Syntax: @BESSELI(x,n)

X = a numeric value

N = an integer value

Computes the modified Bessel function of integer order In(x).


@BESSELJ

Syntax: @BESSELJ(x,n)

X = a numeric value

N = an integer value

Computes the Bessel function of integer order Jn(x)


@BESSELK

Syntax: @BESSELK(x,n)

X = a numeric value

N = an integer value

Computes the modified Bessel function of integer order Kn(x).


@BESSELY

Syntax: @BESSELY(x,n)

X = a numeric value

N = an integer value

Computes the Bessel function of integer order Yn(x), also known as the Neumann function.


@BETA

Syntax: @BETA (z, w)

Returns the Beta function. z and w must be > 0.


@BETAI

Syntax: @BETAI (a, b, x)

Returns the Incomplete Beta function. a and b must be > 0. x must be 0 <= x <= 1.


@CAVG

Syntax: @CAVG(argumentlist,C)

argumentlist = any combination of cells or ranges

C = a constraint expression

@CAVG returns the average (arithmetic mean) of those arguments which satisfy the constraint C. Empty cells and strings are ignored.

Examples:

@CAVG(A1..A5,#<6) = 2.333333, where A1..A5 are 2, 2, 3, 6, and 7

@CAVG(E1..E3,#>10) = Error - @CAVG, sample size less than 1, where E1 = 1, E2 = 5, and E3 = 0

@CAVG(B7..E10,#<#{-1}) = 15, where the average of the numbers in range B7..E10 which are less than the value of the cell to their left is 15.


@CCOUNT

Syntax: @CCOUNT(argumentlist,C)

argumentlist = any combination of cells or ranges

C = a constraint expression

@CCOUNT returns a count of its non-empty arguments which satisfy the constraint C. Cells containing strings are counted.

Examples:

@CCOUNT(T2..T6, #==W2) = 1, where T2..T6 are 4, 7, 2, 8, 0 and W2 = 7

@CCOUNT(E1..E3,#>=0) = 3, where E1 = 1, E2 = 5, and E3 = 0

@CCOUNT(C4..C100,#>#{0,-1}) = 68, counts those cells in range C4..C100 whose value is greater than the contents of the cell immediately above


@CEIL

Syntax: @CEIL(X)

X = a numeric value

@CEIL returns the smallest integer that is greater than or equal to X.

Examples:

@CEIL(5.5) = 6

@CEIL(E3) = -9, where E3 = -9.99

@CEIL(C17) = 1, where C17 = 1


@CELL

Syntax: @CELL (property, cell)

Property = a string value

Cell = a cell reference

Return many useful things about a cell. Case is ignored in property names. The available property names are:

"Address"
The coordinates of the cell, as a string in A1 notation. For example, @CELL("address",C4) is equal to the string "$C$4". The sheet name is NOT included.
"BackGroundColor"
Index of background color
"Bold"
1 if Bold attribute; 0 otherwise
"BottomBorder"
Index of border style
"BottomBorderColor"
Index of border color
"Col"
The number of the column containing the cell. Equivalent to the @COL(cell) function.
"Contents"
Contents (value) of the cell
"Coord"
The fully-qualified coordinates of the cell, as a string. For example, @CELL("coord",C4) on Sheet1 would be equal to the string "$Sheet1!$C$4".
"FontFace"
Index number of font family
"FontSize"
In points. 0 indicates default value
"FontStyle"
Font Style
0 Standard
1 Italic
2 Bold
3 Bold Italic
"Halign"
Horizontal Alignment
0 Default
1 Left
2 Right
3 Center
4 Automatic
"Italic"
1 if Italic; 0 otherwise
"LeftBorder"
Index of border style
"LeftBorderColor"
Index of border color
"Orientation"
The orientation property
0 Default
1 Horizontal
2 Vertical
3 Up
4 Down
"Pattern"
Background pattern index
"PatternColor"
Index of pattern foreground color
"Protect"
Cell protection attribute
0 Default
1 Off
2 On
"RightBorder"
Index of border style
"RightBorderColor"
Index of border color
"Rotation"
The amount of rotation for letters, in degrees (NOT the same as the orientation). So the cells using the Vertical orientation have the same rotation as cells using the Horizontal rotation, but cells using Up or Down orientation have either +90 or -90 rotation.
"Row"
The number of the row containing the cell. Equivalent to the @ROW(cell) function.
"Sheet"
The number of the sheet containing the cell. Equivalent to the @SHEET(cell) function.
"SheetName"
The name of the sheet containing the cell.
"StrikeThrough"
1 if strikethrough attribute; 0 otherwise.
"TextColor"
Index of color used for cell text.
"TopBorder"
Index of border style.
"TopBorderColor"
Index of border type
"Type"
b empty ("blank")
l label (string constant)
v anything else
"Underline"
Underline attribute
0 Default
1 None
2 Single underline
3 Double underline
"Valign"
Vertical alignment
0 Default
1 Top
2 Bottom
3 Center
"Wrap"
Word-wrap attribute
0 Default
1 Off
2 On

@CELLPOINTER

Syntax: @CELLPOINTER (property)

Property = a string value

Returns cell attribute information about the current cell (containing a formula using this function). The values for property are the same as for the @CELL function.


@CELLREF

Syntax: @CELLREF(N1,N2)

N1 = a numeric value

N2 = a numeric value

@CELLREF returns a reference to the cell whose column index is N1 and whose row index is N2. Column indices start with 0, so the column index for column A is 0, B is 1, etc. Row indices are the same as the row number, and therefore start with 1.

Examples:

@CELLREF(3,1) = -80, where D1 = -80

@CELLREF(27,34) = 2400, where AA34 = 2400

@CELLREF(4,8) = 100.00, where E8 = 100.00


@CHAR

Syntax: @CHAR(n)

n = an ASCII code from 1 to 255

@CHAR returns the character represented by the integer code n.

Examples:

@CHAR(55) = "7"

@CHAR(C2) = "C", where C2 = 67

@CHAR(F5) = "�", where F5 = 163


@CHOOSE

Syntax: @CHOOSE(N, argumentlist)

N = a numeric value

argumentlist = any combination of numbers, strings, or cell addresses separated by commas.

@CHOOSE returns the Nth argument from the argument list, starting with an index of 0. N should be less than the number of items in argumentlist - 1.

Examples:

@CHOOSE(2,D1,C22,F5,K1) = 54, where F5= 54

@CHOOSE(1,A9,D23,G12) = "Peaches", where D23 = "Peaches"

@CHOOSE(3,"nuts","rings","bolts","fittings") = "fittings"

@SUM(@CHOOSE(A1>B1,B1..B10,A1..A10)) sums either column A or column B.


@CLEAN

Syntax: @CLEAN(S)

S = a string value

@CLEAN returns the string formed by removing all non-printing characters from the string S.

Examples:

@CLEAN(A1) = "test", where A1=@STRCAT(A2,A3), A2="test" and A3=@CHAR(10)


@CMAX

Syntax: @CMAX(argumentlist, C)

argumentlist = any combination of cells or ranges

C = a constraint expression

@CMAX returns the maximum value among its arguments which satisfy the constraint C. Empty cells and cells containing strings are not counted.

Examples:

@CMAX(A1..A6,#<@SUM(A11,A12)) = 56, where A1..A6 are 4, 56, 33, 100, 0, -1; A11=50 and A12=50

@CMAX(S3..S7,#<0) =-1, where S3..S7 = -1, -4, -99, -20, and -1.5

@CMAX(F1..F25,#<D1||#>D2) = 1.99, where the maximum of the values in range F1..F25; are less than D1 or greater than D2.


@CMIN

Syntax: @CMIN(argumentlist,C)

argumentlist = any combination of cells or ranges

C = a constraint expression

@CMIN returns the minimum value among its arguments which satisfy the constraint C. Empty cells and cells containing strings are not counted.

Examples:

@CMIN(A1..A6,#<@SUM(A11,A12)) = -1, where A1..A6 are 4, 56, 33, 100, 0, -1 and A11=50 and A12=50

@CMIN(S3..S7,#<0) = -99, where S3..S7 = -1, -4, -99, -20, and -1.5 @=code(CMIN(F1..F25,#<D1||#>D2) = .99, where the minimum of the values in range F1..F25; are less than D1 or greater than D2.


@CODE

Syntax: @CODE(S)

S = a string value

@CODE returns the ASCII code for the first character in string S.

Examples:

@CODE("test") = 116

@CODE(H100) = 107, where H100 = "k"

@CODE(M10) = 56, where M10 = "89"


@COL

Syntax: @COL(C)

C = a cell or range. If C is omitted the current column will be returned.

@COL returns the column index of the cell referenced by C, or the left-most column if C is a range.

Examples:

@COL(A1) = 0

@COL(F10..G19) = 5

@COL = 25, where @COL is in cell Z20.


@COLS

Syntax: @COLS(R)

R = a range

@COLS returns the number of columns in the specified range.

Examples:

@COLS(A3..J17) = 10


@COORD

Syntax: @COORD (sheet, column, row [, flags] )

Sheet = sheet number (1 origin)

Column = column number (0 origin for column A)

Row = row number (1 origin)

Flags = an integer

Returns a string giving a cell specification. Sheet and row are 1-origin and column is 0-origin, to be consistent with other functions such as @CELLREF. The flags argument specifies which elements in the address string are absolute.

For example, the function reference =@COORD(1, 0, 1, flags) would return the following strings for the possible values of flags:


1 - $Sheet1!$A$1
2 - $Sheet1!A$1
3 - $Sheet1!$A1
4 - $Sheet1!A1
5 - Sheet1!$A$1
6 - Sheet1!A$1
7 - Sheet1!$A1
8 - Sheet1!A1

@CORR

Syntax: @CORR(R1,R2)

R1 = a range

R2 = a range

@CORR returns Pearson's product-moment correlation coefficient for the paired data in ranges R1 and R2. R1 and R2 must have the same dimensions. The result is between -1 and 1.

@CORR can be used to determine whether pairs of data are statistically related. The closer the correlation is to zero, the less likely that they are related.

Examples:

@CORR(A1..A4,B1..B4) = 0.44213546, where A1..A4 = .5, .98, .22, .1, and B1..B4 = .87, .6, .21, .49.

@CORR(H5..H9,K5..K9) = 0.92384914, where H5..H9 = 14, 35, 37, 0, 33, and K5..K9 = 67, 77, 94, 34, 99.

@CORR(F1..F9,G1..G15) = Error - @CORR, ranges must be same dimensions


@COS

Syntax: @COS(X)

X = a numeric value expressed in radians.

@COS returns the cosine of angle X. The result is between -1 and 1. To convert the argument from degrees to radians, use the @RADIANS function.

Examples:

@COS(-45) = 0.52532199

@COS(K24) = 0.5403023, where K24 = 1

@COS(@RADIANS(30)) = 0.866025


@COSH

Syntax: @COSH(X)

X = a numeric value

@COSH returns the hyperbolic cosine of angle X. The result is greater than or equal to 1.

Examples:

@COSH(1) = 1.543080635

@COSH(FF1) = 3.762195691, where FF2 = -2

@COSH(0) = 1


@COT

Syntax: @COT(X)

X = a numeric value

@COT returns the cotangent of X.


@COTH

Syntax: @COTH(X)

X = a numeric value

@COTH returns the hyperbolic cotangent of X.


@COUNT

Syntax: @COUNT(argumentlist)

argumentlist = any combination of numbers, cells, or ranges

@COUNT returns a count of its non-empty arguments. Cells that contain strings are counted.

Examples:

@COUNT("Tom","Bob","Sue","Mary","Zack","Ann") = 6

@COUNT(D4..D8) = 3, where D4 is empty, D5 = 1, D6 is empty, D7 = 0, and D8 = 5

@COUNT(E5..J10) = 30, E5..J10 contains 36 cells, therefore 6 cells are empty


@COUPDAYBS

Syntax: @COUPDAYSBS(S, M, F, [B])

S = The settlement date

M = The maturity date

F = The number of coupon payments per year (frequency):

	1		annual
	2		semi-annual
	4		quarterly

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@COUPDAYSBS returns the number of days between the beginning of the coupon period and the settlement date.

Examples:

@COUPDAYBS(@DATE(1993,2,15),@DATE(1994,12,20),2,0) = 55

@COUPDAYBS(@DATE(1993,2,15),@DATE(1994,12,20),2,1) = 57


@COUPDAYS

Syntax: @COUPDAYS(S, M, F, [B])

S = The settlement date

M = The maturity date

F = The number of coupon payments per year (frequency):

	1		annual
	2		semi-annual
	4		quarterly

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@COUPDAYS returns the number of days in the coupon period that the settlement date is in.

Examples:

@COUPDAYS(@DATE(1993,2,15),@DATE(1994,12,20),2,0) = 180

@COUPDAYS(@DATE(1993,2,15),@DATE(1994,12,20),2,1) = 182


@COUPDAYSNC

Syntax: @COUPDAYSNC(S, M, F, [B])

S = The settlement date

M = The maturity date

F = The number of coupon payments per year (frequency):

	1		annual
	2		semi-annual
	4		quarterly

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@COUPDAYSNC returns the number of days between the settlement date and the next coupon date.

Example:

@COUPDAYSNC(@DATE(1993,2,15),@DATE(1994,12,20),2,0) = 125


@COUPNCD

Syntax: @COUPNCD(S, M, F, [B])

S = The settlement date

M = The maturity date

F = The number of coupon payments per year (frequency):

	1		annual
	2		semi-annual
	4		quarterly

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@COUPNCD returns the next coupon date after the settlement date.

Example:

@COUPNCD(@DATE(1993,2,15),@DATE(1994,12,20),2,0) = 34140 or 20-Jun-1993


@COUPNUM

Syntax: @COUPNUM(S, M, F, [B])

S = The settlement date

M = The maturity date

F = The number of coupon payments per year (frequency):

	1		annual
	2		semi-annual
	4		quarterly

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@COUPNUM returns the number of coupon payments between the settlement date and the maturity date.

Example:

@COUPNUM(@DATE(1993,2,15),@DATE(1994,12,20),2,0) = 4


@COUPPCD

Syntax: @COUPPCD(S, M, F, [B])

S = The settlement date

M = The maturity date

F = The number of coupon payments per year (frequency):

	1		annual
	2		semi-annual
	4		quarterly

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@COUPPCD returns the previous (most recent) coupon date before the settlement date.

Example:

@COUPPCD(@DATE(1993,2,15),@DATE(1994,12,20),2,0) = 33958 or 12/20/1992


@CSC

Syntax: @CSC(X)

X = a non-zero numeric value

@CSC returns the cosecant of X.

Examples:

@CSC(0.01) = 100.00167

@CSC(3) = 7.0861674

@CSC(4) = -1.3213487


@CSCH

Syntax: @CSCH(X)

X = a numeric value

@CSCH returns the hyperbolic cosecant of X.

Examples:

@CSC(1) = 0.85091813


@CSTD

Syntax: @CSTD(argumentlist, C)

argumentlist = any combination of cells or ranges

C = a constraint expression

@CSTD returns the standard deviation (N weighting) of its arguments that satisfy the constraint C. Empty cells and cells containing strings are not counted.

Examples:

@CSTD(A1..A3,#<10) = 2.6246693, where A1..A3 are 1, 2, and 7

@CSTD(Y1..Y5,#>25) = 6.6833126, where Y1..Y5 = 22,24,29,34,45


@CSTDS

Syntax: @CSTDS(argumentlist, C)

argumentlist = any combination of cells or ranges

C = a constraint expression

@CSTDS returns the sample standard deviation (N-1 weighting) of its arguments which satisfy the constraint C. Empty cells and cells containing strings are not counted.

Examples:

@CSTDS(A1..A3,#<10) = 3.2145503, where A1..A3 are 1, 2, and 7

@CSTDS(Y1..Y5,#>25) = 8.1853528, where Y1..Y5 = 22, 24, 29, 34, and 45


@CSUM

Syntax: @CSUM(argumentlist, C)

argumentlist = any combination of cells or ranges

C = a constraint expression

@CSUM returns the sum of its arguments which satisfy the constraint C. Empty cells and text cells are not counted.

Examples:

@CSUM(L1..L3,#<5) = 1.32, where L1 = 1.32, L2 = 5.45, L3 = 8.32

@CSUM(C5..C10,#>=D1/D10) = 150, where C5..C10 are 10, 20, 30, 40, 50, and D1 = 100 and D10 = 10


@CTERM

Syntax: @CTERM(R, FV, PV)

R = interest rate

FV = future value of the investment

PV = present value of the investment

@CTERM calculates the number of compounding periods required for an investment of PV to reach a value of FV at the given interest rate R.

Examples:

@CTERM(0.085,1500,1000) = 4.97 (years, if the annual interest rate is 8.5%)

@CTERM(B5,D5,C5) = 11, where B5 = 10.5%, D5 = $300,000, and C5 = $100,000

@CTERM(.09,1900,1100) = 6.3


@CUMIPMT

Syntax: @CUMIPMT(R, N, P, S, E, T)

R = Rate, a numeric expression

N = Number of payments, an integer > 0

P = Present value

S = Starting period in calculation

E = Ending period in calculation

T = (Optional) timing of the payment

	0   payment is made at the end of the period
	1   payment is made at the beginning of the period

@CUMIPMT returns the cumulative interest paid between S (the start) and E (the end) on a loan. Make sure that you are consistent about the units used for specifying R and N. For Example, for a 4-year loan with 10% annual interest rate, use 10%12 for R and 4*12 for N)

Example:

@CUMIPMT(9.5%/12,30*12,100000,1,12, 0) = 9473.61


@CUMPRINC

Syntax: @CUMPRINC(R, N, P, S, E, T)

R = Rate, a numeric expression

N = Number of payments, an integer > 0

P = Present value

S = Start of loan

E = End of loan

T = (Optional) timing of the payment

	0   payment is made at the end of the period
	1   payment is made at the beginning of the period

@CUMPRINC returns the cumulative principal paid between S (the start) and E (the end) on a loan. Make sure that you are consistent about the units used for specifying R and N. For Example, for a 4-year loan with 10% annual interest rate, use 10%12 for R and 4*12 for N)

Example:

@CUMPRINC(9.5%/12,30*12,100000,1,12, 0) = 616.64


@CVAR

Syntax: @CVAR(argumentlist, C)

argumentlist = any combination of cells or ranges

C = a constraint expression

@CVAR returns the population variance (N weighting) of its arguments which satisfy the constraint C. Blank cells and cells containing strings are not included.

Examples:

@CVAR(Y1..Y5,#<25) = 1, where Y1..Y5 = 22, 24, 29, 34, and 45

@CVAR(A1..A3,#<C2*E7) = 6.8888889, where A1..A3 are 1, 2, 7, and C2 = 5 and E7 = 2


@CVARS

Syntax: @CVARS(argumentlist, C)

argumentlist = any combination of cells or ranges

C = a constraint expression

@CVARS returns the sample variance (N-1 weighting) of its arguments which satisfy the constraint C. Empty cells and cells containing strings are not included.

Examples:

@CVARS(Y1..Y5,#<25) = 2, where Y1..Y5 = 22, 24, 29, 34, and 45

@CVARS(A1..A3,#<C2*E7) = 10.333333, where A1..A3 are 1, 2, 7, and C2 = 5 and E7 = 2


@DATE

Syntax: @DATE(Y, M, D)

Y = year

M = month

D = day

@DATE returns the date value corresponding to year Y, month M, and date D. If Y is between 0 and 99, it is assumed to be in the current century. Otherwise, it represents the year from 100 to 3999.

Examples:

@DATE(66,4,6) = 24203, April 6, 1966

@DATE(366) = Error! wrong number or arguments


@DATEVALUE

Syntax: @DATEVALUE(S)

S = string value of a date

@DATEVALUE returns the corresponding date value for a given string S. It interprets the value of S as if it had been entered into a cell.

The year may be given as 2 or 4 digits. A two year digit assumes the current century.

In the above formats, the month (MMM) is case insensitive and may be either the standard 3 letter abbreviation or the full name of the month.

Examples:

@DATEVALUE("3/24/1954") = 19807

@DATEVALUE("3/24/54") = 19807

@DATEVALUE("4-July-1994") = 34519

@DATEVALUE("4-July") = 34519, where the year is omitted, and assuming the year is 1994.

@DATEVALUE("September-94") = 34578

@DATEVALUE("Sep-1994") = 34578

@DATEVALUE("SEP") = 34578, where the year is omitted, and assuming the year is 1994.

@DATEVALUE("06.04.66") = 24203

@DATEVALUE("06.04.1966") = 24203

CAUTION: When the year is defaulted, the value returned by @DATEVALUE will vary depending on the year.


@DAY

Syntax: @DAY(DT)

DT = a date/time value

@DAY returns the day of the month component of the date/time value DT.

Examples:

@DAY(24203) = 6 (24203 represents April 6, 1966)

@DAY(@TODAY) = 25, where TODAY = January 25, 1994

@DAY(366) = 31 (366 represents December 31, 1900)


@DAYS360

Syntax: @DAYS360(S, E)

S = Start date

E = End date

@DAYS360 returns the number of days between two dates, based on a 30/360 Day Count Basis (30-day-per-month, 360-day year.) Please refer to "Financial Functions" in Chapter 7 for more detail on 30//360 day count basis.

Examples:

@DAYS360(@DATE(1992,5,1),@DATE(1992,6,1)) = 30

@DAYS360(@DATE(1993,2,28),@DATE(1993,3,1)) =1

@DAYS360(@DATE(1992,2,28),@DATE(19923,1)) = 3 (1992 is a leap year.)


@DB

Syntax: @DB(C, S, L, N, M)

C = Initial cost of asset

S = Salvage value of asset

L = Number of periods over which the asset is depreciating (life)

N = Number of periods over which to calculate the depreciation

M = (Optional) Number of months in the first year. Assumed to be 12 if omitted.

@DB returns the fixed-declining real depreciation of an asset for a specified period.

Example:

@DB(40000,100,6,3,2) = 8323.1198


@DDB

Syntax: @DDB(C, S, L, P)

C = cost

S = salvage value

L = allowable life

P = the period for which the double declining depreciation allowance is being calculated

@DDB returns the double-declining depreciation allowance given cost C, salvage value S, allowable life L, and N number of depreciation periods.

The double declining balance depreciation allowance for the Pth depreciation period (DDBp) is calculated by the following iteration formula, where BVi is the following iteration formula, where BVi is the book value for the ith depreciation period. BV0 = C for i=1 to P do DDBi = max(2(BVi / L), 0) BVi = max(BVi-1�DDBi, S)

Examples:

@DDB(200,120,25,10) = 9.6

@DDB(F9,F5,10,6) = 524.29, where F5 = $1800.00 and F9 = $8000.00

@DDB(200,220,10,7) = error!, must have "cost" >= "salvage" >= 0


@DEGREES

Syntax: @DEGREES(X)

X = a numeric value

@DEGREES returns 180/p * X.

Examples:

@DEGREES(0.5) = 28.64789

@DEGREES(@PI) = 90


@DELTA

Syntax: @DELTA (number1[,number2])

Returns a 1 if number1 == number2, or 0 if number1 != number2. If number2 is not specified, it is assumed to be 0.


@DET

Syntax: @DET(M)

M = a range, which must contain an equal number of rows and columns.

@DET returns the determinant of the matrix specified by the range M, which must be square.

Examples:

Matrix A1..C3
            A     B     C
       1     1     2     6
       2     3     4     11
       3     4     7     2

@DET(A1..C3) = 37 @DET(A1..B3) = Error - @DET, matrix must be square

@DISC

Syntax: @DISC(S, M, P, R, B)

S = Settlement date

M = Maturity date

P = Price per $100

R = Redemption value per $100

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@DISC returns the discount rate of a security.

Examples:

@DISC(@DATE(1993,1,10), @DATE(1993,7,20),97.375,100,3) = 0.05016

@DISC(@DATE(1993,1,10), @DATE(1993,7,20),97.375,100) = 0.04974


@DFT

Syntax: @DFT(R)

R = a range representing a vector

@DFT generates the Discrete Fourier Transform of the given range R. R must represent a real vector (either its row or column dimension must be 1), or a complex vector (either its row or column dimension must be 2). The result is a complex vector.

Example:

Vector C1..C4
                 C

        1       1.2
        2       3.4
        3      54.3
        4      0.34

@DFT(C1..C4) =
                59.2       0
               -53.1    3.06
                51.8       0 
               -53.1   -3.06


@DOLLARDE

Syntax: @DOLLARDE(D, F)

D = Dollars (in fractional form)

F = Fraction (denominator of fraction)

@DOLLARDE returns the amount in Dollar Decimal form of an amount expressed in fractional form.

Examples:

@DOLLARDE(1.02,8) = 1.025

@DOLLARDE(1.2,8) = 1.25

@DOLLARDE(10.16,32) = 10.5


@DOLLARFR

Syntax: @DOLLARFR(D, F)

D = Dollars (in decimal form)

F = Fraction (denominator of fraction)

@DOLLARFR returns the amount in Dollar Fractional form of an amount expressed in decimal form.

Examples:

@DOLLARFR(1.025,8) = 1.02

@DOLLARFR(1.25,8) = 1.2

@DOLLARFR(10.5,32) = 10.16


@DOT

Syntax: @DOT(R1, R2)

R1= a vector

R2 = a vector

@DOT returns the dot product of two vectors. R1 must have the same number of rows and columns as R2, or R1 and R2 can be one-dimensional vectors of the same length.

Examples:

Matrix 1, A1..B2

               A     B
         1      1    3
         2      2    4

Matrix 2, C1..D2

               C     D
         1      9     5
         2      2     4

@DOT(A1..B2,C1..D2) =44 @DOT(A1..B1,C1..C2) = 15 @DOT(A1..B2,D1..D2) = Error - @DOT, incompatible range dimensions

@DURATION

Syntax: @DURATION(S, M, C, Y, F [,B])

S = Settlement date

M = Maturity date

C = Annual coupon rate

Y = Annual yield

F = Number of payments per year (frequency):

	1		annual
	2		semi-annual
	4		quarterly

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@DURATION returns the Macauley duration for an assumed par value of $100.

Example:

@DURATION(@DATE(1990,1,1),@DATE(1995,1,1),10%,8%,2,0) = 4.0954


@EDATE

Syntax: @EDATE(S, M)

S = Start date

M = Months

@EDATE returns a date/time value representing the date M months after S if M is positive, and M months previous to S if M is negative. The date returned will be on the same day of the month as S.

Examples:

@EDATE(@DATEVALUE("2/29/1992"),3) = 33753 or 05/29/1992

@EDATE(@DATEVALUE("2/29/1992"),12) = 34028 or 2/28/1993

@EDATE(@DATEVALUE("3/30/1993"),-6) = 33877 or 09/30/1992


@EFFECT

Syntax: @EFFECT(R, P)

R = Nominal rate

P = Number of compounding periods per year

@EFFECT returns the effective annual interest rate.

Example:

@EFFECT(6.75%,5) = 0.06935


@EIGEN

Syntax: @EIGEN(M)

M = a matrix

@EIGEN generates the eigenvalues of the matrix M, which must be square and symmetric.

Examples:

Matrix B9..C10

                   B     C
             9      0     1
            10      1     2

@EIGEN(B9..C10) =
                    -0.414
                    2.4142

Matrix  A1..B4
                   A     B
             1    .99     0
             2      3   6.2
             3    4.1   1.1
             4    3.3   6.3

@EIGEN(A1..B4) =  Error - @EIGEN, matrix must be square


@ENVIRON

Syntax @NVIRON(S)

S = a string

Returns the value of the environmental variable whose name is in the string S.


@EOMONTH

Syntax @EOMONTH(S,M)

S = Start date, a date/time value

M = Months, an integer

Returns a date/time value representing the date M months after S, if M is positive, and M months before S, if M is negative. The date returned will be on the last day of the month.

Examples:

@EOMONTH(@DATEVALUE("7/7/1993"),-24)= 33450 or 7/31/1991

@EOMONTH(@DATEVALUE("4/15/1994"),2)= 34515 or 6/30/1994


@ERF

Syntax @ERF(L[,U])

L = Lower bound for integrating ERF, L>=0

U = (Optional) Upper bound for integrating ERF

@ERF returns the error function integrated between L and U. If U is omitted, @ERF integrates between 0 and L:202

Examples:

@ERF(1) = 0.8427

@ERF(0.35) = 0.3794

@ERF(0.35,0.89) = 0.4125


@ERFC

Syntax @ERFC(L)

L = Lower bound for integrating ERF, L>=0

@ERFC returns the complementary error function integrated between L and infinity.

Example:

@ERFC(1) = 0.1573

@ERFC(0.35) = 0.6206


@ERR

Syntax: @ERR

Returns an error indicator for this cell.


@EVEN

Syntax: @EVEN (number)

Returns the even number with the next larger absolute value. EVEN(1) = 2, EVEN(-1) = -2.


@EXACT

Syntax: @EXACT(S1, S2)

S1 = a string value

S2 = a string value

@EXACT returns 1 if string S1 exactly matches string S2; returns 0 otherwise.

Examples:

@EXACT("computer","computer") = 1

@EXACT("Abc","abc") = 0


@EXP

Syntax: @EXP(X)

X = a numeric value

@EXP returns e raised to the power specified by the argument, where e is the base of the natural log 2.71828183. @EXP is the inverse of the natural log function @LN.

Examples:

@EXP(1) = 2.71828183

@EXP(D30) = 1, where D30 = 0

@LN(@EXP(X4)) = 5.1, where X4 = 5.1

@EXP(710) = Error - @EXP, floating exception


@F

Syntax: @F(M, N, X)

M,N = degrees of freedom

X = bound

@F returns the integral of Snedecor's F-distribution with M and N degrees of freedom from minus infinity to X.

Examples:

@F(14,35,99) = 1

@F(D3,W2,Y8) = Error - @F, degrees of freedom must be > 0, where D3 = .5, W2 = 0, and Y8 = .99

@F(B1,B2,B3) = 0.77459667, where B1 = 1, B2 = 2, and B3 = 3


@FACT

Syntax: @FACT(N)

N = a numeric value

@FACT returns N! of N. The formula is computed as:


                 N! = N * (N-1)!
                 0! = 1

Examples:

@FACT(4) = 24, because 4! = 4 * 3 * 2 * 1

@FACT(C13) = 3628800, where C13 = 10


@FALSE

Syntax: @FALSE

@FALSE returns 0.

Examples:

@FALSE = 0

@IF(B17 == 0,@TRUE,@FALSE) = 0, where B17 is not equal to 0


@FFT

Syntax: @FFT(R)

R = a range

@FFT generates the Discrete Fourier Transform of the range R using a Fast Fourier Transform algorithm. The length of the range must be a power of 2. @FFT will produce the same results a @DFT, but it is much faster (N*log(N)) time, as opposed to N2 time).


@FILEEXISTS

Syntax: @FILEEXISTS(S)

S = a string value

@FILEEXISTS returns the value 1 if file S can be opened for reading; otherwise 0.

Examples:

@FILEEXISTS("connections.c") = 1

@FILEEXISTS("Q1EXPENSES96.XS5") = 1

@FILEEXISTS("Q1EXPENSES90.WKS") = 0


@FIND

Syntax: @FIND(S1,S2,N)

S1 = a string value

S2 = a string value

N = a numeric value

@FIND returns the index of the first occurrence of string S1 in string S2, starting the search at position N in string S2. Note that the string index always starts with 0.

Examples:

@FIND("bc","abcdefg",0) = 1

@FIND(V1,V2,5) = 9, where V1 = "Functions", and V2 = "Built-in Functions"

@FIND(V1,V2,5) = Error - @FIND, substring not found, where V1 = "Built-in" and V2 = "Functions"


@FLOOR

Syntax: @FLOOR(X)

X = a numeric value

@FLOOR returns the largest integer less than or equal to X.

Examples:

@FLOOR(5.5) = 5

@FLOOR(E3) = -10, where E3 = -9.99

@FLOOR(C17) = 3, where C17 = 3.45


@FORECAST

Syntax: @FORECAST(X', X, Y)

X'= New x value

X = Old x value

Y = Old y value

@FORECAST returns Y', the predicted value for y for X', given original x and y values X and Y.

Example:

                A           B
        1       20           6
        2       28           7
        3       31           9
        4       38          15
        5       40          21

@FORECAST(30, A1..A5, B1..B5) = 10.60725


@FORMAT

Syntax: @FORMAT(F, N, X)

F = the XESS format code

N = the precision level, from 0 to 15

X = a numeric value

@FORMAT returns the string formed by formatting the numeric value X using the XESS format code F and the precision specified by N.

Examples:

@FORMAT("dollars",2,660406) = "$660,406.00"

@FORMAT("hex",0,660406) = "OxA13B6"

@FORMAT("general",2,660406) = "6.6e+05"


@FRAC

Syntax: @FRAC(X)

X = a numeric value

@FRAC returns the fractional portion of X.

Examples:

@FRAC(232.45566) = 0.45566

@FRAC(20) = 0

@FRAC(@PI) = 0.14159265


@FREQUENCY

Syntax: @FREQUENCY(R, B)

R = a range of values on which frequencies will be counted

B = a range of intervals used to group values in R.

@FREQUENCY returns a frequency distribution for a set of values R with a set of intervals B

Example:

@FREQUENCY(A1..A8,B1..B2) = 3,2,2 where A1..A8 = 70,79,80,61,83,93,88,97 and B1..B2 = 80,90


@FTEST

Syntax: @FTEST(R1, R2)

R1 = a range

R2 = a range

@FTEST returns the significance level (alpha) of the two-sided F-test on the variances of the data specified by ranges R1 and R2. Alpha is the probability of error in rejecting the null hypothesis that var[R1]=var[R2].

Examples:

@FTEST(A1..A4,B1..B4) = 0.57065573, where A1..A4 = .5, .98, .22, .1, and B1..B4 = .87, .6, .21, .49

@FTEST(H5..H9,K5..K12) = 0.62049415, where H5..H9 = 14, 35, 37, 0, 33, and K5..K12 = 67, 77, 94, 34, 99, 56, 86, 67


@FV

Syntax: @FV(P, R, N)

P = periodic payment

R = interest rate

N = number of periods

@FV returns the future value of an annuity given periodic payment P, interest rate R, and N number of periods.

Examples:

@FV(100,0.085,5) = 592.54

@FV(G7,C2,2) = 6240, where C2 = 8% and G7 = $3000.00

@FV(1000,0.075,1.5) = 15.27


@FVSCHEDULE

Syntax: @FVSCHEDULE(P, R)

P = Principal, or present value

R = An array of interest rates by which to compound

@FVSCHEDULE returns the future value of an initial principal after compounding by a series of interest rates.

Example:

@FVSCHEDULE(100,A1..A4) = 133.4260, where A1..A4 = 7.5%, 6.6%, 8%, 7%


@GAMMA

Syntax: @GAMMA(X)

X = a numeric value

@GAMMA returns the value of the Euler's gamma function evaluated for values of X > 0, and less than or equal to approximately 171 (less on a few computers with limited mathematics capabilities). Gamma is a continuous function whose value for integer arguments N is (N�1)! (N�1 factorial).

Examples:

@GAMMA(5) = 24

@GAMMA(1.59) = 0.89243

@GAMMA(L38) = Error - @GAMMA, floating exception, where L8 = 175


@GCD

Syntax: @GCD (list)

Returns the greatest common divisor of the numbers in the list.


@GMEAN

Syntax: @GMEAN(argumentlist)

argumentlist = any combination of numbers, cells, or ranges with each of the values greater than or equal to 0

@GMEAN returns the geometric mean of its arguments. Empty cells and cells containing strings are not included.

Examples:

@GMEAN(56,49,99) = 64.76491

@GMEAN(F10..F14) = 3.4712517, where F10..F14 = 2, 2, 3, 6, and 7

@GMEAN(U7..V15) = Error - @GMEAN, operand less than or equal to zero, where U13 = 0


@GRAND

Syntax: @GRAND

@GRAND returns a 12th-degree binomial approximation to a Gaussian random number. A set of these numbers will approximate a normal (bell-shaped) distribution with a mean of 0 and a variance of 1. The number will change with every recalculation.

Examples:

@GRAND = 1.2255531


@HEXTONUM

Syntax: @HEXTONUM(S)

S = a string value

@HEXTONUM returns the numeric value for the hexadecimal (base 16) interpretation of S. Since XESS can operate directly on hexadecimal numbers, this function is not very useful; it is included primarily to maintain compatibility with other spreadsheets.

Examples:

@HEXTONUM("A") = 10

@HEXTONUM(J10) = 45019, where J10 = "AFDB"


@HLOOKUP

Syntax: @HLOOKUP(X, R, N)

X = a numeric or string value

R = a range

N = a numeric value

@HLOOKUP returns the value of a cell found by performing a horizontal table lookup.

@HLOOKUP searches the first row (known as the index row) in the range R for the numeric or string value which "matches" X, and returns the value N rows beneath the matching cell.

If X is a string value, an exact match must be found or an error is returned.

If X is a numeric value, the index row must contain numeric values, sorted in ascending order, and the matching column is determined by the following rules:

  1. Strings and empty cells in the index row are ignored.
  2. If the first value in the index row is greater than X, an error is returned.
  3. Searching stops when a numeric value which is greater than or equal to X is found in the index row. If the value found is greater than X, the preceding column is the matching column.
  4. If there are no numeric values in the index row which are greater than or equal to X, the last column in R is considered to be the matching column.

Examples:

              A          B        C         D
       1    Lodging    Meals    Airfare   Entertainment
       2     $85.00     $30.00  $698.00    $25.00

@HLOOKUP("Meals",A1..D2,1) = 30

@HLOOKUP("Airfare",A1..D2,1) = Error - @HLOOKUP, lookup failed to produce a match

@HLOOKUP("Airfare",A1..D2,3) = Error - @HLOOKUP, row offset out of range


@HMEAN

Syntax: @HMEAN(argumentlist)

argumentlist = any combination of numbers, cells, or ranges where each value is not equal to 0

@HMEAN returns the harmonic mean of its arguments. Empty cells and cells containing strings are not counted.

Examples:

@HMEAN(F10..F15) = 3.0434783, where F10..F14 = 2, 2, 3, 6, and 7

@HMEAN(C1..C5) = Error - @HMEAN, operand equal to 0, where C4 = 0


@HOUR

Syntax: @HOUR(DT)

DT = a date/time value

@HOUR returns the hours (0 - 23, where 0 represents midnight) component of the date/time value DT.

Examples:

@HOUR(.25) = 6

@HOUR(0) = 0

@HOUR(.99) = 23


@IF

Syntax: @IF(X, T [,F] )

X = a numeric value

T = a value

F = a value

@IF returns the value of T if X evaluates to non-zero, or F if X evaluates to zero. If F is omitted, it is assumed to be 0.

Examples:

@IF(A1,7,9) = 7, where A1 = 1

@IF(B17==0,0,"non-zero") = "non-zero", where B17 = 1


@INDEX

Syntax: @INDEX (range, column, row [, worksheet] )

Range = a range

Column = an integer

Row = an integer

Worksheet = an integer

Returns the value of the cell at the indicated offset from the Range. The column, row, and worksheet offsets are 1-origin, and the resulting reference must not be outside the range.


@INFO

Syntax: @INFO(item)

item = a string value

Returns information about the current spreadsheet and its environment. The information returned is determined by the value of item. The case of the argument is ignored.

"Directory"
Current directory
"OSversion"
Current operating system version
"Processor"
Processor (CPU) type
"Recalc"
Recalculation mode, either "manual" or "automatic"
"Release"
Current release number of XESS.
"Screen-Height"
Height in pixels of current display.
"Screen-Width"
Width in pixels of current display.
"System"
Operating system name.

@INIT

Syntax: @INIT(X1, X2)

X1 = initial value

X2 = iterative or subsequent value

@INIT returns its first argument on the first recalculation pass and its second argument on all subsequent recalculation passes when XESS is performing iterative recalculations.

Examples:

C5 = @INIT(1,C5+1) C6 = @INIT(1,C5*C6)

C5 = Cycle! if Iteration Limit = 0

C5 = N if Iteration Limit = N

C6 = Cycle! if Iteration Limit = 0

C6 = N! if Iteration Limit = N


@INT

Syntax: @INT(X)

X = a numeric value

@INT returns the integer portion of X.

Examples:

@INT(232.45566) = 232

@INT(J20) = -10, where J20 = -10.3

@INT(@PI) = 3


@INTERP2D

Syntax: @INTERP2D(R1,R2,N)

R1 = a range reference points to x values of the vector;

R2 = a range reference points to y values of the vector.

N = a numerical value or range for which the interpolation value will be based on.

@INTERP2D returns interporlated values for a 2 dimensional vector. R1 and R2 have to be same size.

Example:


              A       B
        1      1      2.5
        2      3      4.5
        3      5      8.2
        4      7     10.5
        5      9     13.4

@INTERP2D(A1..A5,B1..B5,C1..C2) = 6.35, 9.35 where C1..C2 = 4,6

@INTERP3D

Syntax: @INTERP3D(R,X,Y)

R = a range reference points to x, y and z values of the vector;

X = x values on which the interpolation values are based

Y = y values on which the interpolation values are based

@INTERP3D returns interporlated value for a 3 dimensional vector. X and Y have to be same size.

Example:


          A       B      C       D       E       F       G
                 12.5   14.5    15.5    18.2    19.5    22.5
    1    11.5       1      2       3       4       5       6
    2    13.5       7      8       9      10      11      12
    3    16.5      13     14      15      16      17      18
    4    17.5      19     20      21      22      23      24
    5    18.5      25     26      27      28      29      30
    6    20.5      31     32      33      34      35      36

@INTERP3D(A1..G6,A11..A12,B11..B12) = 3.25
		            12.5556, 
  where A11..A12 = 12, 15, and B11..B12 = 14, 17

@INTRATE

Syntax: @INTRATE(S, M, I, R[, B])

S = Settlement date, date of purchase

M = Maturity date.

I = Investment amount

R = Redemption amount

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@INTRATE returns the interest rate for a fully invested investment.

Example:

@INTRATE(@DATE(1993,1,15), @DATE(1993,6,15), 10000, 10545) = 0.1317


@IPMT

Syntax: @IPMT(R, P, NP, PV, FV, [T])

R = Interest rate per period

P = The period for which the interest will be calculated (an integer)

NP = The total number of payment periods.

PV = The present value of the investment

FV = The future value or a cash balance you would like to attain at the end of the last period.

T = (Optional) timing of the payment

	0 payment is made at the end of the period
	1 payment is made at the beginning of the period

@IPMT returns the interest payment for a specified period for an loan or investment based on periodic, constant payments and a constant interest rate. Make sure that the units used for R and P are consistent. For example, for a 5-year loan with 12% annual interest, if you make payments monthly, use 12%/12 for (monthly) R and 5*12 for NP.

Example:

@IPMT(10%/12,1,24,2000,0,0) = 16.6667


@INVDFT

Syntax: @INVDFT(R)

R = a range

@INVDFT generates the inverse Discrete Fourier Transform of the range R. Like @DFT, R must represent a real vector (either its row or column dimension must be 1), or a complex vector (either its row or column dimension must be 2). The result is a complex vector.

Examples:

A B 1 .99 0 2 3 6.2 3 4.1 1.1 4 3.3 6.3 With @INVDFT(A1..B4) in B6 gives: B C 6 2.8475 3.4 7 -0.8025 -0.2 8 -0.3025 -2.85 9 -0.7525 -0.35 @INVDFT(G4..I6) = Error - @INVDFT, improper dimensions

@INVERT

Syntax: @INVERT(M)

M = a regular matrix

@INVERT generates the inverse of the matrix M, which must be square. The result matrix is the same size as the argument matrix. Multiplying M times the result matrix (@MMUL) produces an identity matrix (a matrix with 1's in the diagonal and 0's elsewhere).


	@MMUL(A,@INVERT(A))

A singular matrix (a matrix without an inverse) is non-regular and produces an error.

Examples:

Matrix B9..C10

               B     C
         9      0     1
        10      1     2

@INVERT(B9..C10) =
                   -2     1
                    1     2


@INVFFT

Syntax: @INVFFT(R)

R = a range

@INVFFT generates the inverse Discrete Fourier Transform or range R using a Fast Fourier Transform algorithm. The length of the vector must be a power of 2. @INVFFT will produce the same results as @INVDFT, but it is much faster (N*log(N)) time as opposed to N2 time).


@IRR

Syntax: @IRR(G, F)

G = a numeric value

F = cash flow, represented by a range

@IRR returns the internal rate of return on an investment given a set cash flows contained in range F, and an initial "guess" G (usually 0). F must contain at least two cash flow values. Negative cash flows represent expenditures, and positive cash flows represent income. Empty cells and text are treated as zeros.

Examples:

@IRR(0,L2..L6) = -0.32606171, where L2..L6 = -80, 90, 67, 72, and -90

@IRR(0,I5..I9) = 1.0462142, where I5..I9 = -700, 750, 900, 600 and 850

@IRR(0,-200,100,300) = ERROR: too many arguments to function


@ISERROR

Syntax: @ISERROR(X)

X = An expression

@ISERROR returns 1 if X "contains" an error, otherwise it returns 0. X "contains" an error if it it would generate an error outside of the @ISERROR function, which means that the expression itself may generate an error, or it may reference a cell which has generated an error.

Examples:

@ISERROR(1) = 0

@ISERROR(3/0) = 1

@ISERROR(@ISERROR(3/0)) = 0


@ISEVEN

Syntax: @ISEVEN(number)

Returns 1 if a number is even or 0 if not. If a number is not an integer it is truncated before the test.


@ISNUMBER

Syntax: @ISNUMBER(X)

X = a numeric value

@ISNUMBER returns 1 if X is a numeric value, otherwise 0. Empty cells are considered numeric.

Examples:

@ISNUMBER(C10) = 0, where C10 = "Total"

@ISNUMBER(D10) = 1, where D10 = $1000.00

@ISNUMBER(A1) = 1, where A1 is empty


@ISODD

Syntax: @ISODD(number)

Returns a 1 if a number is odd or 0 if not. If a number is not an integer it is truncated before the test.


@ISSTRING

Syntax: @ISSTRING(X)

X = a numeric value

@ISSTRING returns 1 if X is a string value, otherwise 0. Empty cells are considered numeric.

Examples:

@ISSTRING(C10) = 1, where C10 = "Total"

@ISSTRING(D10) = 0, where D10 = $1000.00

@ISSTRING(A1)= 0, where A1 is empty


@LARGE

Syntax: @LARGE(R, N)

R = Range of data

N = Integer specifying Nth largest datum from R

@LARGE returns the Nth largest datum in the range R.

Examples:

A1..A9 = 1,4,8,3,7,12,54,8,23

@LARGE(A1..A9,3) = 12

@LARGE(A1..A9,1) = 54

@LARGE(A1..A9,@COUNT(A1..A7)) = 1


@LCM

Syntax: @LCM (list)

Returns the least common multiple of the numbers in the list.


@LEFT

Syntax: @LEFT(S,N)

S = a string value

N = a numeric value

@LEFT returns the string composed of the leftmost characters of string S. If N is greater than or equal to the length of S, then the entire string S is returned.

Examples:

F1 = "workstation"

@LEFT(F1,1) = "w"

@LEFT(F1, 4) = "work"

@LEFT(F1,20) = "workstation"


@LENGTH

Syntax: @LENGTH(S)

S = a string value

@LENGTH returns the number of characters in string S.

Examples:

@LENGTH("computer") = 8

@LENGTH(G3) = 14, where G3 = "Expense Report"

@LENGTH(Z7) = 20, where Z7 = "Linear Least Squares"


@LINCOEF

Syntax: @LINCOEF(X, Y)

X = a range representing a column vector of independent variables values,

Y = a range representing a column vector of dependent variables values

@LINCOEF generates the straight line least squares fit. The output is the values for a1 and a0 and is a row vector if X and Y are row vectors, and a column vector if X and Y are column vectors. This function is equivalent to @POLYCOEF(X,Y,1).


@LINFIT

Syntax: @LINFIT(X, Y)

X = a range representing a vector of independent variables values,

Y = a range representing a vector of dependent variables values

@LINFIT generates the estimated Y values for a straight line least squares fit. The output of this function is the vector of estimated y values on the left hand side of the above equation. The input vector X and Y must both be row vectors or both column vectors.

The output vector will be a row vector if X and Y are row vectors, and a column vector if X and Y are column vectors. The length of the output vector is equal the the length of the input vectors. This function is equivalent to @POLYFIT(X,Y,1).

Example:

Matrix B1..B5 and C1..C5
             B     C
         1    1     3
         2    2     5
         3    3    11
         4    4    18
         5    5    31
 

@LINFIT(B1..B5,C1..C5) =
                         -0.2
                          6.7
                         13.6
                         20.5
                         27.4


@LLS

Syntax: @LLS(A, Y [,FLAG] )

A = matrix of X values

Y = vector of observed values for Y

FLAG = an optional value indicating whether the X data intercepts with the origin (0)

@LLS generates the following regression analysis:

  1. the linear least squares solution, X, to the overdetermined system of linear equations AX=Y
  2. the standard errors of the least square estimates of each element of the parameter vector X, the t-statistics that compare each parameter to zero, and the significance level of each.
  3. the variance of the model, the R-squared correlation for the model, and its corresponding F-statistic and significance level.
If any columns of A are linearly dependent, the function produces an error. If FLAG is set to 1, then the X data intercepts with the origin and the right-most column of 1's is not needed in the matrix A.

The output of @LLS is a a table with four rows and n+1 columns, where n is the number of independent variables in the model (i.e., the number of columns in the A matrix). The table is presented in the following format:


        x(1)        x(2)        ...     x(n)        MSE
        SE(x(1))    SE(x(2))    ...     SE(x(n))    RSQUARE
        t(x(1))     t(x(2))     ...     t(x(n))     F(R)
        P(t(x(1)))  P(t(x(2)))  ...     P(t(x(n)))  P(F(R))            

where
x(i)
the least squares estimate of the ith coefficient, corresponding to the independent variable in the ith column of A.
SE(x(i))
the standard error of xi
t(x(i))
the t-statistic for testing whether xi is significantly different from zero.
P(t(x(i)))
the probability of error in rejecting the null hy pothesis that xi=0, based on two-sided t-test.
MSE
the mean squared error of the model.
R2
the model coefficient of determination (the square of the model correlation coefficient, R)
FR
the F-statistic for testing whether R is significantly different from zero.
P(FR)
the probability of error in rejecting the null hy pothesis that R=0, based on a two-sided t-test.

Matrix A1..C4 and D1..D4

               A    B    C    D
           1   0    0    1    3
           2   1    1    1    5
           3   4    2    1   13
           4   9    3    1   18

@LLS(A1..C4,D1..D4)= 	

        0.75         3.05         2.55         4.05
        1.01         3.15         1.96         0.97
        0.75         0.97         1.30        17.62
        0.59         0.51         0.42         0.17

@LLS(A1..A2,B1..C2) = Error - @LLS, improper dimensions

The first result above is exactly equivalent to @PLS(B1..B4,D1..D4,2)


@LN

Syntax: @LN(X)

X = a numeric value greater than 0.

@LN returns the log base e of X. The inverse of @LN is the exponentiation function @EXP.

Examples:

@LN(6) = 1.7917595

@LN(@EXP(X4)) = 10, where X4 = 10

@LN(-1) = Error - @LN, domain is x > 0


@LNGAMMA

Syntax: @LNGAMMA(X)

X = a numeric value greater than or equal to 0

@LNGAMMA returns the log base e of the gamma function evaluated at X.

Examples:

@LNGAMMA(1.20) = -0.08537

@LNGAMMA(10) = 12.801827

@LNGAMMA(D30) = Error - @LNGAMMA, domain is x > 0, where D30 = 0

@LNGAMMA(K19) = 9.9677617, where K19 = 8.7


@LOG

Syntax: @LOG(X)

X = a numeric value greater than 0

@LOG returns the log base 10 of X. This function is included for compatibility with WKS and WK1 formats.

Examples:

@LOG(1) = 0

@LOG(14) = 1.146128

@LOG(1.00e+27) = 27

@LOG(0) = Error - @LOG, domain is x > 0


@LOG10

Syntax: @LOG10(X)

X = a numeric value greater than 0

@LOG10 returns the log base 10 of X.

Examples:

@LOG10(1) = 0

@LOG10(14) = 1.146128

@LOG10(1.00e+27) = 27

@LOG10(0) = Error - @LOG10 domain is x > 0


@LOG2

Syntax: @LOG2(X)

X = a numeric value greater than 0

@LOG2 returns the log base 2 of X.

Examples:

@LOG2(1) = 0

@LOG2(1.00e+27) = 89.692

@LOG2(0) = Error! domain x > 0


@LOWER

Syntax: @LOWER(S)

S = a string value

@LOWER returns returns the alphabetic string S converted to lower-case characters.

Examples:

@LOWER("AIRPORT") = "airport"

@LOWER(G3) = "expense report", where G3 = "Expense Report"

@LOWER(K10) = "connections", where K10 = "CONNECTIONS"


@MADD

Syntax: @MADD(M1,M2)

M1 = a matrix

M2 = a matrix

@MADD adds the corresponding elements of matrix M2 and matrix M1. If the dimensions of the matrices are incompatible, the function generates an error.

Examples:

Matrix B9..C10

              B     C
       9       0     1
      10       1     2

Matrix D9..E10

              D     E
       9       3     5
      10       4     8

@MADD(B9..C10,D9..E10) =

                    3     6
                    5    10


@MATCH

Syntax: @MATCH(V, R[, T])

V = Value to be matched.

R = Range in which to match V

T = Type of match

@MATCH return the relative position of the value V in the range R, according to the rule specified by T:


         1 or omitted      Find largest value in R <= V
         0                 Find first value in R = V
        -1                 Find smallest value in R >= V

V can be a string or a numeric value. If V is a string, T must be 0.

If V is a string, it may contain the wildcard characters, asterisk (*) and question mark (?), to represent any sequence of characters and any single character respectively. The items in the R do not need to be in any specific order.

Examples:


                 A               B
        1     Products    Quantity (Boxes)
        2     Apple                     32
        3     Orange                    50
        4     Cherry                    15
        5     Banana                    20
        6     Cantaloupe                10
        7     Strawberry                25

@MATCH(15,B1..B7) = 4

@MATCH(30,B1..B7,1) = 7

@MATCH(30,B1..B7,-1) = 2

@MATCH("Orange",A1..A7,0) = 3

@MATCH("Can*",A1..A7,0) = 6


@MAX

Syntax: @MAX(argumentlist)

argumentlist = any combination or numbers, cells, or ranges

@MAX returns the maximum of its arguments. Empty cells and cells containing strings are not counted.

Examples:

@MAX(4,56,33,100,0,-1) = 100

@MAX(S3..S7) = -1, where S3..S7 = -1,-4,-99,-20,-1.5

@MAX(A1..B2) = 93, where A1 = 0, A2 = -93, B1 = 93, and B2 = 7


@MDURATION

Syntax: @MDURATION(S, M, R, Y, F, [B])

S = Settlement date

M = Maturity date

R = Annual coupon rate

Y = Annual yield

F = Number of coupon payments per year (frequency):

	1		annual
	2		semi-annual
	4		quarterly

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@MDURATION returns the modified Macauley duration of a security assuming $100 face value.

Example:

@MDURATION(@DATE(1990,1,1),@DATE(1995,1,1),10%,8%,2,0) = 3.9379


@MEDIAN

Syntax: @MEDIAN(argumentlist)

argumentlist = any combination or numbers, cells or ranges

@MEDIAN returns the median (middle value) of its arguments. Empty cells and cells containing strings are not counted.

Examples:

@MEDIAN(A1..A6) = 80.5, where A1..A6 = 65,70,74,87,88,95

@MEDIAN(2, 8, 6, 5, 9) = 6


@MESSAGE

Syntax: @MESSAGE(X,S)

X = an expression

S = a string

If the value of X is not 0, then @MESSAGE displays S in the Message Line and beeps. @MESSAGE returns the value of X.

Examples:

@MESSAGE(@HOUR(@NOW) > 17, "Time to go home!")


@MID

Syntax: @MID(S,N1,N2)

S = a string value

N1 = a numeric value

N2 = a numeric value

@MID returns the string of length N2 that starts at position N1 in string S. N1 is the number of characters from the beginning of the string, must be greater than or equal to zero, and less than the length of S. N2 must be greater than or equal to zero. If N1+N2 is greater than the length of S, then the substring starting at position N1 in S is returned. The first character in string S is in position zero.

Examples:

T5 = "Spreadsheet"

@MID(T5,6,5) = "sheet"

@MID(T5,10,1) = "t"

@MID(T5,1,0) = " "


@MIN

Syntax: @MIN(argumentlist)

argumentlist = any combination or numbers, cells or ranges

@MIN returns the minimum of its arguments. Empty cells and cells containing strings are not counted.

Examples:

@MIN(4,56,33,100,0,-1) = -1

@MIN(S3..S7) = -99, where S3..S7 = -1,-4,-99,-20,-1.5

@MIN(A1..B2) = -93, where A1 = 0, A2 = -93, B1 = 93, and B2 = 7


@MINUTE

Syntax: @MINUTE(DT)

DT = a date/time value

@MINUTE returns the minutes (0 to 60) component of the date/time value DT.

Examples:

@MINUTE(.99) = 45

@MINUTE(.6) = 24

@MINUTE(.3) = 12


@MIRR

Syntax: @MIRR(V,F,R)

V = A range of values representing periodic income (positive values) and payments (negative values)

F = Finance rate, the interest paid on the payments

R = Reinvestment rate, the rate of return on the income

@MIRR returns the Modified Internal Return Rate for a range of periodic cash flows. Empty cells and text are treated as zeros.

Example:

A B 1 Investment -140000 2 1st year return 34000 3 2nd year return 46000 4 3rd year return 45000 5 4th year return 47000 6 5th year return 46000 @MIRR(B1..B6,11%,12.5%) = 0.14522


@MMUL

Syntax: @MMUL(M1,M2)

M1 = a matrix

M2 = a matrix

@MMUL generates the product of the multiplication of matrix M2 by matrix M1. If the dimensions of the matrices are incompatible, the function generates an error.

Examples:

Matrix B9..C10

             B    C
         9    0    1
        10    1    2

Matrix D9..E10

             D    E
         9    3    5
        10    4    8

@MMUL(B9..C10,D9..E10) =

                     4    8
                     1   21


@MOD

Syntax: @MOD(X,Y)

X = a numeric value

Y = a numeric value

@MOD returns the remainder of X/Y with the same sign as X. (This function is NOT modulus as sometimes documented.)

Examples:

@MOD(8,4) = 0

@MOD(D2,F3) = 12, where D2 = 100 and F3 = 44

@MOD(F5,A1) = Error!, divide by zero, where F5 = 98.6 and A1 = 0

@MOD(-14,3) = -2 (the true modulus is 1)


@MODE

Syntax: @MODE(argumentlist)

argument = any combination of numbers, cells, or ranges.

@MODE returns the mode, or most frequently occurring datum, of all the arguments. Empty cells and cells containing text are ignored.

Examples:

@MODE(5,4,10,8,7,5,4,14,5) = 5

@MODE(A1..A7) = 2.3, where A1..A7 = 2.3,3.4,5.0,3.4,3.4,2.3,2.3


@MODULUS

Syntax: @MODULUS(X,Y)

X = a numeric value

Y = a numeric value

@MODULUS returns the modulus of X/Y.

Examples:

@MODULUS(8,4) = 0

@MODULUS(D2,F3) = 12, where D2 = 100 and F3 = 44

@MODULUS(F5,A1) = Error!, divide by zero, where F5 = 98.6 and A1 = 0

@MODULUS(-14,3) = 1


@MONTH

Syntax: @MONTH(DT)

DT = a date/time value

@MONTH returns the months component of the date/time value DT.

Examples:

@MONTH(24203) = 4, where 24203 represents April 6, 1966

@MONTH(366) = 12, where 366 represents December 31, 1900


@MSQ

Syntax: @MSQ(argumentlist)

argumentlist = any combination of numbers, cells, or ranges

@MSQ returns the mean of the squares of its arguments. Empty cells and cells containing strings are not counted.

Examples:

@MSQ(-9,-3,-5,0,1) = 23.2

@MSQ(F10..F14) = 20.4, where F10..F14 = 2, 2, 3, 6, and 7

@MSQ(D1..D6) = 2373.6667, where D1..D6 = 4, 56, 33, 100, 0, and -1


@MSUB

Syntax: @MSUB(M1,M2)

M1 = a matrix

M2 = a matrix

@MSUB subtracts corresponding values of matrix M2 from matrix M1. If the dimensions of the matrices are incompatible, the function generates an error.

Examples:

Matrix B9..C10

              B     C
       9       0     1
      10       1     2

Matrix D9..E10

              D     E
       9       3     5
      10       4     8


@MSUB(B9..C10,D9..E10) =

                   -3   -4
                   -3   -6


@N

Syntax: @N(R)

R = a range

@N returns the numeric value of the upper left cell in the range R, or zero if the cell is empty or contains a string. This function is included for compatibility with older spreadsheets.

Examples:

A1..B3		A	B


	1	1	"electrons"
	2	2	"protons"
	3	3	"neutrons"

@N(A1..B3) = 1 @N(B1..B3) = 0 @N(A1..Z25) = $1,000,000.00, where A1 = $1,000,000.00

@NAND

Syntax: @NAND(argumentlist)

argumentlist = any combination or numbers, cell, or ranges

@NAND returns 0 if all arguments are 1; 1 if any argument is 0; otherwise -1 (unknown).

Examples:

A1 = 1, B1 = 1, C1 = 0, D1 = 0, E1 = 1 and A2 = 24

@NAND(A1,B1) = 0

@NAND(A1..E1) = 1

@NAND(A1..A2) = -1


@NETWORKDAYS

Syntax: @NETWORKDAYS(S,E,H)

S = Starting date, a date/time value

E = Ending date, a date/time value

H = A range of dates to exclude, such as holidays.

@NETWORKDAYS returns the number of whole working days, beginning with S and ending with E, excluding days in Hand weekends.

Examples:

@NETWORKDAYS(@DATE(1993,1,1),@DATE(1993,12,31)) = 261

@NETWORKDAYS(@DATE(1993,1,1),

@DATE(1993,12,31),A1..A5) = 258, where

A1 = @DATEVALUE("1/1/1993"),

A2 = @DATEVALUE("5/25/1993"),

A3 = @DATEVALUE("7/4/1993"),

A4 = @DATEVALUE("9/3/1993"),

A5 = @DATEVALUE("11/28/1993")


@NOMINAL

Syntax: @NOMINAL(R,C)

R = Effective interest rate

C = Number of compounding periods per year

@NOMINAL returns the nominal annual interest rate for an effective interest rate R and the number of compounding periods per year C.

Example:

@NOMINAL(6.9347%,5) = 0.0675


@NOR

Syntax: @NOR(argumentlist)

argumentlist = any combination of numbers, cells, or ranges

@NOR returns 0 if any argument is 1; 1 if all arguments are 0; otherwise -1 (unknown).

Examples:

A1 = 1, B1 = 1, C1 = 0, D1 = 0, E1 = 1 and A2 = 24

@NOR(C1,D1) = 1

@NOR(A1..E1) = 0

@NOR(A1..A2) = -1


@NOT

Syntax: @NOT(X)

X = a numeric value

@NOT returns 1 if X=0; 0 if X=1; otherwise -1 (unknown).

Examples:

A1 = 1, B1 = 1, C1 = 0, D1 = 0, E1 = 1 and A2 = 24

@NOT(A1) = 0

@NOT(A2) = -1

@NOT(C1) = 1


@NOW

Syntax: @NOW

@NOW returns the date/time value corresponding to the current system time and date.

Examples:

@NOW = 33139.37, where 33139.37 represents September 23, 1990 at 8:52:48 A.M.

@MONTH(@NOW) = 9

@HOUR(@NOW) = 8


@NPV

Syntax: @NPV(R,CF)

R = periodic interest rate

CF = future cash flow series represented by a range

@NPV returns the present value of a series of future cash flows, CF, at a given rate R. Empty cells and text are treated as zeros.

Examples:

@NPV(.095, C3..C8) = 287.29, where the interest rate is 9.5% and the future cash flow is in the range C3..C8 and are each $65

@NPV(.10,C3) = Error! cash flow series must be a range


@NUMTOHEX

Syntax: @NUMTOHEX(X)

X = a numeric value between -231 <= X <= (231) - 1

@NUMTOHEX returns a string containing the hexadecimal representation of the integer portion of X.

Examples:

@NUMTOHEX(10) = "a"

@NUMTOHEX(C17) ="f", where C17 = 15.289374


@OCCUR

Syntax: @OCCUR(string,pattern)

Returns the number of times that the substring "pattern" occurs in "string".


@ODD

Syntax: @ODD(number)

Returns the odd number with the next larger absolute value. ODD(2) = 3, ODD(-2) = -3.


@ODDFPRICE

Syntax: @ODDFPRICE(S,M,I,FC,R,Y,RD,F[,B])

S = settlement date

M = maturity date

I = issue date

FC = first coupon date of the security

R = annual coupon rate of the security

Y = annual yield of the security

RD = redemption value of the security at maturity per $100 face value

F = the number of coupon payments per year (frequency):

	1		annual
	2		semi-annual
	4		quarterly

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@ODDFPRICE returns the price per $100 face value of a security with an odd (short or long) first period.

Example:

@ODDFPRICE(A1,A2,A3,A4,7.85%,6.25%,100,2,1) = 113.5977, where A1 = @DATE(1992,11,11), A2 = @DATE(2005,3,1), A3 = @DATE(1992,10,15), A4 = @DATE(1993,3,1)


@ODDFYIELD

Syntax: @ODDFYIELD(S,M,I,FC,R,PR,RD,F[,B])

S = settlement date

M = maturity date

I = issue date

FC = first coupon date of the security

R = annual coupon rate of the security

PR - the price of the security per $100 face value

RD = redemption value of the security at maturity per $100 face value

F = the number of coupon payments per year (frequency):

	1		annual
	2		semi-annual
	4		quarterly

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@ODDFYIELD returns the yield per $100 of a security with an odd (short or long) first period.

Example:

@ODDFYIELD(A1,A2,A3,A4,7.85%,113.598,100,2,1) = 0.0625, where A1 = @DATE(1992,11,11), A2 = @DATE(2005,3,1), A3 = @DATE(1992,10,15), A4 = @DATE(1993,3,1)


@ODDLPRICE

Syntax: @ODDLPRICE(S,M,LC,R,Y,RD,F[,B])

S = settlement date

M = maturity date

LC = last coupon date of the security

R = annual coupon rate of the security

Y = annual yield of the security

RD = redemption value of the security at maturity per $100 face value

F = the number of coupon payments per year (frequency):

	1		annual
	2		semi-annual
	4		quarterly

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@ODDLPRICE returns the price per $100 face value of a security with an odd (short or long) last period.

Example:

@ODDLPRICE(A1,A2,A3.6.5%,5.35%,100,2,0) = 100.5418, where A1 = @DATE(1992,2,7), A2 = @DATE(1993,8,1), A3 = @DATE(1992,2,4)


@ODDLYIELD

Syntax: @ODDLYIELD(S,M,LC,R,PR,RD,F[,B])

S = settlement date

M = maturity date

LC = last coupon date of the security

R = annual coupon rate of the security

PR - the price of the security per $100 face value

RD = redemption value of the security at maturity per $100 face value

F = the number of coupon payments per year (frequency):

	1		annual
	2		semi-annual
	4		quarterly

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@ODDFYIELD returns the yield per $100 of a security with an odd (short or long) last period.

Example:

@ODDLYIELD(A1,A2,A3.6.5%,100.542,100,2,0) = 0.0535, where A1 = @DATE(1992,2,7), A2 = @DATE(1993,8,1), A3 = @DATE(1992,2,4)


@OR

Syntax: @OR(argumentlist)

argumentlist = any combination of numbers, cells or ranges

@OR returns 1 if any argument is 1; 0 if all arguments are 0; otherwise -1 (unknown).

Examples:

A1 = 1, B1 = 1, C1 = 0, D1 = 0, E1 = 1 and A2 = 24

@OR(C1,D1) = 0

@OR(A1..E1) = 1

@OR(A1..A2) = -1


@PERCENTILE

Syntax: @PERCENTILE(R,N)

R - A range of data

N - A numeric value between 0 and 1, inclusive.

@PERCENTILE returns the datum from the range R which is at the Nth percentile in R. Only numeric data in R are considered. The result will be interpolated if N is not a multiple of 1/(s-1), where s is the size of R.

Examples:

@PERCENTILE(A1..A4,0.65) = 2.95, where A1..A4 = 1,2,3,4

@PERCENTILE(B1..B6,0.75) = 21.35, where A1..A6 = 3.8,23,4,12,67,0.2


@PERCENTRANK

Syntax: @PERCENTRANK(R,N)

R - A range of data

N - A number to find

@PERCENTRANK returns the percentile rank of the number N among the values in range R

Examples:

@PERCENTRANK(A1..A6,4.5) = 0.7, where A1..A6 = 1,2,3,4,5,6

@PERCENTRANK(B1..B6,21.35) = 0.77, where B1..B8 = 3.8,23,4,12,67,0.2


@PERMUT

Syntax: @PERMUT(N,K)

N = Number of objects to choose from

K = Number of objects to be chosen

@PERMUT returns "N choose K", or the permutations of K objects that can be chosen from the set N, where order is significant.

Examples:

@PERMUT(10,4) = 5040

@PERMUT(8,1) = 8


@PI

Syntax: @PI

@PI returns the value of p.

Examples:

@PI = 3.1415927...


@PLS

Syntax: @PLS(X,Y,d [,flag] )

X - a range representing a row or column vector of independent variable values

Y - a range representing a row or column vector of dependent variable values

d - polynomial degree in the range 1 to 10

flag - omitted or 1 means that X data intercepts with the origin; 0 means data does not intercept with the origin

@PLS analyzes the least squares polynomial model. The output of this function is identical to that of @LLS, with the polynomial coefficients listed in order of decreasing degree.

Example:

Matrix A1..C4 and Matrix D1..D4

               A    B    C    D
           1   0    0    1    3
           2   1    1    1    5
           3   4    2    1   11
           4   9    3    1   18


@PLS(B1..B4,D1..D4,2) = 	

        0.75         3.05         2.55         4.05
        1.01         3.15         1.96         0.97
        0.75         0.97         1.30        17.62
        0.59         0.51         0.42         0.17


@PMT

Syntax: @PMT(PV,R,N)

PV = present value of an investment

R = interest rate

N = number of periods

@PMT returns the periodic payment for a loan, given present value PV and interest rate R.

Examples:

@PMT(15000,rate,4) = 4834.90, where rate is a named cell = 11%

@PMT(M4,0.07,G4) = 8058.6404, where G4 = 30 and M4 = 100000

@PMT(1700,11,0) = Error!, "Period" must be an integer>0


@POLY

Syntax: @POLY(X,...)

X = a numeric value

... = coefficients of the polynomial in decreasing order of degree

@POLY returns the value of an Nth-degree polynomial in X. The coefficient arguments may be any combination of numbers, cells containing numbers, or ranges containing numbers. Any non-numeric argument produces an error. @POLY(X,3,4,5) =( 3*X**2+4*X+5)

Examples:

@POLY(2,3,4,5) = 25, where (3*(2**2) + 4*(2) + 5) = 25

@POLY(-1,A1,A2) = 1, where A1 = 2 and A2 = 3 because (2*-1 + 3) = 1

@POLY(3,2,5,4,6) = 117

@POLY(-1,-2,-3,-4) = -3


@POLYCOEF

Syntax: @POLYCOEF(X,Y,d)

X - a range representing a row or column vector of independent variable values

Y - a range representing a row or column vector of dependent variable values

d - polynomial degree in the range 1 to 10

@POLYCOEF generates the least squares coefficients for the polynomial fit. The output of this function is a vector of length d+1 containing ,1,...,1,0 The output vector will be a row vector if X and Y are row vectors, and a column vector if X and Y are column vectors.

Example:

Matrix B1..B5 and C1..C5

                  B      C
            1      1      3
            2      2      5
            3      3     11
            4      4     18
            5      5     31

@POLYCOEF(B1..B5,C1..C5,2) =

                           1.6428571
                          -2.9571429
                           4.4

@POLYFIT

Syntax: @POLYFIT(X,Y,d)

X - a range representing a row or column vector of independent variable values

Y - a range representing a row or column vector of dependent variable values

d - polynomial degree in the range 1 to 10

@POLYFIT generates the least squares polynomial fit. The output of this function is the vector of estimated y-values on the left hand side of the above equation. The input vector X and Y must both be row vectors or both column vectors. The output vector will be a row vector if X and Y are row vectors, and a column vector if X and Y are column vectors. The length of the output vector is equal the the length of the input vectors.

Example:

Matrix B1..B5 and C1..C5

                  B      C
            1      1      3
            2      2      5
            3      3     11
            4      4     18
            5      5     31

@POLYFIT(B1..B5,C1..C5,2) =

                             3.0857143
                             5.0571429
                            10.314286
                            18.857143
                            30.685714

@PPMT

Syntax: @PPMT(R,P,NP,PV,FV[,T])

R = interest rate per period

P = the period for which the interest will be calculated

NP = the total number of payment periods.

PV = present value of the investment.

FV = future value or a cash balance you would like to attain at the end of the last period.

T = (Optional) timing of the payment

	0 payment is made at the end of the period
	1 payment is made at the beginning of the period

@PPMT returns the payment on the principal for a specific period for an investment based on periodic, constant payments and a constant interest rate. Make sure the units used be R and NP are consistent. For example, for a 5-year loan with 12% annual interest, if you make payment monthly, use 12%/12 for (monthly) R and 5*12 for NP. If you make annual payment on the same loan, use 12% for R and 5 for NP.

Examples:

@PPMT(10%/12,1,60,55000,0,0) = 710.2541

@PPMT(10%/12,1,60,55000,1000) = 723.1678


@PRICE

Syntax: @PRICE(S,M,R,Y,RD,F[,B])

S = settlement date

M = maturity date

R = annual coupon rate of the security

Y = annual yield of the security

RD = redemption value of the security at maturity per $100 face value

F = the number of coupon payments per year (frequency):

	1		annual
	2		semi-annual
	4		quarterly

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@PRICE returns the price per $100 face value of a security that pays periodic interest.

Example:

@PRICE(@DATE(1991,3,15),@DATE(1998,10,15),6%,7%,100,2,0) = 94.1854


@PRICEDISC

Syntax: @PRICEDISC(S,M,D,RD[,B])

S = settlement date

M = maturity date

D = discount rate of the security

RD = redemption value of the security at maturity per $100 face value

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@PRICEDISC returns the price per $100 face value of a discounted security.

Example:

@PRICEDISC(@DATE(1993,2,1),@DATE(1993,6,1),6.5%,100,0) = 97.8333


@PRICEMAT

Syntax: @PRICEMAT(S,M,I,R,Y[,B])

S = settlement date

M = maturity date

I = issue date

R = annual coupon rate of the security

Y = annual yield of the security

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@PRICEMAT returns the price per $100 face value of a security that pays interest at maturity.

Example:

@PRICEMAT(@DATE(1993,3,1),@DATE(1993,6,15),@DATE(1992,11,1), 6.5%,0) = 101.8778


@PRODUCT

Syntax: @PRODUCT(argumentlist)

argumentlist = any combination of numbers, cells, or ranges

@PRODUCT multiplies all the numeric elements of the argument list together, ignoring empty and non-numeric values, and returns the product.

Examples:

@PRODUCT(6,5,8,2) = 480

@PRODUCT(A1..A3) = 25.1327, where A1..A3 = 2,@PI,4


@PROPER

Syntax: @PROPER(S)

S = a string value

@PROPER returns the string S with the first letter of each word capitalized.

Examples:

@PROPER("president") = "President"

@PROPER(P9) = "Chicago", where P9 = "CHICAGO"

@PROPER(E18) = "Chapel Hill", where E18 = "chapel hill"


@PTTEST

Syntax: @PTTEST(R1,R2)

R1 = a range

R2 = a range

@PTTEST returns the significance level (alpha) of the two-sided paired T-test for the paired samples contained in ranges R1 and R2, respectively. Then alpha is the probability of error in rejecting the null hypothesis that mean [y-x]=0. R1 and R2 must have the same dimension.

Examples:

@PTTEST(A1..A4,B1..B4) = 0.64, where A1..A4 = .5, .98, .22, .1, and B1..B4 = .87, .6, .21, .49.

@PTTEST(H5..H9,K5..K9) = 0.0008594, where H5..H9 = 14, 35, 37, 0, 33, and K5..K9 = 67, 77, 94, 34, 99.

@PTTEST(A1..A30,B1..B50) = Error!, ranges must be same dimension


@PURECOUNT

Syntax: @PURECOUNT(rangelist)

Returns the count of cells in a list of ranges that contain values, excluding the count of cells that contain strings.


@PV

Syntax: @PV(P,R,N)

P = periodic payment

R = interest range

N = number of periods

@PV returns the present value of an annuity given periodic payment P, interest rate R and N number of periods.

Examples:

@PV(360, RATE, 4) = 1116.88, where RATE is a named cell = 11%

@PV(V10, C6,5) = 41001.97, where C6 = 7% and V10 = 10000

@PV(4500,0.05,-1) = Error!, "Period" must be an integer >0


@QUARTILE

Syntax: @QUARTILE(R,Q)

R = Range of cells

Q = Quartile as follows:

0 Minimum value

1 First quartile (25th percentile)

2 Second quartile (50th percentile)

3 Third quartile (75th percentile)

4 Maximum value

@QUARTILE finds the quartile Q of the data in range R. This is equivalent to @PERCENTILE(R,Q/4).

Examples:

A1..A8 = 1,2,4,7,8,9,10,12

@QUARTILE(A1..A8,2) = 7.5

@QUARTILE(A1..A8,1) = 3.5


@RADIANS

Syntax: @RADIANS(X)

X = a numeric value

@RADIANS returns p/180 times X.

Examples:

@RADIANS(1) = 0.017453293

@RADIANS(@DEGREES(25)) = 25

@COS(@RADIANS(G57)) = 0.5, where G57 = 60


@RAND

Syntax: @RAND

@RAND returns a uniformly distributed random number on the interval [0,1). The number will change every time the sheet is recalculated.

Examples:

@RAND = .38952085

@RAND * 10 = 7.6609264, a number between 0 and 10

@RAND/1 = 0.85737794


@RANGENAME

Syntax: @RANGENAME(C)

C = a cell reference

@RANGENAME returns the name of the first named range (alphabetically) which contains the cell C.


@RANGEREF

Syntax: @RANGEREF(N1,N2,N3,N4)

N1 = the upper left column index of the range

N2 = the upper left row index of the range

N3 = the lower right column index of the range

N4 = the lower right row index of the range

@RANGEREF returns a reference to the range described by corner coordinates N1, N2, N3, and N4. Row index must be relative to 1; column index must be relative to 0.

Examples:

@SUM(@RANGEREF(0,1,0,2)) is equivalent to @SUM(A1..A2)

@AVG(@RANGEREF(1,1,25,10)) is equivalent to @AVG(B1..Z10)


@RANK

Syntax: @RANK(E,R,[O])

E = Numeric value whose rank you wish to determine

R = Range of cells containing data to rank

O = Order of rank as follows:

0 or omitted Ascending

Non-zero Descending

@RANK returns the rank of a numeric argument E in the range R based on order O. If O is non-zero, the rank is equal to the position of the element if the list were sorted in ascending order, but if O is zero or omitted, the rank is equal to the position of the element if the list were sorted in descending order. Empty cells and text are ignored. Duplicate numbers will have the same rank.

Examples:

A1..A8 = 5,7,5,2,8,1,9,10

@RANK(A1..A8,7) = 4

@RANK(A1..A8,7,1) = 5


@RATE

Syntax: @RATE(FV,PV,N)

FV = future value of the investment

PV = present value of the investment

N = number of periods

@RATE returns the interest rate required to go from present value PV to future value FV in N compounding periods. The formula used is:1111

Examples:

@RATE(5000,3000,10) = .05

@RATE(H8,G8,B6) = .149, where B6 = 5, G8 = $5,000.00, and H8 = $10,000.00

@RATE(8700,-1000,3) = Error!, "PV" and "FV" must have the same sign


@RECEIVED

Syntax: @RECEIVED(S,M,I,D[,B])

S = Settlement date, date of purchase

M = Maturity date.

I = Investment amount

D = Discount rate

B = Day count basis as follows:

	0 or omitted		30/360
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@RECEIVED returns the value at maturity of a fully invested security. Dates must be entered as a serial date value.

Example:

@RECEIVED(@DATE(1993,1,15),@DATE(1993,6,15),,10000,12.5%,1) = 10545.323


@REGEX

Syntax: @REGEX(S1,S2)

S1 = a string value

S2 = a string value

@REGEX returns True (1) if the string S2 matches the pattern specified by the regular expression in string S1, and False (0) otherwise. This function is similar to @EXACT except it allows "wildcard" comparisons by interpreting S1 as a regular expression of the type used in the Find and Extract operations. For more information on regular expressions, see Shortcuts and Tools.

Examples:

@REGEX("t.p","top") = 1

@REGEX("t.*e","table") = 1

@REGEX("t.*e","talk") = 0

@REGEX("F[0-9]","F3") = 1

@REGEX("F[0-9","F3") = Error! Missing ]

@REGEX("a","apple") = 1

@REGEX("ab","apple") = 0


@REPEAT

Syntax: @REPEAT(S,N)

S = a string value

N = a numeric value

@REPEAT returns the string S repeated N times.

Examples:

Z1 = "There's no place like home."

@REPEAT(Z1,1) = "There's no place like home."

@REPEAT(Z1,3) = "There's no place like home.There's no place like home.There's no place like home."

@REPEAT(Z1,0) = " "


@REPLACE

Syntax: @REPLACE(S1,N1,N2,S2)

S1 = a string value

N1 = a numeric value

N2 = a numeric value

S2 = a string value

@REPLACE returns the string formed by replacing the N2 characters starting at position N1 in string S1 with string S2.

Examples:

@REPLACE("John",1,3,"ack") = "Jack"

@REPLACE(E1,8,3,"Log") = "Expense Logort", where E1 = "Expense Report"

@REPLACE(E1,8,6,"Log") = "Expense Log", where E1 = "Expense Report"

@REPLACE("ABC",0,0,"XYZ") = "XYZABC"


@REVERSE

Syntax: @REVERSE(S)

S = a string value

Returns the characters in string S in reverse order. The first is last, the last is first, etc.

Examples:

@REVERSE("ABCD") = "DCBA"


@RIGHT

Syntax: @RIGHT(S,N)

S = a string value

N = a numeric value

@RIGHT returns the string composed of the rightmost N characters of S. If N is greater than or equal to the length of S, then the entire string S is returned.

Examples:

F1 = "workstation"

@RIGHT(F1,1) = "n"

@RIGHT(F1,4) = "tion"

@RIGHT(F1,20) = "workstation"


@RMS

Syntax: @RMS(argumentlist)

argumentlist = any combination of numbers, cells, or ranges@RMS

@RMS returns the square root of the mean of squares of its arguments. Empty cells and cells containing strings are not counted.

Examples:

@RMS(2,2,3,6) = 3.6400549

@RMS(D1..D6) = 48.72029, where D1..D6 = 4, 56, 33, 100, 0, and -1


@ROUND

Syntax: @ROUND(X,n)

X = a numeric value

n = the number of decimal places or whole numbers, between -15 and 15

@ROUND returns X rounded to the number of decimal places specified by n (when n is positive); it returns X rounded to a whole number when n is negative.

Examples:

@ROUND(@PI,2) = 3.14

@ROUND(@COS(60),2) = -0.95

@ROUND(1234.5678,-2) = 1200


@ROW

Syntax: @ROW(C)

C = a cell or range. If C is omitted, the current row will be returned.

@ROW returns the row index of the cell referenced by C, or the top row if C is a range.

Examples:

@ROW(G42) = 42

@ROW(T10..V25) = 10

@ROW = 3, where @ROW is in cell B3.


@ROWS

Syntax: @ROWS(R)

R = a range

@ROWS returns the number of rows in the specified range.

Examples:

@ROWS(C4..C13) = 10


@S

Syntax: @S(R)

R = a range

@S returns the string value of the top left cell in range R, or a null string ("") if the cell is empty or contains a numeric value.

Examples:

Matrix A1..B3

                A      B
         1       1    electrons
         2       2    protons
         3       3    neutrons

@S(A1..B3) = " " @S(B1..B3) = "electrons" @S(A1..Z25) = " ", where A2 = $1,000,000.00

@SALARM

Syntax: @SALARM(X,S)

X = an expression

S = a string

@SALARM evaluates the string S as an expression if X evaluates non-zero. The return value is set to the result of evaluating expression S. If X evaluates to zero, S is not evaluated and the return value is zero. Unlike @ALARM, the terminal does not beep (silent alarm). @SALARM differs from @IF by taking a string argument whose contents are evaluated as an expression only when X is non-zero. Important in real-time control.

Examples:

@SALARM(Pressure > 500, "@REMOTE_FN(Pressure)") If "Pressure" exceeds 500, REMOTE_FN is called with the value of "Pressure".


@SEC

Syntax: @SEC(X)

X = a numeric value expressed in radians.

Return the secant of X


@SECH

Syntax: @SECH(x)

X = a numeric value expressed in radians.

Return the hyperbolic secant of x.


@SECOND

Syntax: @SECOND(DT)

DT = a date/time value

@SECOND returns the seconds (0 to 59) component of date/time value DT.

Examples:

@SECOND(.1000000) = 0

@SECOND(.8755342) = 46

@SECOND(.0645977) = 1


@SETSTRING

Syntax: @SETSTRING(string,len[,align])

Returns a string of length len with alignment align. The default alignment is 0. If the string is longer than len then the original string is returned. The valid alignments are:

	0 - Left-aligned.
	1 - Center-aligned.
	2 - Right-aligned.

@SHEET

Syntax: @SHEET(cellref)

The number of the sheet in a cell reference.


@SHEETS

Syntax: @SHEETS(range)

The number of sheets in a range.


@SIGMOID

Syntax: @SIGMOID(X)

X = a numeric value

@SIGMOID returns the value of the sigmoid function. The result is between 0 and 1.

Examples:

@SIGMOID(1) = 0.26894142

@SIGMOID(D14) = .5, where D14 = 0

@SIGMOID(T5) = 1.026188e-10, where T5 = 23.


@SIGN

Syntax: @SIGN(number)

Returns the sign of the number (1, 0, -1).


@SIN

Syntax: @SIN(X)

X = a numeric value expressed in radians.

@SIN returns the sine of the angle X. To convert the argument from degrees to radians, use the @RADIANS function.

Examples:

@SIN(1) = 0.841470984

@SIN(-2) = -0.90929743

@SIN(@RADIANS(R5)) = 0.70710678, where R5 = 45


@SINH

Syntax: @SINH(X)

X = a numeric value expressed in radians

@SINH returns the hyperbolic sine of angle X.

Examples:

@SINH(1) = 1.175201194

@SINH(O12) = -4.0218567, where O12 = -2.1

@SINH(A1/A2) = 0.521095305, where A1 = 1 and A2 = 2


@SLN

Syntax: @SLN(C,S,L)

C = cost

S = salvage value

L = allowable life

@SLN returns the straight-line depreciation allowance given cost C, salvage value S, and allowable life L.

Examples:

@SLN(5000,1500,15) = 233.333

@SLN(S10,S9,20) = 5, where S9 = 400 and S10 = 500

@SLN(500,1000,12) = error!, must have "Cost" >= "Salvage" >= 0


@SMALL

Syntax: @SMALL(R,N)

R = range of cells containing the numerical data

N = the nth position from the smallest in the range specified

@SMALL returns the Nth smallest number in range R. Cells that are empty or that contain text are ignored.

Examples:

A1..A9 = 1,4,8,3,7,12,54,8,23

@SMALL(A1..A9,3) = 4

@SMALL(A1..A9,1) = 1

@SMALL(A1..A9,@COUNT(A1..A7)) = 54


@SQRT

Syntax: @SQRT(X)

X = a numeric value

@SQRT returns the positive square root of X.

Examples:

@SQRT(100) = 10

@SQRT(@ABS(P9)) = 2, where P9 = -4

@SQRT(-3) = Error!, argument is negative


@SQRTPI

Syntax: @SQRTPI(number)

Returns SQRT(number*PI).


@SSE

Syntax: @SSE(argumentlist)

argumentlist = any combination of numbers, cells, or ranges

@SSE returns the sum squared error of its arguments. It is equivalent to @VAR(...) * @COUNT(...).

Examples:

@SSE(1.5,2.5,3.5,4.5) = 5

@SSE(-1.5,4.5,7.65,9.56) = 70.31


@SSQ

Syntax: @SSQ(argumentlist)

argumentlist = any combination or numbers, cells or ranges

@SSQ returns the sum of squares of its arguments. Empty cells and cells containing strings are not counted.

Examples:

@SSQ(2,2,3,6) = 53

@SSQ(G1..G4) = 132, where G1 = -8, G2 = -6, G3 = -4, and G4 = -4

@SSQ(D1..D6) = 14242, where D1..D6 = 4, 56, 33, 100, 0, and -1


@STD

Syntax: @STD(argumentlist)

argumentlist = any combination of numbers, cells, or ranges

@STD returns the population standard deviation (N weighting) of its arguments. Empty cells and cells containing strings are not counted.

Examples:

@STD(1,2,7) = 2.6246693

@STD(Y1..Y5) = 8.2316463, where Y1..Y5 = 22, 24, 29, 34, and 45

@STD(K6..K10) = 0.7076892, where K6..K10 = 1, .33, 0, -0.66, and -0.99


@STDS

Syntax: @STDS(argumentlist)

argumentlist = any combination of numbers, cells, or ranges

@STDS returns the sample standard deviation (N-1 weighting) of its arguments. Empty cells and cells containing strings are not counted.=121

Examples:

@STDS(1,2,7) = 3.2145503

@STDS(Y1..Y5) = 9.2032603, where Y1..Y5 = 22, 24, 29, 34, and 45

@STDS(K6..K10) = 0.79122058, where K6..K10 = 1, .33, 0, -0.66, and -0.99


@STRCAT

Syntax: @STRCAT(argumentlist)

argumentlist = any combination of numbers, cells, or ranges

@STRCAT returns the concatenation of all its arguments. For cell arguments, the actual formatted contents of the cell are used, even if the cell contains a numeric value.

Example:

@STRCAT("The bottom line is ",B3,"!") = "The bottom line is 1!", where B3 = 1

@STRCAT("The sum is ",@SUM(I1..I5) = "The sum is 4", where I1..I5 = 1, 1, -4, 0, and 6

@STRCAT("The Word is ",@PROPER(S3)) = "The word is Boston", where S3 = "Boston"


@STRING

Syntax: @STRING(X,N)

X = a numeric value

N = a numeric value

@STRING returns the string representing the numeric value of X, formatted to N decimal places, where N is in the range 0 to 15. The results are rounded.

Examples:

@STRING(2,4) = "2.0000"

@STRING("2",4) = "0.0000"

@STRING(@SUM(A1..A3),1) = "1.7", where A1 = 0.33, A2 = 0.55, and A3 = 0.77


@STRLEN

Syntax: @STRLEN(argumentlist)

argumentlist = any combination of numbers, cells, or ranges

@STRLEN returns the total length of all the strings in its argument list. It differs from @LENGTH in that it can take multiple arguments, but more significantly, it returns the length of the formatted contents of a cell, even if it contains a numeric argument.

Example:

@STRLEN("PHYSICS") = 7

@STRLEN(B1) = 34, where B1 ="Engineering Scientific Spreadsheet"

@STRLEN(A1) = 10, where A1 contains the value formatted as currency with two decimal places so that it appears on screen as $1,000.00 (plus a trailing space).


@SUBSTITUTE

Syntax: @SUBSTITUTE(string,old,new[,instance])

Substitutes the new pattern for the occurrences of the old pattern. If instance is not specified, all occurrences are substituted. If instance is specified, only that occurrence number is substituted.


@SUM

Syntax: @SUM(argumentlist)

argumentlist = any combination of numbers, cells, or ranges

@SUM returns the sum of its arguments. Empty cells and cells containing strings are not counted.

Examples:

@SUM(10,20,30,40,50) = 150

@SUM(L1..L3) = 15.10564, where L1 = 1.32342, L2 = 5.45735, and L3 = 8.32487

@SUM(A1,B1,C1,D1) = 0, where A1 = -1, B1 = -9, C1 = 9, and D1 = 1


@SUMNEGATIVE

Syntax: @SUMNEGATIVE(list)

Returns the sum of the negative values in the list. List can contain ranges, single cells, or expressions.


@SUMPOSITIVE

Syntax: @SUMPOSITIVE(list)

Returns the sum of the positive values in the list. List can contain ranges, single cells, or expressions.


@SUMPRODUCT

Syntax: @SUMPRODUCT(R1,R2)

R1 = a vector

R2 = a vector

@SUMPRODUCT returns the sum of products of two vectors. R1 must have the same number of rows and columns as R2, or R1 and R2 can be one-dimensional vectors of the same length.

Examples:

Matrix 1, D4..E5

               D       E
          4     2       3
          5     4       6

Matrix 2, D7..E8

               D       E
          7    -5       0
          8     2       8

@SUMPRODUCT(D4..E5,D7..E8) = 46
@SUMPRODUCT(D4..D5,D7..E7) = -10
@SUMPRODUCT(A1..A2, M1..P4) = Error!, incompatible range dimensions

@SUMSQ

Syntax: @SUMSQ(list)

Returns the sum of the squares of the values in the list. List can contain ranges, single cells, or expressions.


@SUMXMY2

Syntax: @SUMXMY2(range1,range2)

Returns the sum of squares of the differences of corresponding elements in the ranges. Range1 and Range2 must have conforming sizes.


@SUMX2MY2

Syntax: @SUMX2MY2(range1,range2)

Returns the sum of the squares of the values in the first range minus the sum of the squares of the values in the second range. (SUM(X(I)**2-Y(I)**2). Equal to SUMSQ(range1) - SUMSQ(range2) but ensures that both ranges are conforming sizes.


@SUMX2PY2

Syntax: @SUMX2PY2(range1,range2)

Returns the sum of the squares of the values in the first range plus the sum of the squares of the values in the second range. (SUM(X(I)**2+Y(I)**2). Equal to SUMSQ(range1) + SUMSQ(range2) but ensures that both ranges are conforming sizes.


@SYD

Syntax: @SYD(C,S,L,P)

C = cost

S = salvage value

L = allowable life

P = the period for which the depreciation allowance is being calculated

@SYD returns the "sum-of-years-digits" depreciation allowance given cost C, salvage value S, allowable life L, and depreciation period P. +1+12

Examples:

@SYD(5000,1500,15,14) = 58.333

@SYD(S10,S9,20,2) = 9.048, where S9 = 400 and S10 = 500

@SYD(2500,750,0,5) = Error!, "Life" must be > 0


@T

Syntax: @T(N,T)

N = a numeric value

T = a numeric value

@T returns the integral of Student's T-distribution with N degrees of freedom from minus infinity to T.

Examples:

@T(14,35) = 1

@T(F3,G6) = 0.8411029, where F3 = 500, and G6 = 1

@T(C1,C2) = Error!, degrees of freedom must be > 0, where C1 = 0 and C2 = -1


@TAN

Syntax: @TAN(X)

X = a numeric value expressed in radians

@TAN returns the tangent of angle X.

Examples:

@TAN(1) = 1.554707725

@TAN(Y1) = 1.619775191, where Y1 = 45


@TANH

Syntax: @TANH(X)

X = a numeric value expressed in radians

@TANH returns the hyperbolic tangent of angle X. The result is between -1 and 1.

Examples:

@TANH(0) = 0

@TANH(G4) = 0.454216432, where G4 = .49

@TANH(X8) = -1, where X8 = -30


@TBILLEQ

Syntax: @TBILLEQ(S,M,D)

S = Settlement date

M = Maturity date

D = Discount rate of Treasury bill

@TBILLEQ returns the bond-yield equivalent (BEY) for a Treasury Bill equivalent to a bond, given settlement date S, maturity date M, and discount rate D. Dates must be expressed as serial date values. If the term is one half-year or less, BEY is equivalent to an actual/365 simple interest rate. If the term of the security is more than one-half year, BEY is equivalent to a semiannually compounded Treasury bond yield.

Examples:

@TBILLEQ(@DATE(1993,3,31),@DATE(1993,6,20),9.14%) = 0.09462

@TBILLEQ(@DATE(1993,3,31),@DATE(1993,12,15),9.14%) = 0.09819


@TBILLPRICE

Syntax: @TBILLPRICE(S,M,D)

S = Settlement date

M = Maturity date

D = Discount rate of Treasury bill

@TBILLPRICE returns the price per $100 face value for a Treasury bill, given settlement date S, maturity date M, and discount rate D. Dates must be expressed as serial date values.

Example:

@TBILLPRICE(@DATE(1993,4,2),@DATE(1993,7,5),9.25%) = 98.5847


@TBILLYIELD

Syntax: @TBILLYIELD(S,M,D)

S = Settlement date

M = Maturity date

D = Discount rate of Treasury bill

@TBILLYIELD returns the yield on a treasury bill, given settlement date S, maturity date M, and discount rate D. Dates must be expressed as serial date values.

Example:

@TBILLYIELD(@DATE(1993,4,2),@DATE(1993,7,5),97.585) = 0.09478


@TERM

Syntax: @TERM(P,R,FV)

P = amount of periodic payments

R = interest rate

FV = future value of the investment

@TERM returns the number of payment periods for an investment given the periodic payment P, the interest rate R and future value FV.

Examples:

@TERM(1050,0.105,300000) = 34.39

@TERM(R13,RATE,S19) = 16.48, where R13 = 360, S19 = 15000, and RATE is a named cell = 11%

@TERM(100,0.095,-1) = error!, "P" and "FV" must have same sign


@TEXT

Syntax: @TEXT (X, S)

X = A numeric value

S = A format string

Formats the value X value using the picture format string S. It returns a string with the value converted to the specified format.

The string S contains a picture defining how to format the value. It is the same format as User Defined Formats, except that the color information is ignored.


@TIME

Syntax: @TIME(H,M,S)

H = hour

M = minute

S = second

@TIME returns the time value represented as a fraction of a day, starting at midnight. H must be between 0 and 23, and M and S must be between 0 and 59.

Examples:

@TIME(12,0,0) = 0.5, where 0.5 represents half of a day, which is noon

@TIME(8,45,46) = 0.36511574

@HOUR(@TIME(C1,D1,E1)) = 13, where C1 = 13, D1 = 40, and E1 = 2


@TIMEVALUE

Syntax: @TIMEVALUE(S)

S = a string value

@TIMEVALUE returns the corresponding time value for a given string value S. The function interprets the times specified in the following formats:

	
HH:MM:SS   AM or PM		(1 <= HH <=12)
HH:MM:SS			(0 <= HH <=23)
HH.MM.SS			(0 <= HH <=23)
HH,MM,SS			(0 <= HH <=23)
HHhMMmSSs		(0 <= HH <=23)

The first format is the international 12-hour AM/PM time format. All others are international 24-hour time formats.

In all formats the seconds (SS) may be omitted, in which case they default to 00.

In all formats the hours may be specified with 1 or 2 digits, while the minutes (MM) and seconds (SS) must be 2 digits.

The following are equivalent:


        @TIMEVALUE("12:55:00 AM")
        @TIMEVALUE("12:55 am")
        @TIMEVALUE("00:55:00")
        @TIMEVALUE("00:55")
        @TIMEVALUE("00,55,00")
        @TIMEVALUE("0.55.00")
        @TIMEVALUE("0h55m00s")

The result is 0.038194444

@TODAY

Syntax: @TODAY

@TODAY returns the date value corresponding to the current system date.

Examples:

@DATE(@TODAY) = 33139, where 33139 represents September 23, 1990

@MONTH(@TODAY) = 9


@TRANSPOSE

Syntax: @TRANSPOSE(M)

M = a matrix

@TRANSPOSE generates the transpose of the numeric matrix M.

Examples:

Matrix B9..C10

             B    C
         9    1    3
        10    2    4

@TRANSPOSE(B9..C10) =

                     1    2
                     3    4

Matrix  A1..B4

             A    B
         1   .99    0
         2    3    6.2
         3   4.1   1.1
         4   3.3   6.3

@TRANSPOSE(A1..B4) = 

                    .99    3    4.1    3.3
                     0    6.2   1.1    6.3

@TRANSPOSE(B17) = Error!, improper argument type

@TREND

Syntax: @TREND(NX, KX, KY)

NX = range for new x values for which TREND will return corresponding y values

KX = known x values

KY = known y values

@TREND fits a straight line to KX (known x's) and KY (known y's) using least square method, and then returns the y values along the line for NX (new x's).

Example:

                  B            C
         10    X values    Y values
         11        1          242
         12        2          256
         13        3          263
         14        4          274
         15        5          279
         16        6          285
         17        7          290
         18        8
         19        9
         20       10

@TREND(A1..A2, B11..B17, C11..C17) = 

                             301
                             308.7857
                             316.5714

@TRIM

Syntax: @TRIM(S)

S = a string value

@TRIM returns the string formed by removing leading, trailing and consecutive embedded spaces from string S.

Examples:

@TRIM(" Alpha Beta Gamma ") = "Alpha Beta Gamma"


@TRUE

Syntax: @TRUE

@TRUE returns the value 1.

Examples:

@TRUE = 1

@IF(B17 == 0,@TRUE,@FALSE) = 1


@TTEST

Syntax: @TTEST(R,X)

R = a range

X = a numeric value

@TTEST returns the significance level (alpha) of the two-sided single population T-test for the population samples contained in the range R. Alpha is the probability of error in rejecting the null hypothesis that mean [R]=X.

Examples:

@TTEST(A1..A4,B1) = 0.12093936, where A1..A4 = .5, .98, .22, .1, and B1 = .87,

@TTEST(H5..H9,K5) = 0.0039514106, where H5..H9 = 14, 35, 37, 0, 33, and K5 = 67

@TTEST(V1..V10,W1..W10) = Error!, improper argument type


@TTEST2EV

Syntax: @TTEST2EV(R1,R2)

R1 = a range

R2 = a range

@TTEST2EV returns the significance level (alpha) of the two-sided dual population T-test for the population samples contained in the ranges R1 and R2 under the assumption that the population variances are the same. Alpha is the probability of error in rejecting the null hypothesis that mean[R1] = mean[R2] assuming var[R1] = var[R2].

Examples:

@TTEST2EV(A1..A4,B1..B4) = 0.71153758, where A1..A4 = .5, .98, .22, .1, and B1..B4 = .87, .6, .21, .49.

@TTEST2EV(H5..H9,K5..K9) = 0.0061236, where H5..H9 = 14, 35, 37, 0, 33, and K5..K9 = 67, 77, 94, 34, 99.


@TTEST2UV

Syntax: @TTEST2UV(R1,R2)

R1 = a range

R2 = a range

@TTEST2UV returns the significance level (alpha) of the two-sided dual population T-test for the population samples contained in the ranges R1 and R2 without assuming that the population variances are the same. Alpha is the probability of error in rejecting the null hypothesis that mean[R1] = mean[R2], assuming var[R1] and var[R2] are unrelated.

Examples:

@TTEST2UV(A1..A4,B1..B4) = 0.71306706, where A1..A4 = .5, .98, .22, .1, and B1..B4 = .87, .6, .21, .49.

@TTEST2UV(H5..H9,K5..K9) = 0.0083561, where H5..H9 = 14, 35, 37, 0, 33, and K5..K9 = 67, 77, 94, 34, 99.


@UPPER

Syntax: @UPPER(S)

S = a string value

@UPPER returns the string S converted to uppercase characters.

Examples:

@UPPER("New York") = "NEW YORK"

@UPPER(H7) = "POPULAR VOTE", where H7 = "popular vote"


@VALUE

Syntax: @VALUE(S)

S = a string value

@VALUE returns the numeric value represented by string S, or 0 if S does not represent a number.

Examples:

@VALUE("324.399") = 324.399

@VALUE(G10) = 1.7, where G10 = "1.7"

@VALUE(M8) = 0, where M8 = "cosine"


@VAR

Syntax: @VAR(argumentlist)

argumentlist = any combination of numbers, cells, or ranges

@VAR returns the population variance (N weighting) of its arguments. Empty cells and cells containing strings are not counted. =12

Examples:

@VAR(1,2,7) = 6.8888889

@VAR(Y1..Y5) = 67.76, where Y1..Y5 = 22, 24, 29, 34, and 45

@VAR(K6..K10) = 0.500824, where K6..K10 = 1, .33, 0, -0.66, and -0.99


@VARS

Syntax: @VARS(argumentlist)

argumentlist = any combination of numbers, cells, or ranges

@VARS returns the sample variance (N-1 weighting) of its arguments. Empty cells and cells containing strings are not counted.

Examples:

@VARS(1,2,7) = 10.333333

@VARS(Y1..Y5) = 84.7, where Y1..Y5 = 22, 24, 29, 34, and 45

@VARS(K6..K10) = 0.62603, where K6..K10 = 1, .33, 0, -0.66, and -0.99


@VDB

Syntax: @VDB(C,S,L,S,E)

C = the initial cost of the asset

S = salvage value (the value at the end of the depreciation)

L = life (the total number of periods over which the asset is being depreciated)

S = start period (first period in the calculation)

E = end period (last period in the calculation)

@VDB returns the depreciation of an asset between two specific period using the fixed-declining balance method.

Examples:

@VDB(10000,500,120,2,4) = 319.6289


@VECLEN

Syntax: @VECLEN(argumentlist)

argumentlist = Any combination of numbers, cells or ranges

@VECLEN returns the square root of the sum of squares of its arguments. It calculates the length of a vector in N-dimensional space. In the two-argument case, @VECLEN is the Pythagorean theorem for the hypotenuse of a right triangle, given the length of the other two sides.

Examples:

@VECLEN(3,4) = 5

@VECLEN(-1,-2,-3,0) = 3.7416574

@VECLEN(A1..A2) = 2 where A1 = 1 and A2 = 2.236068

@VECLEN(S1..S3,4) = 5.4772256,where S1 = 1, S2 = 2, and S3 = 3


@VERIFY

Syntax: @VERIFY(string,valid)

Returns the number of the first character in string that is not contained in the list of valid characters. The number returned is 0-based as in the FIND() function. If all characters in the string are found in the list of valid characters, VERIFY returns the length of the string.


@VLOOKUP

Syntax: @VLOOKUP(X,R,N)

X = a numeric or string value

R = a range

N = a numeric value

@VLOOKUP searches the first column (known as the index column) in range R for the numeric or string value which "matches" X, and returns the value N columns to the right in the row where the match is found. The index column is searched from top to bottom. If the column contains numeric values, they must be in ascending order, and cannot contain an empty cell.

If X is a string value, an exact match must be found or an error is returned.

If X is a numeric value, the matching row is determined by the following rules:

  1. Strings and empty cells in the index column are ignored.
  2. If the first value in the index column is greater than X, an error is returned.
  3. Searching stops when a numeric value which is greater than or equal to X is found in the index column. If the value found is greater than X, the preceding row is the matching row.

Examples:

                  A              B
           1    Lodging        $85.00
           2    Meals          $30.00
           3    Airfare       $698.00
           4    Entertainment  $25.00

@VLOOKUP("Meals",A1..B4,1) = 30

@VLOOKUP("Airfare",A1..B4,1)) = Error - @VLOOKUP, lookup failed to produce a match

@VLOOKUP("Airfare",A1..B4,2)) = Error - @VLOOKUP, column out of range


@VSUM

Syntax: @VSUM(argumentlist)

argumentlist = any combination of numbers, cells or ranges

@VSUM returns the "visual sum" of its arguments. This function differs from @SUM in that it uses the precision and rounding of the actual formatted values appearing in the cells instead of the internal double-precision value of the cell. This ensures that what you see is what you get when calculating a sum.

Examples:

@VSUM(L1..L3) = .99 where L1 = 1/3, L2 = 1/3, and L3 = 1/3 and are displayed with two decimal places


@WEEKDAY

Syntax: @WEEKDAY(D)

D = serial date value

@WEEKDAY returns an integer representing the day of the week on which the day D falls. 1 is Sunday, 7 is Saturday.

Examples:

@WEEKDAY(@DATEVALUE("2/25/1994")) = 6

@WEEKDAY(34466) = 5


@WORKDAY

Syntax: @WORKDAY(S,D[,H])

S = Serial start date value

D = Number of days before (negative) or after (positive) start date

H = Cell or range of cells containing serial date values to exclude

@WORKDAY returns the serial day value that is D working days after day S (if D is positive) or D working days before day S (if D is negative),excluding weekends and all holidays specified as dates in range H.

Examples:

@WORKDAY(@DATE(1991,1,1),5,B1..B2) = 33249 or 01/11/1991, where A1..A2 = @DATEVALUE("1/7/1991"), @DATEVALUE("1/8/1991")

@WORKDAY(@DATE(1993,1,1),258,A1..A5) = 34334n or 12/31/1991, where A1..A5 = @DATEVALUE("1/1/1993"), @DATEVALUE("5/25/1993"), @DATEVALUE("7/4/1993"), @DATEVALUE("9/3/1993"), @DATEVALUE("11/28/1993")


@XHLOOKUP

Syntax: @HLOOKUP(F,X, R, N)

F = a filename (as a string)

X = a numeric or string value

R = a range

N = a numeric value

@XHLOOKUP is the same as @HLOOKUP except that it has an extra argument.which specifies the file containing the spreadsheet where the lookup table is located. The range argument can be a range specification or a string which contains a range specification to be evaluated in the context of the external spreadsheet file.

Example:

=@XHLOOKUP("table.xs5",1,"input",3)


@XIRR

Syntax: @XIRR(G,V,D)

G - a guessed value of the result

V - a range containing a series of cash flows

D - a range containing the dates of cash flows in V

@XIRR returns the internal rate of return for a series of cash flows (V) with variable intervals (D). V and D must be one-dimensional ranges and have the same size.

Example:

A B 1 02/01/91 -12000 2 05/01/91 2800 3 10/01/91 3250 4 02/01/92 4460 5 04/01/92 5000 @XIRR(0.5,B1..B5,A1..A5) = 0.3632


@XNPV

Syntax: @XNPV(R,V,D)

R - discount rate to apply to the cash flows

V - a range containing a series of cash flows

D - a range containing the dates of cash flows in V

@XNPV returns the net present value for a series of cash flows (V) with variable intervals (D). V and D must be one-dimensional ranges and have the same size.

Example:

A B 1 01/10/91 -12000 2 04/01/91 3000 3 09/30/91 4150 4 01/10/92 3300 5 04/01/92 3150 @XNPV(9.00%,B1..B5,A1..A5) = 705.1677


@XOR

Syntax: @XOR(argumentlist)

argumentlist = any combination of numbers, cells, or ranges

@XOR returns -1 if any argument is not 0 or 1; otherwise 1 if the total number of arguments with the value 1 is odd; 0 if the total number of arguments with the value 1 is even. Text and empty cells are ignored.

Examples:

A1 = 1, B1 = 1, C1 = 0, D1 = 0, E1 = 1 and A2 = 24

@XOR(A1,B1) = 0

@XOR(A1..E1) = 1

@XOR(A1..A2) = -1


@XVALUE

Syntax: @XVALUE(N,C)

N = a string containing the pathname of another spreadsheet file

C = a valid cell reference, #, or string

@XVALUE returns the value of cell C in sheet saved as file N.. When the cell reference C is the same as the cell containing the @XVALUE function, use the hash mark (#) as the second argument. If C is a string containing a range name, that name is resolved in the workbook specified by N. If sheet N is currently loaded into another instance of XESS or some other spreadsheet program and you change a value, you must first save sheet N then recalculate the sheet containing the @XVALUE function to retrieve the new value entered into sheet N.

Examples:

@XVALUE("controls.xs5",A1) returns the value of cell A1 from the sheet saved as the file controls.xs5 in your default directory when the @XVALUE function is stored in a cell other than A1.

@XVALUE("controls.xs5",#) returns the value of cell A1 from the sheet saved as the file controls.xs5 in your default directory when the @XVALUE function is stored in cell A1. =@XVALUE("table.xs5","Sheet3!C5") =@XVALUE("sales1997.xs5","Q4.total")


@XVLOOKUP

Syntax: @HLOOKUP(F,X, R, N)

F = a filename (as a string)

X = a numeric or string value

R = a range

N = a numeric value

@XVLOOKUP is the same as @VLOOKUP except that it has an extra argument.which specifies the file containing the spreadsheet where the lookup table is located. The range argument can be a range specification or a string which contains a range specification to be evaluated in the context of the external spreadsheet file.

Example:

=@XVLOOKUP("table.xs5",1,"input",3)


@YEAR

Syntax: @YEAR(DT)

DT = a date/time value

@YEAR returns the years component of the date/time value DT.

Examples:

@YEAR(24203) = 1966, where 24203 represents April 6, 1966

@YEAR(@TODAY) = 1999, where TODAY = December 31, 1999


@YEARFRAC

Syntax: @YEARFRAC(S,E[,B])

S = a date value that represents the start date

E = a date value that represents the end date

B = (Optional) The day count basis to be used. Omitted is treated as 0.

0 30/360

1 Actual/actual

2 Actual/360

3 Actual/365

@YEARFRAC returns the year fraction representing the number of whole days between S (start date) and E (end date). This function is useful in calculating the percent of benefit or obligation to assign a specific period.

Examples:

@YEARFRAC(@DATE(1994,1,1),@DATE(1994,5,30),0) = 0.4167

@YEARFRAC(@DATE(1994,1,1),@DATE(1994,5,30),1) = 0.4110

@YIELD

Syntax: @YIELD(S,M,R,PR,RD,F[,B])

S = settlement date

M = maturity date

R = annual coupon rate of the security

PR = the price of the security per $100 face value

RD = redemption value of the security at maturity per $100 face value

F = the number of coupon payments per year (frequency):

	1		annual
	2		semi-annual
	4		quarterly

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@YIELD returns the yield at maturity of a security that pays periodic interest. All dates must be entered as serial date value.

Example:

@YIELD(@DATE(1991,3,15),@DATE(1998,10,15),6%,94.1854,100,2,0) = 0.07


@YIELDDISC

Syntax: @YIELDDISC(S,M,PR,RD[,B])

S = settlement date

M = maturity date

PR = the price of the security per $100 face value

RD = redemption value of the security at maturity per $100 face value

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@YIELDDISC returns the annual yield for a discounted security. All dates must be entered as serial date value.

Example:

@YIELDDISC(@DATE(1993,3,1),@DATE(1993,5,1),98,875,100,0) = 0.06827


@YIELDMAT

Syntax: @YIELDMAT(S,M,I,R,PR[,B])

S = settlement date

M = maturity date

I = issue date

R = interest rate at date of issue

PR = the price of the security per $100 face value

B = (Optional) the day count basis to be used:

	0 		30/360  (Default)
	1		Actual/actual
	2		Actual/360
	3		Actual/365

@YIELDMAT returns the annual yield of a security which pays interest at maturity. All dates must be expressed as serial date values.

Examples:

@YIELDMAT(@DATE(1993,3,1),@DATE(1993,10,1),@DATE(1992,11,5), 6.5%,99.875,0) = 0.06585



Defining the Appearance of Cells

XESS gives you considerable control over the appearance of the workbook, letting you change many characteristics such as the cell format, font family, type, size and colors. This allows you to customize the entire XESS work environment to suit your application and personal preferences.

Additionally, what you see on the display is essentially what you get when the sheet is printed to a PostScript printer which supports colors and fonts.

Spreadsheet Appearance

In determining how to display and print the body of the spreadsheet, XESS relies on:

Defaults and Preferences

Start-up Defaults

Whenever you invoke XESS, it looks for an optional X resource file which contains application defaults that control the spreadsheet appearance and environment.

While XESS maintains a set of "fallback" definitions internally, you may wish to change the local resources (start-up defaults) to suit your preferences. Start-up defaults which can be changed that affect the spreadsheet appearance include:

Workbook Defaults and Sheet Attributes

Cell Defaults and Workbook Defaults are global definitions that affect the entire workbook, defining such attributes as cell format, font, and alignment. By changing the default options, you can affect all cells in the workbook.

Default characteristics are viewed and changed using the Cell Defaults dialog box and the Workbook Defaults dialog box available from the Options menu.

You may save a workbook template of these settings which are then used as the default whenever you create a new workbook. Simply set the desired options and save the workbook with the name xess_template.xs5.

Workbook Defaults
Workbook Defaults define the options which apply to the overall display, processing, and printing of the sheets in a workbook. Sheet Attributes allow modification of some attributes on a sheet-by-sheet basis.

To change default workbook settings:

  1. Select Workbook Defaults from the Options menu. XESS displays the Workbook Defaults dialog box.
  2. Change any of the values.
  3. Apply your selection by clicking OK or Apply.
Sheet Attributes
Sheet attributes are initially set to the values specified in Workbook Defaults. Certain sheet attributes can be over-ridden on a sheet-by-sheet basis using the Sheet Attributes dialog box.

To change sheet attributes:

  1. Select Sheet Attributes from the Options menu. XESS displays the Sheet Attributes dialog box.
  2. Change any of the values.
  3. Apply your selection by clicking OK or Apply.

Cell Defaults

Cell Defaults define the general appearance of the cells in the workbook. They are set globally that is, they affect all the cells in all the sheets in the workbook..

The Cell Defaults that you can set include:

These defaults change all cells, rows, or columns in the workbook that are not already explicitly assigned attributes.

To change Cell Default settings: Select Cell Defaults from the Options menu. XESS displays the Cell Defaults dialog box.

  1. Change the desired options.
  2. Apply your selection by clicking OK or Apply.

Workbook Defaults versus Individual Cell Attributes

Cell attributes affect selected cells, rows, or columns, which are then treated as exceptions to the settings defined by the Workbook Defaults and the Cell Defaults. Cell attributes are set using the Format menu.

As an alternative to using the Format menu, you can change individual cell formats and attributes using the toolbar or the mouse button 3 (MB3) popup menu.

When you apply formats to specific cells, you do not interfere with the global defaults or the appearance of other cells in the workbook


Cell Border Defaults Dialog

The Cell Border Defaults Dialog lets you set the default styles and colors to be used for cell borders. These defaults are used the the Cell Border Dialog.

Highlight Options

Highlight Options specify how to display those cells whose calculation results fall into any of three categories:

You may choose distinct background and foreground colors to flag these results for all cells in the workbook. These colors override any colors already in the cells:

These colors are applied to the entire sheet and override those selected by Cell Colors for individual cells.

To set the highlight options:

  1. Select Highlight Options from the Options menu. XESS displays the Highlight Options dialog box.
  2. Click the check button beside the option to activate or deactivate the feature for any or all of the three conditions.
  3. Set the background and/or foreground color for each condition by pointing to the designated option button and holding down the left mouse button. Position the mouse on the color of choice and release.
  4. Apply your selection by clicking OK or Apply

Cell Formats

XESS lets you define how the cell contents are displayed in the cell. This includes the type of format category (such as fixed or date) and number of decimal places when applicable. The default for the whole sheet is changed in the Cell Defaults dialog box from the Options menu. However, you can control the format used in an individual cell or range of cells by using the Cell Format dialog box from the Format menu, Toolbar, or Mouse Button 3 (MB3) Popup menu

You can only choose one format; when you make a selection, XESS automatically turns off the previous selection.

To change default Cell Format:

  1. Select Cell Defaults from the Options menu. XESS displays the Cell Defaults dialog box.
  2. Click the Cell Format and/or Decimal Places option button to select the desired format.
  3. Apply your selection by clicking OK or Apply.

To change the Cell Format for individual cells using the menu:

  1. Select a cell or range of cells to be affected.
  2. Select Cell Format from the Format menu or MB3 popup menu. XESS displays the Cell Format dialog box.
  3. Click the Cell Format and/or Decimal Places option button to select the desired format.
  4. If you are defining a Custom format, modify the additional fields.
  5. Apply your selection by clicking OK or Apply.

You can also click on the Format and Decimals icon buttons on the toolbar.

Format Types

Scientific
Displays the number in scientific notation (exponent form) with N significant digits.
Fixed
Displays the number using a fixed number of decimal places, specified by N.
General
Displays the number in fixed format or scientific notation, whichever fits. Trailing zeros are not displayed.
Dollars
Displays the number with a leading $ sign and with comma delimiters, as in $1,000,000. Negative values are displayed in parentheses.
Currency
Displays the number using the relevant currency settings from the workstation's Locale.
Custom
Displays the number using the combination of specification from the Custom dialog which allows you to override all settings defined by Locale.
Comma
Displays the number with comma delimiters, as in 1,000,000. Negative values are displayed in parentheses.
Percent
Display the number as a percentage, multiplying it by 100. For example, the value .1 is displayed as 10.00%.
Fraction
Displays the non-integer part of a number as a fraction instead of decimal.
MM/DD/YY
Displays the integer portion of a date/time value in the format 08/01/99.
DD-MMM-YY
Displays the integer portion of a date/time value as a Gregorian date, in the format 08-Aug-91.
MMM-YY
Displays the integer portion of a date/time value in the format Aug-99.
DD-MMM
Displays the integer portion of a date/time value in the format 08-Aug.
YY-MM-DD
Displays the integer portion of a date/time value in the format 99-08-01.
YYYY-MM-DD
Displays the integer portion of a date/time value in the format 2000-01-01.
DD.MM.YY
Displays the integer portion of a date/time value in the format 01.08.99.
HH:MM
Displays the fractional portion of a date/time value in the format 06:15.
HH:MM:SS
Displays the fractional portion of a date/time value in the format 06:15:30.
Hex
Displays the integer portion of the number in base 16 with a leading 0x indicator. For example, the value 30.5 would be displayed as 0x1e.
Logic
Displays 0 as 0, displays 1 as 1, and displays all other values as ? .
Hidden
Cell contents are not displayed.
Text
Displays the characters which were entered to create the cell rather than the resulting value of the cell.

Decimal Places

XESS lets you define how many decimal places to display, but stores and uses the full, double-precision value for calculations. Decimal places are considered part of the Format specification.

When the Cell Format selected is Default, the number of decimal places is defined by the Cell Defaults dialog, not by the Toolbar or the Cell Format dialog.

Custom Formats

You can define multiple Custom Formats. These formats complement the single locale-specific Currency format defined in the Locale dialog on the Options menu. Custom formats let you easily control many aspects of how a numeric value is displayed.

You can define as many Custom Formats as you need for you application. Custom Formats are saved with the workbook.

While primarily designed for defining multiple currencies in the same workbook, this feature also gives you control over how negative numbers are displayed, what characters are used for the decimal point and thousands separator, and where these are displayed relative to each other.

User Defined formats and the @TEXT function provides additional methods for formatting values for display in the sheet. They let you design your own formats using a shorthand notation. These formats are particularly useful for displaying date and time values.

User Defined Formats

User Defined formats provide the most control and customization of the way values are displayed in cells. By using a picture prototype, you can format the value of cells in sophisticated ways. You can choose from a selection of format definitions based on the current value of the cell and you can control the foreground color of the result.

The @TEXT function uses a subset of these definitions, ignoring those that affect color.

The format string may contain any of the following operators. These operators are replaced with the appropriate values in the result string.

Numbers:

#
Ouput significant digits
0
Ouput significant digits or zeros
.
Output the decimal point
,
Output a comma separator
%
Output number as percent including percent character
Text and Insertion:
@
Output the value if it is text; otherwise, output nothing.
"..."
Ouput the text between the quotes
Dates and Times
yy
Output the last two digits of the year
yyy
Output the last two digits of the year if it meets the rule for this workbook; otherwise output all 4 digits of the year.
yyyy
Output all four digits of the year.
m
If seen after an h or hh operator, output the minutes in 1-digit format if the minutes are less than 10, or in 2-digit format if the minutes are between 10 and 59.

If seen at any other time, output the month in 1-digit format if the month is less than 10, or in 2-digit format if the month is between 10 and 12.

[m]
Elapsed time in minutes.
mm
If seen after an h or hh operator or before an s or ss operator, then output the minutes in 2-digit format.

If seen at any other time, output the month in 2-digit format.

mmm
Output the month abbreviation.
mmmm
Output the full month name.
d
Output the day in 1-digit format if the day is less than 10, or in 2-digit format if the day is between 10 and 31.
dd
Output the day in 2-digit format.
ddd
Output the abbreviation of the day of the week.
dddd
Output the full name of the day of the week.
h
Output the hour in 1-digit format if the hour is less than 10, or in 2-digit format if the hour is between 10 and 23.
hh
Output the hour in 2-digit format.
[h]
Elapsed time in hours
s
Output the second in 1-digit format if the second is less than 10, or in 2-digit format if the second is between 10 and 59.
ss
Output the second in 2-digit format.
[s]
Elapsed time in seconds
a/p
Output a if the hour is between 0 and 11, or p if the hour is between 12 and 23. If this format specifier is present, the hour will always be displayed using the 12-hour clock (0-12).
am/pm
Output am if the hour is between 0 and 11, or pm if the hour is between 12 and 23. If this format specifier is present, the hour will always be displayed using the 12-hour clock (0-12).
A/P
Output A if the hour is between 0 and 11, or P if the hour is between 12 and 23. If this format specifier is present, the hour will always be displayed using the 12-hour clock (0-12).
AM/PM
Output AM if the hour is between 0 and 11, or PM if the hour is between 12 and 23. If this format specifier is present, the hour will always be displayed using the 12-hour clock (0-12).
\
Escape the normal meaning of the next character and write it as an immediate literal to the output string.
Spaces (blanks) in the format string are preserved in the result string. Examples: @TEXT(@NOW, "dddd\, mmmm d") might return "Monday, October 19"
Conditional Definitions
You can define different formats to be used based on the value being formatted. This is done by specifying a list of condition and format pairs separated by semi-colons. For example:

             [>0]#0.00+;[<0]#0.00-;

places a trailing plus or minus character following the value, has at least one digit before the decimal point, and displays 0 values as blank. When formatting a value, the conditionals are evaluated from the left, comparing the value against the simple test conditions. The first test that is true determines the format to be used. The comparisons must be against constants. A single format may have many conditionals.

Because the comparisons with zero are so common, you may omit them when there are no other comparisons. Based on the number of formats specified, the default comparisons are:


                [all]
                [>=0] ; [<0]
                [>0] ; [<0] ; [=0]
                [>0] ; [<0] ; [=0] ; [text]


If only a single format is given, it is used for all values specified. In this case only, a minus character is inserted before negative values in numeric formats. The [all] and [text] items above cannot be specified directly; they are applied internally by default.

User defined formats allow you to control the foreground (or font) color of the cell, possibly dependent on its value. The color names or codes are placed within square brackets, separate from the test conditions. A typical use of this is to highlight values in a certain range.


      [>=1000][Color 3]#;[>=500][Color 5]#;[>0][Color 4]#;"ERROR"
      
The color numbers shown correspond to the XESS color palette. Color names, such as [Blue], use colors predefined on your system. Depending on your system, these names may be case sensitive.

      #;[Red]-#;#

Fonts

XESS allows you to select fonts to define the appearance of the spreadsheet on the display in addition to the default type of printed output. These fonts are defined by three font characteristics: family, style, and size.

The default font settings for the whole workbook are modified with the Cell Defaults dialog box from the Options menu. However, you can control the font characteristics for the individual cell or range of cells by using the Font Family, Font Style, and Font Size options from the Format or MB3 popup menus.

XESS allows you to assign font characteristics which consist of family, style, and size.

Standard Font Families

The following families are supported:

Additional or alternative fonts can be defined using the resource file.

Font Style

The following styles are supported.

Font Size

The following sizes are supported:

Additional font sizes can be defined using the resource file.

User-defined Fonts

In addition to the standard fonts defined in XESS, you may specify up to seven (7) other font families of choice. These user-defined fonts must be specified in the XESS resource file.

Changing Fonts

To change the default Font characteristics:
  1. Select Cell Defaults from the Options menu. XESS displays the Cell Defaults dialog box.
  2. Click the Font Family option button and select the desired font family.
  3. Click the Font Style option button and select the desired font style.
  4. Click the Font Size option button and select the desired font style.
  5. Apply your selection by clicking OK or Apply.

To change the Font characteristics for individual cells:

  1. Select a cell or range of cells to be affected.
  2. To change font family, select Font Family from the Format menu or MB3 popup menu to display a cascading menu of available choices. Choose a font family or choose default to use the default setting from Cell Defaults.
  3. To change font style, select Font Style from the Format menu or MB3 popup menu to display a cascading menu of available choices. Choose a font style or choose default to use the default setting from Cell Defaults.
  4. To change font size, select Font Size from the Format menu or MB3 popup menu to display a cascading menu of available choices. Choose a font size or choose default to use the default setting from Cell Defaults.

Underlining Cell Contents

XESS allows you to underline (single or double) the contents of one or more cells. The default for the whole sheet is changed in the Cell Defaults dialog box from the Options menu. However, you can set the underline option for an individual cell or range of cells by using the Underline option from the Format menu, Toolbar underline toggle button, and MB3 popup menu.

To change the default Underline specification:

  1. Select Cell Defaults from the Options menu. XESS displays the Cell Defaults dialog box.
  2. Click the Underline option button and select one of: On to enable single underline Off to disable underlining Double to enable double underline
  3. Apply your selection by clicking OK or Apply.

To change the Underline setting for individual cells:

  1. Select a cell or range of cells to be affected.
  2. Select Underline from the Format menu or MB3 popup menu to display a cascading menu of choices. Choose one of:
    Default to use the cell default setting
    On to enable single underline
    Off to disable underlining
    Double to enable double underline

Alternatively, you can click the underline toggle button icon on the toolbar to cycle through Off/Single/Double options.

Strikethrough

Text in a cell can be displayed with strikethrough -- a single line drawn through the middle of the characters in the cells.

To change the default Strikethrough specification:

  1. Select Cell Defaults from the Options menu. XESS displays the Cell Defaults dialog box.
  2. Click the Strikethrough option button and select one of:
    On to make strikethrough the default
    Off to disable strikethrough
  3. Apply your selection by clicking OK or Apply.

To change the Strikethrough setting for individual cells:

  1. Select a cell or range of cells to be affected.
  2. Select Strikethrough from the Format menu or MB3 popup menu to display a cascading menu of choices. Choose one of:
    Default to use the cell default setting
    On to set strikethrough attribute
    Off to clear strikethrough attribute

Aligning Cell Contents

Horizontal Alignment
XESS allows you to indicate the horizontal alignment (justification) of one or more cells. This specification applies to both text and numeric cell entries and indicates whether the contents will be left-alignment, right-alignment, or centered within the column boundary.

The default for the whole sheet is changed in the Cell Defaults dialog box from the Options menu. However, you can set the alignment for an individual cell or range of cells by using the Alignment option from the Format menu, Toolbar icon buttons, or MB3 popup menu.

To change the default Alignment specification:

  1. Select Cell Defaults from the Options menu. XESS displays the Cell Defaults dialog box.
  2. Click the Alignment option button and select one of the following:
    Automatic Text is left aligned; numerics are right-aligned
    Right Text and numerics are right-aligned
    Left Text and numerics are left-aligned.
    Center Text and numerics are centered.
  3. Apply your selection by clicking OK or Apply.

To change the Alignment setting for individual cells:

  1. Select a cell or range of cells to be affected.
  2. Click the desired alignment icon button on the Toolbar.

- OR -

Select Alignment from the Format menu or MB3 popup menu to display a cascading menu of choices. Choose an explicit setting or choose default to use the default setting from Cell Defaults.

One additional option, Center Selection, allows text to be centered over a group of cells.

To use Center Selection:

  1. Enter the text in the left-most cell of the group of cells.
  2. Select the group of cells over which to center the text.
  3. Select the columns to be centered over.
  4. Select Alignment>Center Selection.
Vertical Alignment
XESS allows you to indicate the vertical alignment (justification) of one or more cells. This specification applies to both text and numeric cell entries and indicates whether the contents will be aligned with the top of the cell, the bottom of the cell, or centered vertically within the cell.

The default for the whole sheet is changed in the Cell Defaults dialog box from the Options menu. However, you can set the vertical alignment for an individual cell or range of cells by using the Vertical Alignment option from the Format menu or MB3 popup menu.

To change the default Vertical Alignment specification:

  1. Select Cell Defaults from the Options menu. XESS displays the Cell Defaults dialog box.
  2. Click the Vertical Alignment option button and select one of the following: Top Contents aligned with the top of cell Bottom Contents aligned with bottom of cell Center Contents are vertically centered.
  3. Apply your selection by clicking OK or Apply.

To change the Vertical Alignment setting for individual cells:

  1. Select a cell or range of cells to be affected.
  2. Click the desired alignment icon button on the Toolbar.
- OR -
Select Vertical Alignment from the Format menu or MB3 popup menu to display a cascading menu of choices. Choose an explicit setting or choose default to use the default setting from Cell Defaults.

Orientation

The orientation of text, numbers, and computed values in a cell is controlled by the Orientation option of the Format menu. The cell content can have an orientation of Horizontal, Vertical, or rotated 90 degrees in either direction from the horizontal. Rotated Up means reading from bottom to top; Down, top to bottom.

Wrapping Text Within Cell Boundary

XESS allows you to wrap text in a cell which would normally overflow into the adjacent cell or be truncated if the adjacent cell is not empty. Wrapped text is displayed on subsequent lines within the cell, aliasing over adjacent cells as needed and allowed.

The default for the whole sheet is changed in the Cell Defaults dialog box from the Options menu. However, you can set the wrap option for an individual cell or range of cells by using the Wrap option from the Format menu or MB3 popup menu.

To change the default Wrap specification for all cells:

  1. Select Cell Defaults from the Options menu . XESS displays the Cell Defaults dialog box.
  2. Click the Wrap option button and select one of: On to enable text wrapping Off to disable text wrapping
  3. Apply your selection by clicking OK or Apply.

To change the Wrap setting for individual cells:

  1. Select a cell or range of cells to be affected.
  2. Select Wrap from the Format menu or MB3 popup menu to display a cascading menu of choices. Choose an On/Off setting or choose default to use the default setting from Cell Defaults.

Colors and Patterns

XESS allows you to specify background and foreground colors for both protected and unprotected cells. The default for the whole sheet is changed in the Cell Defaults dialog box from the Options menu. However, you can set color for an individual cell or range of cells by using the Cell Color option from the Format menu or MB3 popup menu.
Palette
The color palette displayed whenever you choose to assign or change the color may consists of up to 63 colors. The default colors and the size of the color palette displayed in XESS are defined in the XESS resource file by the symbol *DialogColors and can be modified.
Assigning cell colors and patterns
To change the Color setting for individual cells:
  1. Select a cell or range of cells to be affected.
  2. Select Cell Color from the Format menu or MB3 popup menu. XESS displays the Cell Colors dialog box.
  3. Click the Foreground option button and select a color for the text or numbers displayed in the selected cell(A1).
  4. Click the Background option button and select a color for the background in the selected cells. (This can be used for either Protected or UnProtected cells.)
  5. Click the Pattern option button and select a background pattern, if desired. If a pattern is specified, click the Pattern Color option button and select the color of the pattern foreground.
  6. Apply your selection by clicking OK or Apply.
Default Cell Colors
To change the default Color specification:
  1. Select Cell Defaults from the Options menu. XESS displays the Cell Defaults dialog box.
  2. Click the Foreground option button and select a color for the text or numbers displayed in all protected cells.
  3. Click the Background option button and select a color for the background in all protected cells.
  4. Click the Pattern option button and select a background pattern, if desired. If a pattern is specified, click the Pattern Color option button and select the color of the pattern foreground.
  5. Click the UnProtect FG option button and select a color for the text or numbers displayed in all unprotected cells.
  6. Click the UnProtect BG option button and select a color for the background in all unprotected cells.
  7. Apply your selection by clicking OK or Apply.

If Check Protection is set to OFF in Sheet Default, UnProtect FG and UnProtect BG have essentially no visible impact.


Cell Borders

You can place horizontal and vertical borders around a cell or range of cells. These borders are visible on the display and in printed output, and are saved with the sheet. Cell borders can be any of the colors in the color palette and can be of a variety of styles.

There are two typical ways to use cell borders. The first places borders around each cell. The second places a single border around a group of cells.

To place borders on each cell in a range of cells:

  1. Select the range of cells. If nothing is selected, the current cell is affected.
  2. Choose Cell Borders... from the Format menu.
  3. In the Cell Borders dialog, choose the color and border style for the left, right, top, and bottom borders. The default border style is no border. Click OK.

To place an outline border around a range of cells:

  1. Select the range of cells. If nothing is selected, the current cell is affected.
  2. Choose Cell Borders... from the Format menu.
  3. In the Cell Borders dialog, choose the color and border style for the outline. Click OK.

Row and Column Attributes

This section describes how to:

Column Width

By default, XESS creates columns that are twelve (12) positions wide. You can use the Workbook Defaults dialog box to change this default for the workbook, creating a uniform set of columns of some user-specified width.

You can also set individual columns to be wider or narrower than the default by using the Column Width option under the Format menu or MB3 popup or by simply dragging the column border with the mouse.

Setting Column Width with Menus

To change the default column width:
  1. Select Workbook Defaults from the Options menu. XESS displays the Workbook Defaults dialog box.
  2. Enter a number from 1.00 to 255.00 in the Default Column Width entry box.
  3. Apply your entry by clicking OK or Apply.

To explicitly set the width of selected columns:

  1. Select the column(s) you wish to change.
  2. Select Column Width from the Format menu or MB3 popup menu which displays its cascading submenus.
  3. Select Column Width... from the submenus. XESS displays the Column Width dialog box.
  4. In the Selection entry box, enter the desired column width (1 - 255).
  5. Apply your entry by clicking OK or Apply.

To restore the original default column width to selected columns:

  1. Select the column(s) you wish to reset to the default.
  2. Select Column Width from the Format menu or MB3 popup which displays its cascading submenus.
  3. Select Default Column Width from the submenu.

Best Fit Column Width

XESS provides a snap-to mechanism which forces the column width to best fit the cell contents. This provides a dependable mechanism to ensure no text is being truncated and that wasted space is minimized. This is particularly useful when combined with the Text Wrap feature.

These two features together allow you to define a column width to achieve optimal page layout and force long text strings to wrap within the column bounds rather than be truncated or overflow into the adjacent cell. Then you can use the snap-to mechanism to adjust the row height to accommodate the wrapped text.

To snap column width to best fit cell contents:

  1. Select the column(s) you wish to adjust.
  2. Select Column Width from the Format menu or MB3 popup which displays its cascading submenus.
  3. Select Snap Width to Contents from the submenu.

Dragging the Column Border

You may change the column width dynamically, by dragging the right column border to the desired width. If you drag the border to the left past the beginning of the column, then the column is hidden.

Content Exceeds Column Width

When the contents of a cell containing a non-numeric entry exceeds the column width, one of two things will occur. If the adjacent cell to the right is empty, the displayed content will overflow into the adjacent cell. If the cell the the right is not empty, the displayed content will appear truncated. You may want to use the Wrap option to force the long string to wrap at the cell boundary.

When the column width of a cell is too narrow such that it cannot display a numeric entry completely, XESS alerts you to this condition by showing a bold cell border in the truncated cell. If truncation occurs to the left, the left cell border is highlighted. If the truncation occurs to the right, the right cell border is highlighted. (Cell Alignment determines whether the truncation occurs on the left or the right.)


Row Height

By default, XESS creates rows that are "one unit" in height. A unit is defined to be the space needed to store a numeric zero. You can use the Workbook Defaults dialog box to change this default for the workbook, creating a uniform set of rows of some user-specified height.

You can also set individual rows to be wider or narrower than the default by using the Row Height option under the Format menu or by simply dragging the row border with the mouse.

Setting the Row Height Using Menus

To change the default row height:
  1. Select Workbook Defaults from the Options menu. XESS displays the Workbook Defaults dialog box.
  2. Enter a number in the Default Row Height entry box.
  3. Apply your entry by clicking OK or Apply.

To explicitly set the height of selected rows:

  1. Select the rows(s) you wish to change.
  2. Select Row Height from the Format menu or MB3 popup which displays its cascading submenus.
  3. Select Row Height... from the submenus. XESS displays the Row Height dialog box.
  4. In the Selection entry box, enter the desired row height.
  5. Apply your entry by clicking OK or Apply.

To apply the default row height to selected rows:

  1. Select the row(s) you wish to adjust.
  2. Select Row Height from the Format menu or MB3 popup which displays its cascading submenus.
  3. Select Default Row Height from the submenu.

Best Fit Row Height

XESS provides a snap-to mechanism which forces the row height to best fit the cell contents.

To snap row height to best fit cell contents:

  1. Select the row(s) you wish to adjust.
  2. Select Row Height from the Format menu or MB3 popup which displays its cascading submenus.
  3. Select Snap Height to Contents from the submenu.

Dragging the Row Border

You may change the row height dynamically, by dragging the lower row border to the desired width within the maximum height allowed. If you drag the bottom border up past the top of the row, then the row is hidden.

Content Exceeds Row Height

If font size or multiple lines of text in the same cell cause the cell content to exceed the row height, one of two things will occur. If the first line in the cell is too tall, the displayed contents will overflow above into adjacent empty cells; additional lines overflow down into adjacent cells. (This is sometimes referred to as aliasing.)

If the adjacent cell is not empty, the displayed content will appear truncated. You may want to use the Snap-to option to force the row height to accommodate the tall text or multiple lines of text in the same cell.

Inserting Rows and Columns

While creating or changing sheets, you may need to add new rows or columns. XESS makes this very easy to do with the Insert operation from the Edit menu. The Insert operation creates new, empty row(s) or column(s) at the current location in the sheet. Existing rows and columns are re-indexed to take the additional rows and columns into account. XESS updates all cell references in formulas to match the new row or column addresses.

To insert new, empty rows:

  1. Move the cell cursor to the row above which you would like to insert an empty row. To insert more than one row, select a range containing the number of rows you wish to insert starting at that position.
  2. Select Insert from the Edit menu or MB3 popup to display its cascading submenu.
  3. Select Insert Row from the Insert submenu.

To insert new, empty columns:

  1. Move the cursor one column to the right of where you want to insert an empty column. To insert more than one column, select a range containing the number of columns you wish to insert starting at that position.
  2. Select Insert from the Edit menu or MB3 popup to display its cascading submenu.
  3. Select Insert Column from the Insert submenu.

Inserting Cells by Row or by Column

Sometimes it is convenient to insert a block of new cells into the sheet with other cells being moved right or down to make room for the new cells.

To insert cells by row:

  1. Select the range where the new cells will be inserted.
  2. Click Insert Cells by Row on the Edit menu. A block of empty cells are inserted and previous values are moved down.
To insert cells by column:
  1. Select the range where the new cells will be inserted.
  2. Click Insert Cells by Column on the Edit menu. A block of empty cells are inserted and previous values are moved right.

Deleting Rows and Columns

XESS lets you delete rows and columns that you no longer need, along with any data in those columns. The Delete operation in the Edit menu deletes the current row or column and causes the remaining rows or columns to be re-indexed to reflect the deletion. XESS updates all cell references in formulas accordingly.

If you delete a row or column, the data in the deleted row or column is lost, but all dependencies in the sheet are preserved. The ranges which span the deleted row are contracted to prevent inclusion of unwanted cells.

To delete a row(s):

  1. Select the row(s) to be deleted.
  2. Select Delete from the Edit menu or MB3 popup to display its cascading submenu.
  3. Select Delete Row from the Delete submenu.

To delete a column(s):

  1. Select the column(s) to be deleted.
  2. Select Delete from the Edit menu or MB3 popup to display its submenu.
  3. Select Delete Column from the Delete submenu.

Deleting Cells by Row or by Column

A block of cells can be deleted with other cells being moved up or left to "fill in" the empty space.

To delete cells by row:

  1. Select the range of cells to be deleted.
  2. Click Delete Cells by Row on the Edit menu. The selected cells will be deleted and the cells below it will be moved up to fill the space.
To delete cells by column:
  1. Select the range of cells to be deleted.
  2. Click Delete Cells by Column on the Edit menu. The selected cells will be deleted and the cells to the right of it will be moved left to fill the space.

Hiding Rows and Columns

You can completely hide rows and columns. With this new feature, you are able to eliminate them from the display while they remain accessible behind the scenes. For instance, if you hide column B, you see A,C,D,E... on the display. Column B and its contents still exists; it is just not visible on the displayed and printed output.

To hide a range of columns using the Hide Columns operation:

  1. Select the column or columns to be hidden.
  2. Choose Column Width... from the Format menu. XESS displays the list of options.
  3. Choose Hide Column.

To unhide a range of columns using the Unhide Columns operation:

  1. Select a range of columns which includes the ones that are hidden.
  2. Choose Column Width... from the Format menu. XESS displays the list of options.
  3. Choose Unhide Column.

If you have hidden rows/columns at the edge of the sheet, position the cursor in the first row or column that is not hidden and then unhide. For example, the column A is hidden, place the cursor in column B and Unhide Column to restore A.

Rows and columns can also be hidden by dragging their button borders (described above).

Creating View Titles

Users often reserve the top rows of a sheet for descriptive column headings and the leftmost columns for descriptive row titles. However, when you scroll right or down in a large sheet, you can no longer view these headings, just the row and column indices (AA, 125, etc.).

XESS supports three variations of view titles: row headings, column heading, row and column headings. The text for view titles is entered before the view is protected with the Lock View Titles operation. After view titles are set, the cursor will no longer move into that area. When you lock a view title, XESS changes the applicable border color from to designate the locked area.

To make a change to data in a view title area, select Create New View from the View menu which displays a secondary view area without the view title locks. You can make the changes in the secondary window which are automatically reflected in the view with the title locks.

Column View Titles

When the cell cursor is in column A, the Lock View Titles option from the View menu establishes a number of protected rows from the row above the cell cursor to the top of the sheet for view titles. The view title scrolls with the view from left to right but remains in the same position at the top of the sheet as you scroll up and down.

To create column view titles:

  1. Use your usual method (keyboard, mouse, or import operations) to enter text for column titles.
  2. Move the cursor to the row immediately below the last row to be included in the Column View Title. For example, if column headings occupy Rows 1 through 4, move the cursor to Row 5.
  3. Select Lock View Titles from the View menu.

All rows above the cell cursor are highlighted and protected as a title area.

Row View Titles

When the cell cursor is in Row 1, the Lock View Titles option from the View menu establishes one or more protected columns beginning with the column to the left of the cell cursor to the left edge of the sheet to serve as view titles. The view title scrolls with the view as you scroll up and down but remains in the same position at the left of the sheet as you scroll right and left.

To create row view titles:

  1. Use your usual method (keyboard, mouse, or import operations) to enter text for row headings.
  2. Move the cursor to the column immediately to the right of the rightmost column to be included in the Row View Title. For example, if row headings occupy Columns A and B, move the cursor to Column C.
  3. Select Lock View Titles from the View menu.

All columns to the left of the cell cursor are highlighted and protected as a title area.

Row and Column View Title

When the cell cursor is in the body of the sheet the Lock View Titles option from the View menu establishes one or more protected rows and columns above and to the left of the current cursor position to serve as view title.

To create both title rows and title columns:

  1. Use your usual method (keyboard, mouse, or import operations) to enter text for row and column headings.
  2. Move the cursor to the row immediately below and to the column to the right of the desired title area.
  3. Select Lock View Titles from the View menu.

All columns and rows above and to the left of the cell cursor are highlighted and protected as a title area. When you scroll down, the column view titles will remain onscreen; when you scroll right the row view titles will remain onscreen.

Unlocking View Titles

To unlock any view title, select Unlock View Titles from the View menu. The cell which was the anchor for the view title becomes the upper-left corner of the display.

Tools

XESS tools, available from the Tools menu, perform special tasks, including:

These are powerful features that give you control over the spreadsheet beyond the logic embedded in cells. For instance, you can create what-if scenarios, asking XESS what value is required to achieve a certain outcome. You can quickly identify patterns in research data, and sort the data by criteria you select. You can visualize your data in the manner most useful to you, then discard the new view or save it under a new name, preserving the original workbook intact.

Recalculate

Forces a recalculation of the workbook.

Cell Protection

Sets or clears the cell protection for the specified range of cells.

Transpose

It is often useful to be able to swap the row and column orientation of a set of cells. The Transpose tool performs this operation. For example, assume the following data is selected:

             A      B      C
    1      One    Two    Three
    2        10     20     30

in A1..C3 and the Transpose>Copy Values places the result beginning at cell A5. The result would be:

             A      B
    5      One      10
    6      Two      20
    7      Three    30

The Transpose tool works in ways similar to the Copy and Move commands on the Edit menu. With Transpose>Move and Transpose>Copy Formulas, the cell and range references are adjusted appropriately.

Data Fill Tool

The Data Fill tool provides a convenient way to assign values to a a range of cells by extending a pattern or completing a series. For example, Monday, Tuesday would extend with Wednesday, Thursday and 15-Jan, 15-Apr would extend with 15-Jul, 15-Oct, 15-Jan.

To use Data Fill:

  1. Enter the values for the first cells in range. (Enough cells to define the pattern)
  2. Select the range to contain the sequence of values, including the cells containing the initial pattern.
  3. Select Data Fill from the Tools menu (or Ctrl+d). The pattern of values will be extended to the entire selection.

Goal Seek

In many types of analysis, even in simple budget preparation, you may need to vary a cell value until a chosen cell reaches a target value. In XESS this process is called goal-seeking and is accomplished using an iterative technique.

Using this method, XESS usually finds the desired value in two or three iterations for linear relationships, more for higher-order dependencies.

To perform Goal Seek:

  1. Select Goal Seek from the Tools menu. XESS displays the Goal Seek dialog box.
  2. Enter the following specifications in the entry boxes:
    Variable Cell
    The name or address of the cell value to change.
    Target Cell
    The name or address of the cell containing the target value.
    New Value
    The value to be reached.
  3. Click Start to begin the search. XESS performs the calculation and displays the results on screen, with the Goal Seek dialog box still displayed. If necessary, you can move the Goal Seek dialog box to view the results of the goal seek operation.
  4. Click Cancel to exit the Goal Seek dialog.

If the value of the target cell does not respond to changes in the variable cell, XESS stops goal seek, delivers an error message, and restores the sheet to its original values.

If the target value is not reached in ten (10) iterations, goal seek pauses and enables the Continue button allowing you to choose whether or not to continue with the goal seek operation.


Solver

While the Goal Seek tool is adequate for many simple problems, the Solver tool is designed for complex problems with many variables and many constraint rules. The target cell may be solved for a maximum, a minimum, or a specific value. Some problems have many solutions, others have none.

Constraints are rules that must be met in order to have a valid solution to the problem. They restrict the posible values a cell may have and define the relationships among cells which must be maintained in the solution. Example constraints are:


         A3 > 20
         revenue > expenses

To use the Solver:

  1. Select Solver... from the Tools menu. XESS displays the Solver dialog box.
  2. Enter the following specifications in the entry boxes:
    Target Cell
    The name or address of the cell that is the target of the solution.
    Seek to:
    The goal to be reached - min, max, or specific value.
    Variable Cell(s)
    The names or addresses of the cells whose values will be changed when searching for a solution.
    Constraint(s):
    The current constraints for this problem. You can click on an existing constraint and then Delete it.
    Add Constraint:
    Enter a new constraint rule here and then click Add.
  3. Click Start to start the solver. XESS performs the calculations and displays the intermediate results on the cells, with the Solver dialog box still displayed. You can modify your constraints and restart the Solver.
  4. Click Cancel to exit the Solver dialog.

The SOLVER will stop when the target cell is not changing in response to changes in the variable cells, when the value is reached (within the precision you specify), or when computational errors are encountered.

A given problem might have many solutions or it might have none. It may have localized maxima or minima that meet the specified criteria and prevent the solver from finding better solutions. In these situations, your choices for the initial values of the variable cells often affect which solution is found by the SOLVER.


Sort

XESS can sort the rows of a range into ascending or descending order based on the values in specified columns. Before sorting a range of cells, consider these rules that XESS follows for sorting:

If you specified that XESS not update cell references during the sort:

To sort a range of cells:

  1. Select Sort... from the Tools menu. XESS displays the Sort dialog box for you to enter the specifications of the sort.
  2. Make the following entries in the Sort dialog box:
    Range	Type the addresses of opposite corners 
    		of the range to be sorted, separated by 
    		one or two periods (e.g.  A1..D1) or use 
    		the mouse to select the range and paste it 
    		in with the middle mouse button.  If you 
    		selected a range before choosing the Sort 
    		operation, XESS enters this range by 
    		default.
    Key 1		Enter the address of a cell in the 
    		column on which to base the sort. 
    		For example, to sort by the
    		contents of column B starting at
    		row 2, enter B2.  If you enter a
    		range, XESS 	uses the leftmost
    		column of the range.
    Key 2		Enter the address of a cell on which to  
    Key 3		sort if two or more values in the primary 
    Key 4		column are the same.  If you enter a 
    Key 5		range, XESS uses the leftmost column of 	
    		the range.
    
  3. Click on the check button labeled Descending to sort the column values in descending order. By default, XESS sorts in ascending order.
  4. Click off the check button labeled Update References if you do not want to update cell references once the sort is complete. By default XESS updates all cell references.
  5. Select Exclude Header Row if you want to prevent the top row of the selection range from being sorted.
  6. You can change the collating sequence with respect to upper/lower case and accented/unaccented characters by selecting one from each of the corresponding list box selections as follows:
    
    Case 
         Lower case after all upper case
         Lower case after corresponding upper 
         Lower case with corresponding upper (case ignored)
    
    Accented Characters
         Accents after all unaccented 
         Accents after corresponding unaccented
         Accents with corresponding unaccented (accents ignored)
    
    
  7. Click OK or Apply to proceed. XESS sorts the cells and displays the results. Apply leaves the Sort dialog displayed on the screen.

Use the Undo Sort operation from the Edit menu, MB3 popup, or the X icon on the toolbar to cancel the most recent sort operation. All cells are returned to their unsorted locations.


Extract

Extract is a facility for managing internal databases. Internal databases consist of records stored as rows. Extract allows you to selectively retrieve a set of records based on a selection criteria.

To Extract a range of cells:

  1. Select Extract from the Tools menu. XESS displays the Extract dialog box.
  2. Enter the following specifications:
    Source Range
    Enter the range of records from which extract will be performed.
    Key
    Specify the key column cell address on which you want to base the extract. This column represents "#" in a constraint expression specified in Filter.
    Destination
    Enter the beginning cell address where the extracted records will be placed.
    Filter
    Specify the string or value as it would appear formatted in the cell. To find a numeric value that meets a certain criteria, enter the Filter with a constraint expression. For example to extract values less than 20, specify the Filter as #<20.
    1. To extract a character string, type the string inside the Filter entry box as it would appear when formatted in the cell. Example:
      		Doe,  John
      
      
    2. To extract a numeric value, either a constant or a calculated value, type the value exactly as it would appear formatted in the cell. Example:
      		
      		$1,000,000
      
      
    3. To extract numeric values that meet certain criteria, enter the target with a constraint expression. # is used to represent the current cell being examined. Select Numeric Search. For example:

      To find values less than 20, specify the target as

      	 #<20
      
      

      To find values greater than or equal to 50, specify the target as

      	#>=50
      
      

      To find cells whose values are less than 600 and whose neighboring cells in the same column have values less than 500, specify the target as: #<600 && #{0,-1}<500 && #{0,1}<500

      To find the cell containing the date August 22, 1991, specify the target as:

      	 #==@DATE(1991,8,22)
      
      
    4. Click on the check button labeled Numeric Comparison if you are using a numeric find pattern.
    5. Use the Ignore case toggle button to determine whether or not upper/lower case is taken into consideration with the Extract operation. If you wish to find both upper and lower case occurrences of alphabetic characters, click the toggle button on to Ignore case. Otherwise, if this toggle button is off, the Extract operation will be case sensitive.
    6. Use the Ignore accents toggle button to determine whether or not accents used in the extended character set are taken into consideration with the Extract operation. If you wish to find both unaccented and accented occurrences of the same alphabetic character, click the toggle button on to Ignore accents. Otherwise, if this toggle button is off, the Extract operation will differentiate between accented and unaccented characters.
  3. Click OK or Apply to begin.. XESS will extract the data and place it in the destination range. Apply leaves the Extract dialog displayed on the screen.
  4. Click Cancel to quit Extract.

Use the Undo Extract operation from the Edit menu, MB3 popup, or the X icon on the toolbar to cancel the most recent extract operation. All cells are returned to their original state before the extract.


Overlay Editor Drawing Tool

The Overlay Editor is invoked from either the toolbar icon or by the Overlay... on the Tools menu. It provides the ability to draw on the face of a sheet with figures, lines, and text. These items are saved with the sheet and are displayed on top of cell contents.

The Overlay Editor dialog contains eight icons and several selection options. Clicking on an icon places you in a drawing mode. (These icons have tips associated with them.) The icon for the currently selected action is displayed in reverse video. The icons have the following meanings:

    Send Object to Back           Select Object
    Draw Line                     Draw Text
    Draw Hollow Rectangle         Draw Filled Rectangle
    Draw Hollow Oval              Draw Filled Oval

The selection options control colors, patterns, and fonts. The Foreground Color is used to draw text, lines, and outlines. The Background Color is used to draw the background of filled objects. The Pattern Color is used to draw the foreground of fill patterns. The Font Family, Font Style, and Font Size control drawing text objects.

Overlay Attachment defines how the object is attached to the sheet and when it is visible:

Creating Overlay Objects - Drawing on the Sheet

To draw an overlay item on the sheet:
  1. Click on the icon for the desired item in the Overlay Editor and select the desired settings for colors, patterns and fonts.
  2. Press MB1 (left mouse button) at the desired starting point on the display, drag until the desired line, rectangle, or oval is drawn, and release the mouse button.
  3. Additional items of the same type may be drawn without re-selecting the operation.

To convert rectangles and ovals into squares and circles, press the [Shift] while drawing or resizing the object.

To enter text on the sheet:

  1. Select Draw Text.
  2. Click the left mouse button at the desired starting location in the sheet for the text
  3. Begin typing the text string.
  4. Press [Enter] when done.

Modifying Overlay Objects

Attributes of overlay objects can be modified in several ways.

To change the shape of an object:

  1. Click the Selection Icon in the Overlay Editor.
  2. Click on the object in the sheet view. The selected object is now displayed with selection points at its edges/corners.
  3. Position the mouse over a selection point until the mouse pointer changes shape. Hold the left mouse button down while positioned over this point and drag the mouse to reshape the object.
  4. Release the mouse button. Additional selections can now be made.

To modify object attributes:

  1. Click the Selection Icon in the Overlay Editor.
  2. Click on the object in the sheet view. The selected object is now displayed with selection points at its edges/corners.
  3. Select the appropriate attributes (e.g. color, font) for the object and click Apply. The object now has the new attributes.

To move a Text object:

  1. Click the Selection Icon in the Overlay Editor.
  2. Click on the text object in the sheet view. The selected text object is now displayed with an anchor point before its left-most character.
  3. Use the left mouse button to drag the text object to the desired location.
  4. Release the mouse button.

Deleting Overlay Objects

To delete an overlay object from a sheet:
  1. Click the Selection Icon in the Overlay Editor.
  2. Click on the object in the sheet view. The selected object is now displayed with selection points at its edges/corners.
  3. Click Delete in the Overlay Editor.

Workbook Statistics Dialog

The Workbook Statistics dialog displays the number and size of various components of the current workbook.

Search and Replace

Replace

To use the Replace operation:
  1. Select Replace... from the Search menu or press the [F3] key. XESS displays the Replace dialog box.
  2. In the Replace dialog box, make the following entries to complete out the Replace operation:
    Search Range
    Specify the range of cells in which XESS should search, by entering two corner coordinates (e.g. A1..D87). The default range is the entire workbook. If a range was selected when you invoked the Replace operation, the default is the selected range.
    Search For
    Specify the string or value as it would appear formatted in the cell. Refer to Target Criteria with the Find operation for more details.
    Replace With
    Specify the string or value with which you which to replace the "Search For" string or value.
  3. By default, the order in which XESS searches is row by row. Change the selection box to Search by Column to start searching column by column.
  4. Select Text Comparison or Regular Expression to indicate whether the Find operation does character comparisons or whether it evaluates numeric and logical expressions.
  5. Use the Replace Text In toggles to further define the scope of the replacement. Click the options on or off.
  6. Use the Compare Options toggles to define whether case and accents should be ignored and whether text searches should be restricted to whole word boundaries.
  7. Use the Replace All toggle to determine whether a global replace is to be done.
  8. To start the replace, select Apply or OK. To find and replace the next occurrence, select Replace Next (Meta + F3) from the Search menu. To find and replace all remaining occurrences, select Replace All from the Search menu.

Replace Next

To replace the next occurrence of the value or string being replaces, select the Replace Next option from the Search menu. Alternatively, press Meta+F3 key to repeat the replacement. The Replace operation (described above) must precede the Replace Next operation.

Replace All

To replace all remaining occurrences of the value or string being replaced, select the Replace All option from the Search menu.

Interacting with Other Programs and Files

XESS interacts with other applications in two distinctly different ways:

Static Data Exchange

XESS Import and Paste operations let you import data from other programs, such as spreadsheets and tabular text reports. This data is static, meaning that it is inserted into the current XESS workbook but is no longer affected by calculations and manipulations that take place in the source program.

Similarly, you can use Export and Paste operations to export static data to other programs. This data can be used by the other program but is no longer affected by calculations and manipulations that take place in XESS.

Dynamic Data Exchange

XESS can establish dynamic (live) links with specific cells in Excel, Lotus, and XESS workbook/spreadsheet files saved on disk such that each linked cell value is automatically retrieved when the XESS workbook is first opened and with each XESS calculation.

Dynamic links to other spreadsheet files is provided directly in XESS formulas. The external filename qualifies the cell or range reference.

If the linked-to workbook is also openned by the current invocation of XESS, then the referencing formulas are recalculated automatically when the referenced cells change, even when they are in different workbooks.

Importing Data into an XESS Workbook

The Import, Export, and Paste operations are used for transferring static data. This section explains how to use XESS in partnership with other X Windows applications, including how to:

XESS can load spreadsheet files stored in WKS, WK1, WK3/WK4, and XLS formats, plus spreadsheet files stored in XESS formats. These operations handle formulas, values, formatting, and global settings. You can also save XESS workbooks in WKS, WK1, WK3, XLS or XESS formats for use in applications that recognize those formats.

XESS can also import values in text files and HTML files and export XESS spreadsheet data as files, to be used by other programs. Import operations are an efficient way to bring information into XESS without the risk of error associated with retyping everything.

Obviously, there are many occasions when it makes sense to import data from other programs, for example:

Loading Spreadsheet Files

Loading Microsoft Excel and Lotus 1-2-3 Files
XESS loads and saves WKS/WK1/WK3/WK4 and XLS format spreadsheets just as it does its own format. Use the Open... and Save... operations and specify the desired file type for the spreadsheet.

When opening WK*/XLS files, XESS loads the entire WK* or XLS file including its formulas and formatting. Note that there are differences between spreadsheet programs, so you may have to modify certain formulas or cells to get the spreadsheet to work properly in XESS.

You can open most spreadsheet files without difficulty, but those with complex interactions that use macros or certain functions may require some modification. Here are some principal differences between typical WK* and XLS spreadsheet programs and XESS:

To load an existing WK*/XLS file:

  1. Select Open... from the File menu and display its submenu.
  2. Click the File Format option button and select WKS, WK1, WK3, or XLS.
  3. Click on the Selection entry box and type the name of the file you wish to open, or select a file by highlighting its name in the Files list.
  4. To select a different directory, double-click on the directory name in the Directories list. XESS then displays the names of files in that directory in the Files list.
  5. Click OK to complete the operation and load the file.

To load only part of a WK*/XLS file, create a temporary workbook that contains only the desired data, and import the temporary workbook instead of the full original.

To load the data into an existing XESS workbook with other data, open both workbooks and then copy the desired data from one XESS workbook to the target workbook.

Importing Data from Other XESS Spreadsheets
Of course, an XESS spreadsheet can import data stored in XESS format, using either of two options:

Both methods transfer formats, fonts and formulas. For each method, XESS updates cell references as appropriate. However, if the exported range contained references to cells outside the range, it may have errors when imported into another spreadsheet.

Importing Data Using the Import Cells Operation
The Import/Cells operation imports an XESS-format file that was created with a prior Export/Cells operation. The default file extension for cells format is .xc4.

To import data using the Import/Cells operation:

  1. Select Import... from the File menu. XESS displays the Import Data dialog box.
  2. Click the File Format option button and select Cells.
  3. Click on the Selection entry box and type the name of the file you wish to import, or select a file by highlighting its name in the Files list.
  4. To select a different directory, double-click on the directory name in the Directories list. XESS then displays the names of files in that directory in the Files list.
  5. Click OK to complete the Import operation.
Importing Data Using the Mouse Paste Operation
The Mouse Paste operation is a mouse action for which no menu selection is needed. The Paste operation is similar to the Copy Formulas operation. Cell values and formulas are copied from one location to a designated location, transferring all formatting except column width and row height, overwriting existing data in the destination location, and automatically updating cell references.

To paste formulas/values from one XESS workbook to another:

  1. Make the source workbook active.
  2. Select the cell or range to be copied.
  3. Make the destination workbook active.
  4. Move the mouse pointer to the destination cell or the upper left corner of the destination range.
  5. Click the mouse paste button (usually the middle button).

You can also use the Mouse Paste operation to copy values from other windows displayed on your workstation. The applications associated with these windows need not be aware of XESS; they only need to support the X Windows standard for data interchange. Similarly, XESS data can be selected and pasted into the windows of other applications.

Importing Data from Files

With the Import/Text operation, XESS lets you import columns of text or numbers from any text file into a designated range of cells in an active XESS sheet. XESS looks for patterns of white space running through the data file to determine where to divide the input values into cells. The parameters used in this determination are controlled by Import/Export Options dialog. The default filename extension for importing text is .txt.

You can also paste text into an XESS workbook from other programs with a simple mouse operation. For more information, refer to Manipulating a Spreadsheet.

During the Import/Text operation, XESS tries to convert values to numbers. If a value cannot be converted to a valid numeric value, XESS converts it to a text value. The converted values are placed in the destination range starting at the current cell or at the top left cell of the selected range.

Setting Import/Export Options
XESS gives you additional control on importing, exporting, or pasting text into the spreadsheet using the Import/Export Options dialog window. These options determine how the contents of the text file is parsed and placed in cells.

To change import and export options:

  1. Select Import/Export Options... from the Options menu to display the Import/Export Options dialog box.
  2. Select from the following options:
    Use UNIX quote escape
    Use the UNIX method of representing quote characters (") within quoted strings by using the back-slash character (\"). Otherwise, use two quote characters to represent a single character in the string ("").
    Treat leading 0s as text
    Treat leading zeros as text characters.
    Modify cell formats
    Change the formats of the target cells to correspond to the data type of the value from the smart recognition.
    Smart number recognition
    Allows formatted numeric values to import as values with formatting (e.g. $123,456.78 or (1,234.56) ).
    Smart date recognition
    Allows date values to import as values with formatting rather than strings (e.g. 1-Jan-2000 ).
    Smart time recognition
    Allows time values to import as values with formatting rather than strings (e.g. 7:00pm or 12:45 ).
    Preserve formats for export
    Preserves formatting of cells when exporting into delimited files.
    User-defined Delimiter
    Specifies the character used to separate successive fields when importing and exporting files with the User Delimited File Format.
    One Word Per Column
    Allows you to import a text file where blank spaces in the file are used as delimiters. Text strings are imported as text and numbers are imported as numeric values. A string or a value is placed in each corresponding cell. When cleared, text is separated into cells using the Whitespace Threshold.
    Whitespace Threshold
    This option allows you to indicate what percent of all lines must have a blank in the exact same location for that location to be recognized as a field delimiter on import. The extreme cases (0 and 100) have the following properties:
    
       0 The import creates only one column;
         the entire text of the line goes into
         the cell.
     
     100 In order for a column to be defined, 
         a blank must be in the same relative
         position in every row.
    
    
    Escape HTML tags
    Escape HTML tags in the text values of cells so that they will be displayed as text by the browser. Otherwise treat the HTML tags as commands to be interpreted by the browser.
    Write Graphs with Page
    When exporting HTML, save graphs inserted on the sheet as image files in PNG format and save links to these files in the HTML file. This makes the HTML be a snapshot of the sheet, including graphs.
Importing Text Files
To import a text file into the spreadsheet:
  1. Optionally, select the range of cells into which the numbers will be read. If you do not select a range, XESS imports the data starting at the current cell.
  2. Select Import... from the File menu. XESS displays the Import Data dialog box.
  3. Click the File Format option button to select Text.
  4. Click on the Selection entry box and type the name of the spreadsheet you wish to import, or select a spreadsheet by highlighting its name in the Files list. XESS imports the text file, modifying just the cells affected by the import.
  5. To select a different directory, double-click on the directory name in the Directories list. XESS then displays the names of files in that directory in the Files list.
  6. Click OK to complete the Import operation.
Importing delimited text and HTML files
The Tab Separated Values (TSV), Comma Separated Values (CSV), and User Delimited (UD) Import operations allow you to load text files with values separated by tabs, commas, or a user-specified delimiting character.

For Import/TSV, tabs contained in the records being imported are used as the only delimiters and the text is formatted appropriately inside the spreadsheet.

For Import/CSV, commas contained in the records being imported are used as the only delimiters and the text is formatted appropriately inside the spreadsheet.

For Import/UD, the user-specified delimiter character separates fields within the input records.

For HyperText Markup Languate/HTML, the structure of the HTML page and its tables determine which values are placed in which cells.

The default filename extension for TSV, CSV, UD, and HTML files are .tsv, .csv, .dat, and .html, respectively.

To Import a TSV, CSV, UD, or HTML file into a spreadsheet:

  1. Select Import from the File menu. XESS displays the Import dialog box.
  2. Select the appropriate File Format.
  3. Click on the Selection entry box and type the name of the spreadsheet you wish to import, or select a spreadsheet by highlighting its name in the Files list.
  4. Select a file in the same way you would select an XESS file: double-click on the file name, or click the name once and then click OK. XESS imports the file, beginning at the current cell cursor location. Each line or record in the input file is placed in a row in the sheet.
  5. To select a different directory, double-click on the directory name in the Directories list. XESS then displays the names of files in that directory in the Files list.

Exporting Data from XESS to other Programs

XESS provides several options for exporting data from XESS to be used by other applications:

Saving Data in Microsoft Excel and Lotus 1-2-3 Formats

The Save operation for WKS/WK1/WK3 and XLS files writes the entire spreadsheet to the specified workbook file, including its attributes and formulas (e.g column width, cell format, colors, cell borders).

Because there are differences between spreadsheet programs, you may have to modify certain formulas or cells to get the spreadsheet to work properly in the other spreadsheet. Here are some principal differences: .Each of the WK* and XLS formats defines different limits for the number of sheets, rows, and columns, and it is possible for native XESS spreadsheets to be larger in any of these dimensions. All of the Lotus and XLS formats are limited to 256 columns. While the latest Excel and Lotus products support 65,535 rows, earlier versions were limited to 8,191 or 16,383 rows.

To save an XESS spreadsheet in WK* or XLS format:

  1. Select Save As... from the File menu. XESS displays the Save Sheet dialog box.
  2. Select WKS/WK1/WK3/XLS for the File Format.
  3. In the Selection entry box, enter a name for the output file.
  4. Click OK or press [Enter]. XESS creates a spreadsheet file in the specified format. You can import this file into another spreadsheet program in a separate operation.

Remember that XESS exports the entire spreadsheet during the Save operation.

To export only part of a spreadsheet, create a temporary spreadsheet that contains only the desired data, and save this file instead of the full original.


Export Dialog

The Export Dialog is used to save spreadsheet data in non-spreadsheet formats. These formats include various text representations, LaTex, and HTML.
Exporting Data in XESS Format
Of course, an XESS spreadsheet can export data (formulas and values) stored in XESS format, using either of two options:

Both methods transfer formats, fonts and formulas. For both methods, XESS updates cell references as appropriate. However, if the exported range contained references to cells outside the range, it will create error messages when imported into another spreadsheet.

Exporting Data using the Export Cells Operation
The Export/Cells operation creates an export file of the data in a selected range. This file (with the extension .xc4) can be imported into another XESS spreadsheet using the Import/Cells operation.

To export data using the Export/Cells operation:

  1. Select Export from the File menu. XESS displays the Export Data dialog box.
  2. Select Cells for the File Format.
  3. In the Selection entry box, enter a name for the export file.
  4. Click OK or press [Enter]. XESS creates the export file in the specified format. You can import this file into another spreadsheet program in a separate operation.

You can also export XESS formulas and values to another active spreadsheet using the Paste operation, which involves only a few simple mouse actions.

Exporting Data in Text Format
With the Export/Text operation, XESS lets you export cell values in a selected range in text format with either tabs separating values (TSV) , with commas separating values (CSV), or a user-defined character separating values. You can also paste text into an XESS spreadsheet from other programs with a simple mouse operation.

To export XESS data in text format:

  1. Select Export from the File menu and display its submenu. XESS displays the Export Data dialog box.
  2. Select the File Format and Options.
  3. In the Selection entry box, enter the name for the file.
  4. Click OK or press [Enter]. XESS creates the export file in the specified format. You can import this file into another spreadsheet program in a separate operation. Click Cancel to cancel the operation.

XESS exports the selected data to an intermediate text file. You can import the text file into another program later with a separate operation.

Exporting HTML Tables
XESS can create tables in the format of HyperText Markup Language (HTML). These tables can be accessed directly by web browsers and other similar tools or merged into other HTML documents.

XESS will create an HTML document which includes a table element comprised of the cells from the selected range. To ensure that the HTML table elements approximate their order in the spreadsheet, empty cells are treated as empty data elements in the table. Note also that if a cell element overflows into an adjacent cell, it is necessary to include the root cell into the range selected.

To create an HTML table:

  1. Select the cells from the spreadsheet you wish have in the HTML table.
  2. Select Export from the File menu to display the Export Data dialog box.
  3. Click on the File Format list box and select HyperText Markup Language.
  4. Specify the file name to be used and click OK to complete the operation.
  5. If you wish to view the file immediately using a web browser such as Netscape, select Open File... from the browser's File menu and specify the name of the file created in step 4.

You may include HTML elements directly into spreadsheet cells. These elements will be passed through, as text, to the HTML file and ultimately processed by the browser. For example, a cell could contain the anchor element, <A ...>, which anchors some text to a hypertext link, or <CAPTION> which can be used to label the table of data. Users can also create a table of links which then point to different table documents.

You may edit the HTML file and enter a title, through the <TITLE>...</TITLE> tags within the <HEADER> elements using the text editor of choice. Also, you may delete the <HTML>, <HEAD> and <BODY> tags if you wish to include the table into another HTML document.


Printing

This section explains how to produce a printed version of your XESS spreadsheet and send it to a printer, a third-party product, or to a file in one of the following formats:

Printing in PostScript Format

The primary XESS print format is PostScript, which gives you the greatest number of options for controlling the appearance of the printed output. Many programs, such as document management programs, can incorporate encapsulated PostScript files. However, not all printers can support PostScript formatting options such as fonts and page orientation; check the manual for your printer to determine its capabilities for handling fonts, proportional spacing and other PostScript extras.

Most parameters for PostScript printing are defined with the Page Options dialog box. Other appearance attributes are defined in Workbook Defaults, Sheet Attributes, Cell Defaults, and in individual cell Formats.

Printing in Text Format

XESS can print in plain text (ASCII) format, a widely-compatible format that can be printed on simple printers, included as text in other documents or used by other programs. When printing in ASCII format, XESS makes no attempt to break the text into pages, maintain margins, or print bold and italic type. Layout options specified in the Page Options dialog are ignored. However you may specify horizontal and vertical pitch for the printed text from the Printer Options dialog box.

Printing your Spreadsheet

Once you have decided how you want to print your spreadsheet and where to print to, you are ready to print.

To print a spreadsheet the first time:

  1. Select Print As from the File menu which displays the Print Sheet dialog box.
  2. Ensure that Page Options and Printer Options are set accordingly.
  3. If you chose Destination to be File or Both in the Printer Options dialog box you must specify the file name in the Selection area of the Print Sheet dialog box.
  4. Click OK or press [Enter] to complete the print operation. Click Cancel to dismiss the dialog box.

For subsequent printing, you may simply select Print from the File menu. The current printer and page options will be used.

Fonts Used in Printing

PostScript Fonts are used by XESS to define the appearance of the workbook in printed output. These fonts are defined by three font characteristics: family, style, and size. These correspond to those used for displaying cells on the display.

Family

XESS lets you choose a Font Family for Cell Defaults and allows you to override the default on a cell-by-cell basis. The most popular font families are supported.

Style

Font style is typically defined as normal, bold, italic, or bold-italic. XESS lets you choose a Font Style for Cell Defaults and allows you to override the default on a cell-by-cell basis.

Size

Type size is entered in points, on a scale of 72 points per inch. As a guide, remember that standard typewriter Courier is 12-point type. Most type you read in newspapers and magazines is 9, 10, or 11 point type. XESS allows you to select from several font sizes.

Proportional Spacing

Typewriters typically used fixed-width spacing, that is, the I occupies the same amount of space as the M and W. The XESS PostScript fonts, except Courier, use proportional spacing. In order to correctly calculate line widths when each character occupies a different amount of space, XESS refers to the Adobe Font Metric files on your system.

Defining the Appearance of the Output

What you see on the display is essentially what will be printed to a PostScript printer which supports color and/or fonts. XESS provides several mechanism to customize the appearance.

Using the Page Options dialog box, you can customize the page layout features such as:

Using the Cell Defaults dialog box or the Format operation, you can define for each cell:

Furthermore, whether or not the grid is printed and its color is defined in the Workbook Defaults, Sheet Attributes, and Cell Attributes dialog boxes.


Changing Page Layout Options

XESS allows you to customize the page layout for PostScript output. The Page Options dialog box is provided to change a number of options which effect the page layout. Default start-up values for each options are defined in the XESS resource file and may be modified.

To change Page Options:

  1. Select Page Options from the Options menu or the Print Sheet dialog box. XESS displays the Page Options dialog box.
  2. Change any or all of the following
    • Page Size
    • Orientation
    • Page Height and Page Width
    • Margins (Top, Bottom, Left, Right)
    • Fit to Page
    • Centering
    • Shrink/Expand
    • Row Titles
    • Column Titles
    • Expand Graph to Page (On/Off)
    • Page Header and Page Footer (On/Off)
    • Border (On/Off)
    • Print Cell Notes
  3. Apply your selection by clicking OK or Apply.

Changing the Page Size

The Page Size option allows you to specify which page type to use. You may choose from a list of standard pre-defined page types or specify a custom size. The actual height and width associated with the selection is displayed in the Page Height and Page Width boxes.

If you select Other, then the Page Height and Page Width boxes become open for data entry. You may enter either in inches (IN) or centimeters (CM). Whichever is entered is converted automatically to your default setting. To change the page size:

  1. Select Page Options from the Options menu or Print Sheet dialog box. XESS displays the Page Options dialog box.
  2. Click the left mouse button over the Page Size option button to display the options. Holding the left mouse button down move to the desired selection and release.
  3. If you selected Other in the above step, enter the desired Page Height and Page Width the in the respective entry boxes.
  4. Apply your selection by clicking OK or Apply.

Changing the Orientation

Orientation allows you to specify whether the output is rotated 90 degrees (landscape) or in normal portrait mode. Orientation is independent of Page Size: this means when you select landscape and page size is set to Letter (A), the height and width dimensions are not switched when you change orientation from portrait to landscapethe printer simply knows to rotate the printed output.

To change the orientation:

  1. Select Page Options from the Options menu or Print Sheet dialog box. XESS displays the Page Options dialog box.
  2. Click the left mouse button over the Orientation option button to display the options. Holding the left mouse button down move to the desired selection and release.
  3. Apply your selection by clicking OK or Apply.

Changing the Margins

Top Margin, Bottom Margin, Left Margin, and Right Margin allow you to specify how much white space there is on each of the four sides of each page printed. You may enter these specifications in units of either inches (IN) or centimeters (CM).

However, if you enter in centimeters (CM), the number is automatically converted to your default setting..

To change the margins:

  1. Select Page Options from the Options menu or Print Sheet dialog box. XESS displays the Page Options dialog box.
  2. Enter the desired top/bottom/left/right margin specification(
  3. into the respective entry boxes).
  4. Apply your selection by clicking OK or Apply.

Centering the Output on the Page

The Centering options allow you to specify whether centering is enabled, and if so, in what context. There are four choices: Off Disable option. Horizontal Center the page contents so that the left and right margins are equal. Vertical Center the page contents so that the top and bottom margins are equal. Both Center the page contents so that all four margins are equal

To center the page contents:

  1. Select Page Options from the Options menu or Print Sheet dialog box. XESS displays the Page Options dialog box.
  2. Click the left mouse button over the Centering option button to display the options. Holding the left mouse button down move to the desired selection and release.
  3. Apply your selection by clicking OK or Apply.

Overriding Automatic Page Breaks

XESS provide two options which allow you to override the automatic page breaks which would otherwise be enforced.

Fit To Page

The Fit-to-Page options allow you to specify whether this option is enabled, and if so, forces the printed output to fit within the specified context. (The font size is ignored to reduce the character size as necessary to comply with the selected option.) There are four choices:
Off
Disable Fit-to-Page option.
Horizontal
Reduce the size of the selected print area to fit within the page width eliminating overflow.
Vertical
Reduce the size of a selected print area to fit within the page height eliminating page overflow.
Both
Reduce the size of the selected print area (width and height) to fit within the bounds of a single page.

To override the automatic page breaks:

  1. Select Page Options from the Options menu or Print Sheet dialog box. XESS displays the Page Options dialog box.
  2. Click the left mouse button over the Fit to Page option button to display the options. Holding the left mouse button down move to the desired selection and release.
  3. Apply your selection by clicking OK or Apply.

Shrink/Expand

The Shrink/Expand option allows you to decrease or increase the size of the printed output - overriding the font size. The default is 100% which means that the option is not active. To reduce the size, change the percent to something less than 100%; to expand, change the percent to something more than 100%.

To shrink or expand the printed output:

  1. Select Page Options from the Options menu or Print Sheet dialog box. XESS displays the Page Options dialog box.
  2. Enter the desired adjustment factor into the Shrink/Expand entry box.
  3. Apply your selection by clicking OK or Apply.

Setting Explicit Page Breaks

You may add and remove explicit page breaks (horizontal and vertical) within the body of the spreadsheet. The page breaks indicated in the sheet force a new page condition whenever XESS encounters the page break indicator during the Print operation.

Page breaks are marked by thickened row or column borders.

To set a horizontal page break:

  1. Position the cell cursor in the row which marks the first row on the page.
  2. Select Insert Page Break Row from the Edit menu.

To set a vertical page break:

  1. Position the cell cursor in the column which marks the first column of the page.
  2. Select Insert Page Break Column from the Edit menu.

To remove a page break:

  1. Position the cell cursor in the row below (horizontal) or in the column to the right (vertical) of the page break indicator.
  2. Select Delete Page Break (Row or Column) from the Edit menu.

Expanding Graph to Page Size

The Expand Graph to Page allows you to force any graph printed from the Graph Editor to be expanded to fit the specified page size, complying with page and margin specifications.

To expand graph to page size:

  1. Select Page Options from the Options menu or Print Sheet dialog box. XESS displays the Page Options dialog box.
  2. Click the Expand Graph to Page check button ON to enable or OFF to disable.
  3. Apply your selection by clicking OK or Apply.

Specifying Row and Column Titles

The Row Titles option allows you to specify repeating row labels to be used on a multi-page printout where the number of columns exceeds the page width.

The Column Titles option allows you to specify repeating column labels to be used on a multi-page printout where the number of rows exceeds the page length.

If you print only part of a spreadsheet, XESS only prints row and column titles for the selected range.

To print row and column titles:

  1. Select Page Options from the Options menu or Print Sheet dialog box. XESS displays the Page Options dialog box.
  2. Enter cell ranges for Row Title and/or Column Title.
  3. Apply your selection by clicking OK or Apply.

Printing Cell Notes

To print the cell notes, check the Print Cell Notes option in the Page Options dialog.

Printing Headers and Footers

The Page Header option allows you to specify whether or not an additional line is printed at the top of the page which contains sheet name, time, and date. If selected, it is printed above the specified page boundary.

The Page Footer option allows you to specify whether or not an additional line is printed at the bottom of the page which contains the page number. If selected, it is printed below the specified page boundary.

To print headers and/or footers:

  1. Select Page Options from the Options menu or Print Sheet dialog box. XESS displays the Page Options dialog box.
  2. Click the Page Header check button ON to enable or OFF to disable. Click the Page Footer check button ON to enable or OFF to disable.
  3. Apply your selection by clicking OK or Apply.

Printing Column and Row Borders

The Borders option allows you to specify whether or not the spreadsheet row and column border is printed along with the selected print area. If selected, it is printed on each page.

To print borders:

  1. Select Page Options from the Options menu or Print Sheet dialog box. XESS displays the Page Options dialog box.
  2. Click the Borders check button ON to enable or OFF to disable.
  3. Apply your selection by clicking OK or Apply.

Defining Headers and Footers

The Header Footer Dialog allows you to tailor the contents and appearance of the headers and footers, text that optionally appears on each printed page. There are left, center, and right headers and left, center, and right footers. These headers and footers are saved with an .xs5 file and take their initial values from resources or from the xess_template.xs5 template file when you do a New workbook or when you load an .xs4 or .xs3 file.

You can specify the text, font family, font size, font style, and color of each of the headers and footers separately using the Headers and Footers dialog, accessed either either the Options menu or from the Print Dialog.

In the text string, special codes indicate where special values should be inserted into the prototype strings. These special values begin with the ampersand character (&) and are enclosed in square brackets ([ ]). Case is not significant for the []-enclosed escape codes. The optional date-spec, time-spec, and number-spec strings use the same picture formats as User Defined formats and the @TEXT function.

&[Cell=cell-spec]
Insert the value from the given cell into the header/footer text. cell-spec can be either a specific cell or a single-cell named range. It can also be a cell on the current worksheet that is being printed if you leave out the sheet specification. Example:
            &[cell=A5]
&[Date=date-spec]
Insert the current date into the header/footer text. If "=date-spec" is omitted a default value will be used ("dddd\, mmmm d\, yyyy" which is the same as the date string in previous versions of Xess). Example:
            &[date=dd-mmm-yyyy]
&[File]
Insert the current file name with its complete path into the header/footer text.
&[FileName]
Insert the current file name with just the last part of the file name into the header/footer text.
&[Page=number-spec]
Insert the current page number as a running count of the pages printed. If "=number-spec" is omitted then the default value of #0 will be used.
&[PageH=number-spec]
Insert the current horizontal page number into the header/footer text. If "=number-spec" is omitted then the default value of #0 will be used.
&[Pages=number-spec]
This is recognized but not used.
&[PageV=number-spec]
Insert the current vertical page number into the header/footer text. If "=number-spec" is omitted then the default value of #0 will be used.
&[Tab]
Insert the current sheet tab name into the header/footer text.
&[Time=time-spec]
Insert the current time of day into the header/footer text. If "=time-spec" is omitted then the default value of "hh:mm:ss" will be used instead.
Any HTML character entity for the Latin-1 character set is also recognized, such as &copy; for inserting a Copyright symbol.

Defining Printers and Other Output Mechanisms

XESS provides a mechanism to define a number of output destinations. These definitions can be used to identify different printer locations, different print options, or third-party packages such as a PostScript previewer.

If you have selected Printer as your print destination in the Printer Options dialog box, you may choose from the list of printers shown in the Printer list box. When you select a printer, its associated print command is displayed in the Print Command display field which is the command XESS will use to complete the print operation.

To define multiple output destinations:

  1. Edit the Xess5 resource file with an editor of choice. (You can use XESS if you prefer; import and export the resource file as text).
  2. Define the printers (or third-party product) using the *printers resource in the following format: *printers: Default:lpr %s\n\ Name2:cmd2\n\ Name3:cmd4\n\ . . . Name20:cmd20
  3. You may leave the modified resource file in your home directory or move it to the directory, /usr/lib/X11/app-defaults.

Changing Printer Options

To print all or part of an XESS spreadsheet, you must ensure that the desired printer options are set. Although XESS defines defaults values for all printer options, you may want to change one or more of these options.

To print a sheet or workbook:

  1. Ensure that Page Options and Printer Options are set accordingly.
  2. If you want to limit printing to a selected sheet you can use the use the Sheet Attributes dialog from the Options menu to set sheet-specific printing options which are saved until you next change the setting.
  3. Select Print or Print As... from the File menu.
  4. Click OK or press [Enter] to complete the print operation. Click Cancel to dismiss the dialog box.

To change the printer options:

  1. Select Printer Options from the Options menu or the Print Sheet dialog box. XESS displays the Printer Options dialog box.
  2. Change any or all of the following:
    • Printer Type
    • Destination
    • Horizontal Pitch
    • Vertical Pitch
    • Print Area
    • Printers
  3. Apply your selection by clicking OK or Apply.

Selecting the Type of Output

The Printer Type option allows you to specify the format of the printed output. There are two choices:
PostScript
The printed output will be in standard PostScript format with all related options such as font and page characteristics enforced. Used with filters to other printer types and Preview.
Text
The printed output will be a basic ASCII text file.

To change the printer type:

  1. Select Printer Options from the Options menu or Print Sheet dialog box. XESS displays the Printer Options dialog box.
  2. Click the left mouse button over the Printer Type option button to display the options. Holding the left mouse button down move to the desired selection and release.
  3. Apply your selection by clicking OK or Apply.

Changing the Print Destination

The Destination option determines where the printed output will go. There are three choices:
Printer
The printed output will be directed to the current printer specification
File
The printed output will be directed to a file whose name is specified in the Print Sheet dialog box
Both
The printed output will be directed to both the current printer specification and a file

To change the print destination:

  1. Select Printer Options from the Options menu or Print Sheet dialog box. XESS displays the Printer Options dialog box.
  2. Click the left mouse button over the Destination option button to display the options. Holding the left mouse button down move to the desired selection and release.
  3. Apply your selection by clicking OK or Apply.

Print Preview

Print Preview is a printer destination that uses GhostView or a similar program to display the PostScript file. Select this option as you would any other printer. You will automatically be placed in the view. When you finish viewing the output, exit the viewer and you will be returned to XESS.

Printing to PCL and other Non-PostScript Printers

Printing to PCL and other non-PostScript printers uses print destinations that use GhostScript or a similar program to filter the print output to the correct format. Because these printers and filters may not support paper selection, the PCL filters include settings for paper size.

Changing Horizontal and Vertical Pitch for Text

These options are applicable only when Printer Type is set to Text. The Horizontal Pitch option allows you to control the number of characters per inch (CPI) in the printed output. There are three choices:

The Vertical Pitch option allows you to control the number of lines per inch (LPI) in the printed output. There are three choices:

To change the horizontal or vertical pitch:

  1. Select Printer Options from the Options menu or Print Sheet dialog box. XESS displays the Printer Options dialog box.
  2. Click the left mouse button over the Horizontal or Vertical Pitch option button to display the options. Holding the left mouse button down move to the desired selection and release.
  3. Apply your selection by clicking OK or Apply.

What Gets Printed

XESS provides three methods for specifying what to print: default print range, print range specification (in the Printer Options dialog box), and explicit mouse selection. Explicit mouse selection takes precedence over the other two methods.

The Select Sheet to Print dialog allows you to choose a specific sheets to print for the immediate print operation. Your selection is temporary. (Use the Sheet Attributes dialog from the Options menu to set sheet-specific printing options which are saved until you next change the setting.)

If you select a range whose cell entries overflow out of the selected range, XESS does not print the overflow portion. When multiple pages are printed which are wider than the specified width of the page, the print order is left-to-right then down. If you select page footer to be printer, each physical segment is identified with the second page number qualifier (e.g. Page 1-0, Page 1-1, etc.)

Default Print Range

If a range was not explicitly selected and no Print Area is specified when you initiate the Print operation, XESS selects and prints the used portion of the spreadsheet.

Print Range Specification

The Print Area option allows you to specify a print range which is stored with the sheet. If you explicitly select an range to be printed in the sheet, this print range is ignored.

To specify or change the print range:

  1. Select Printer Options from the Options menu or Print Sheet dialog box. XESS displays the Printer Options dialog box
  2. Specify the range to print in the Print Area entry box.
  3. Apply your selection by clicking OK or Apply.

Explicit Mouse Selection

Any cells which are explicitly selected when the Print operation is initiated will be printed, overriding any other method of specification.

Selecting a Printer

The Printers list box allows you to choose from a list of printer specifications which have been defined in the XESS resource file. When you choose a printer, the corresponding print command which will be used by XESS to complete the print function is displayed in the Print Command field. The print command can modified for the current printing.

To select a different output destination:

  1. Select Printer Options from the Options menu or Print Sheet dialog box. XESS displays the Printer Options dialog box.
  2. Select the printer specification of choice from the Printers selection box. (The command which the Print operation will use is displayed in the Print Command field. The command cannot be changed from this menu.)
  3. Apply your selection by clicking OK or Apply.

The current printer name is saved with the sheet. When the sheet is reloaded, the saved printer name will be compared to the list available. If there is a match the associated print command will be used. If there is no match, XESS will select the first choice in the list which should be your default print command.

Modifying Start-up Print Defaults

The XESS resource file contains default values for all options in both the Page Options and Printer Options dialog boxes. These values can be changed in the resource file to reflect user and or site preferences. When XESS is invoked it will reflect the new values in the resource file as the current settings in the corresponding dialog boxes. You may still elect to override the new defaults by changing the current setting in the dialog box.

Page Option Resources

The resources which refer to options in the Page Options dialog are defined in Appendix B of the XESS User's Guide. To modify the desired resources, follow the instructions outlined in that appendix for any of the Page Options resources.

Printer Options Resources

The resources which refer to options in the Printer Options dialog are defined in Appendix B of the XESS User's Guide. To modify the desired resources, follow the instructions outlined in that appendix for any of the Printer Options resources.

Graphs

XESS supports Line, Area, Bar, Stacked Bar, Histogram, Pie, Surface (3-D), Contour, Polar, High-Low, Box, and Control graphs. Variations of Line graphs include X-Y, scatter, and point plots. XESS also provides 3-D rotation of surface plots. XESS can display multiple graphs at the same time, either in separate windows or as cells in the sheet itself.

XESS offers considerable flexibility in defining how graphs and charts look. For instance, you can define how each axis should be scaled, labeled, and tick-marked. You can define whether or not legends, titles, and labels are printed, and, if so, in what font and color. You can choose your own line and marker styles, even shading variants for surface charts.

XESS stores the current graph definition with the workbook so you can change the data and redraw the graph, or change the graph definition to view different sets of data.

You can view graphs on screen while you continue to work on the workbook or save graphs as PostScript files to be printed later on a PostScript printer or included in other documents.

Types of Graphs

XESS supports a variety of graph and chart types:

This section describes the graph types. Because of the large number of options that effect how a graph looks, it is impossible to list all the combinations and variations (e.g. a combination graph containing a bar graph of one data set and a super-imposed line for a second set of data). See the example spreadsheets on the distribution.

Line and Scatter Graphs

Line and scatter graphs are used to plot various types of X-Y data. In its simplest form, a line graph is nothing more than a set of data points on an X-Y grid, possibly connected by line segments.

On a color display, each line typically appears in a different color. You can also specify what type line connects the points (e.g. dotted, dashed, etc.). The New Graph Options... dialog on the Options menu of the main sheet controls how colors, line styles, and markers are initially defined for a new graph.

The data points to be graphed do not need to be spaced evenly on the X-axis. In fact, for scatter plots they do not even need to be in order. Line and spline segments will connect adjacent points in the value lists. You can also use the Skew Data button in the Graph Options dialog box to offset the data sets from each other. This helps in discriminating the data points of one data set from another.

A break in a line or spline segment is indicated by leaving an X-Y coordinate cell blank. This is usually done by inserting a blank line or column at the appropriate location.

The data for an X-axis or Y-axis can be either text or numeric. If the data are text, the text values become the labels for successive locations on the axis. A typical use is to show monthly values of some type in a trend.

If the cells in a range are formatted as dates or times, then the corresponding axis will be adjusted and displayed in appropriate units for the times and dates specified.

As is the case with all graphs, line plots can be printed as Encapsulated PostScript files. These files will print properly on either black and white or color systems.

Area Graphs

Area graphs are essentially the same as line graphs except that the Y values from each preceding data set are accumulated as each new Y data set is plotted. The resulting graph appears as a stacked line graph where the area below each line can be filled by a different color to distinguish each data set.

Bar Graphs

Bar graphs plot data values much like a line graph except that a solid block is drawn between the Y value for the data and the X axis. The points associated with different sets of data are grouped/stacked side-by-side at their X-axis label to permit easy comparison between groups. Each set of data is represented by a different color or pattern.

The skewing option is used to differentiate between Bar graphs and Stacked Bar graphs. For Bar graphs it is always enforced and thus the Skew Data button in the Graph Options menu should always be set on. If the Skew Data button is off for Bar graphs, an error message dialog pops up when the graph is drawn. To eliminate the message, simply click the Skew Data button on.

Stacked Bar Graph

Stacked Bar graphs are essentially the same as standard Bar graphs except that (like Area graphs) the Y values from each preceding data set are accumulated as each new Y data set is plotted. The resulting graph appears as bars stacked vertically rather than side-by-side. The bar segment for each data set can be filled by a different color to distinguish it from the ones above and below.

The skewing option is used to differentiate between Bar graphs and Stacked Bar graphs. For Stacked Bar graphs it is always ignored and thus the Skew Data button in the Graph Options menu should always be set off. If the Skew Data button is on for Stacked Bar graphs, an error message dialog pops up when the graph is drawn. To eliminate the message, simply click the Skew Data button off.

Pie Charts

Pie charts show the percentage that each data item contributes to the sum of all the data items. The cells of the X Range specify the labels for the slices of the pie while those of the Y Range indicate the value of the item. The percentages are calculated automatically.

Slices are removed (exploded) from the pie by placing a pair of blank cells before and after the affected cells. Multiple data sets produce multiple pies in the same graph.

Surface Graphs

Surface graphs let you plot X-Y-Z data values and functions. On a surface plot, the X and Y values determine the reference coordinates for the Z values. XESS surface graphs are presented with perspective and shading. The shading can be either that of the surface when illuminated by light from a single point, or it can provide a color shading based on a Z value relative to the maximum and minimum Z values.

Surface graphs can be rotated using the Rotate... option of the Edit menu.

Contour Graphs

A contour graph is a two-dimensional representation of a surface graph. This graph type is analogous to maps showing elevation. For example, you can change the Minimum and the Maximum scale for the X and the Y axis. You can also set exploded axis and outward ticks for the X and Y axes.

Just as you set the number of histogram bins, you can set the number of contour levels. This is done with the Z-Axis Options dialog box. Disable Auto Ticks and place the desired number of contour levels in the Major entry box.

You can also select the range over which the contours extend by first disabling Auto Scale and placing the desired range in the Min and Max entry box. You can also have logarithmically spaced contours by enabling Log Scale for the Z axis. Outward Ticks, Exploded Axis and Grid Lines options have no effect on a contour graph.

Polar Graph

Polar Graphs provide graphs of a data with respect to a polar coordinate system rather than a Cartesian or rectangular coordinate system. A polar graph plots a point at some radial distance along a ray that creates a given angle with the positive X axis. For polar graphs, the angular measurement and radial components correspond to the X and Y coordinates in a line graph, respectively.

You can manipulate polar graphs just as you would line graphs, except you cannot display a label on the Y axis. If you annotate a polar graph, you must specify the annotation text in (X, Y) and not in (angle, radius) notation which is used for the data.

Histograms

Histograms graph the distribution of a set of points. The range of the values specified by the X Range are divided in sub-ranges called bins. The count of the number of items within each sub-range is displayed. You indicate the number of bins by setting the number of tick marks for the X axis. You can also set the range of data using the Max and Min entry boxes in the X-Axis Options dialog box.

High-Low Graphs

High-Low graphs display not only a Y-value for each X-value, but a range of Y-values for a given X-Value. High-Low graphs are typically used to display error bars or the trading range of a stock and its closing value for each period. The range of Y-values represent the low, standard (closing), and the high values for the given X value.

Just as with line and bar charts, high-low graphs can show multiple sets of data. You can use the Data Set Options dialog box to change the horizontal tick marks into boxes, circles, etc. You can also use the Skew Data button in the Graph Options dialog box to offset the data sets from each other. This helps in discriminating the data points from one data set to another.

The vertical lines in each data set can also be connected with line segments or splines. You have the same flexibility in determining the look of the High-Low graph as you do with Line and Scatter graphs.

Box Graph

Box graphs display not only a Y-value for each X-value, but a set of Y-values for each X-value. Box graphs are typically used to display the upper and lower variances and perhaps the median point associated with each Y-value. This variance range is displayed as a rectangle.

Variations of the box graph have a variety of names in different disciplines including candlestick graphs and box and whiskers graphs.

You can use the Data Sets dialog box to mark the Y data with a specific marker type such as box or circle. This will cause the median data point to be marked with the same type of marker, but with a solid color.

As with Line and Bar graphs, Box graphs can show multiple set of data. You can use the Skew Data button in the Graph Options dialog box to offset the data sets from each other. This helps in discriminating the data points from one data set to another.

The vertical lines in each data set can also be connected with line segments or splines. You have the same flexibility in determining the look of the Box graph as you do with High-Low graphs. You may combine a Box graph with a High-Low graph by simply providing the High and Low Y-data ranges in the Data Sets dialog box.

Control Graph

Like High-Low and Box graphs, Control graphs display two sets of Y-values for each X-value. Control graphs, however, display two different Y-values in separate plots which share the same X-axis but have different Y axes in the same graph display. Control graphs are typically used to display the mean and variance of the Y value over a range of X-values.

You can adjust the appearance of the separate plots in the Control graph exactly as you would with the Line, Bar, Scatter, Histogram, and Box graphs. The major difference is the presence of two different Y axes. The second set of Y values is defined in the "Lo Var" entry box of the Data Set Options dialog. The Aux. Y Axis Options dialog box is used to customize the Y axis for the second set of Y data. The options for this auxiliary Y axis operate the same as those for the X, Y, and Z axes.

Creating a Graph

To create an XESS graph using menus:
  1. Select a range of cells to be graphed. (If the selection is a single array, those values are assumed to be Y-values; X-values are automatically set to 1, 2, 3...)
  2. Select New Graph from the Graph menu and display its submenu.
  3. Select the desired graph type (Line Graph, Bar Graph, etc.) from the New Graph submenu.

To create a quick line or bar chart using the toolbar:

  1. Select a range of cells to be graphed. (If the selection is a single array, those values are assumed to be Y-values; X-values are automatically set to 1, 2, 3...)
  2. Click the graph icon on the Toolbar which may be displayed below the main menu.

The graph is drawn inside a separate Graph Edit window named Untitled. The appearance of the graph itself is initially determined by the selected options in the New Graph Options dialog box. You can name your graph as described below.

The various menus in the Graph Edit window allow you to tailor the graph in many ways. These options are described below.

If you attempt to create a graph without selecting a range of data, XESS displays an empty graph window named "untitled". The menus inside the graph window can be used to select data ranges and an appropriate graph type can be generated. This approach may be necessary if you have non-contiguous data ranges.

New Graph Options...

New Graph Options from the Options menu provides a mechanism for determining the default appearance of new graphs. This mechanism allows you to choose which graph attributes are automatically varied to produce a chart whose datasets are uniquely identified.

To set new graph options:

  1. Select New Graph Option from the Options menu to display the New Graph Options dialog box.
  2. Click the check button to enable or disable the specified graph attribute. When enabled, XESS will automatically cycle through the supported values for the corresponding attribute, assigning a unique attribute value to each Y dataset.
  3. Apply your selection by clicking OK or Apply.

X-Y Data Organization

For 2-dimensional graphs, if you select a range and select a new graph type, if the range is taller than it is wide, XESS assumes by default that the X data values are in the left-most column, and the Y data values are in successive columns moving to the right.

When the range is wider than it is tall, then the X data values are assumed by default to be in the upper-most row and each set of Y data values is assumed to occupy the successively lower rows.

This arrangement is not required. You can explicitly specify the X and Y ranges for each dataset in the graph. Pairs of X and Y ranges need to have the same number of cells. Each dataset can have a different number of data points.

X-Y-Z Data Organization

For 3-dimensional graphs, XESS by default assumes that the X data values are contained in the first row of the selected range, beginning in the second column of the selection. The Y data values are in the left-most column, beginning with the second row. The Z data varlues are assumed to be all the data to the right and below the X and Y coordinate row and column.

You can explicitly enter the X, Y, and Z data ranges in the Data Set Options dialog.

Redefining Graph Data Sets

Keep in mind that you do not have to use the range that you originally select. XESS allows you to easily change ranges using the Data Set... option of the Graph Edit menu.

Graph Editor

Whenever you create a new graph or choose to modify an existing graph, XESS invokes its Graph Editor which is displayed in its own window. This window can be iconified independently of the main spreadsheet window.

Each menu selection and associated dialog boxes are explained below.

File Menu

The File menu of the Graph Edit window consists of the following operations:
Redraw
The Redraw operation updates the current graph after you make changes to the data that affects the graph. XESS can also be made to automatically redraw the graph using the new values in the spreadsheet and after any graph parameters are applied. Please refer to the General... dialog on the Options menu, below.
Graph Save
The Save operation of the Graph Edit window saves the changes to the current graph using the name that was already specified. If this graph is currently displayed in a Graph View window or has been placed in a cell on the main sheet, then these displays are updated to reflect the new graph parameters.
Graph Save As
The Save As... operation lets you save and name the graph you have created. Be sure to use descriptive names so you can tell your graphs apart. All XESS graphs are named Untitled by default.

To save a new graph:

  1. Select Save As... from the graph window File menu. XESS displays a popup dialog box.
  2. Position the cursor inside the Enter Graph Name entry box and click the left mouse button to activate the text insertion cursor.
  3. Enter an appropriate name for the graph.
  4. Click OK or press [Enter] to name the graph and dismiss the dialog box.
  5. Named graphs can be accessed by the other operations on the Graph menu of the main sheet. This allows graphs to be inserted in cells on the the sheet.

Once a desired number of graphs are created and saved, any one of them can be re-displayed by selecting the appropriate graph name from the options of the Graph menu of the main XESS window.

Duplicate
The Duplicate operation creates an identical copy of the current graph in a separate Graph Edit window. The current graph can be used as a template to create other graph types with the same or different data ranges. Use the Save As... operation as described above and assign descriptive names so you can tell them apart.
Export...
The Export operation allows you to produce and image file snapshot of the graph. You can select the format of this image file, including XPM, BMP, PCX, PBM, and PNG. The PNG format is used for graphs embedded in a spreadsheet when the sheet is exported in the HTML format.
Print
The Print operation enables you to output the graph in PostScript format to the current default file or printer. The options for this operation are controlled by the Print As... option.
Print As...
The Print As... operation lets you control various aspects of the printing of graphs from the Graph Edit window. It presents the Print Graph dialog which is equivalent to the Print Sheet dialog discussed in Printing the Spreadsheet.
Cancel
The Cancel operation dismisses the current Graph Edit window from the screen. You can redisplay this graph by selecting the appropriate graph option from the Graph menu from the main XESS window.

Edit Menu

The Edit menu of the Graph Edit window consists of the following operations:
Data Sets...

The Data Set Options dialog box allows you to specify what ranges contain the data used in the graph and how you wish that data to be displayed. The Data Set Options dialog box includes the following sections:

To modify the Data Set Options for a graph:

  1. Select Data Sets... from the graph window Edit menu. XESS displays the Data Set Options dialog box.
  2. The Data Set slider bar is used to specify which set of data on the graph you wish to modify. For example, each line on a line graph is a separate set of data. The Disable button excludes the current data set from the graph, but retains its definition.
  3. The Data Ranges section contains nine entry boxes that allow you to specify the range of cells that contain the data to be plotted. If you create a graph from a selected block of cells, XESS automatically fills these entry boxes with the appropriate data ranges.
    1. In the X Data entry box, enter the range of cells, either a single column or a single row, containing the X coordinate of data points. For histograms this field is ignored.
    2. In the Y Data entry box, enter the range of cells , either a single column or a single row, containing the Y coordinate of data points.

      For line or bar graphs, the number of Y data elements must match the number specified for the X Range.

    3. In the Z Range entry box (which is used for a surface and contour plots) enter the range of cells, containing the Z coordinate of data points. This range must be a block whose dimensions must agree with the X and Y ranges in the following manner: the Z range should have the same number of columns as the X range and the same number of rows as the the Y range. The Z Range entry box is ignored for two-dimensional graphs.
    4. The Lo Data and Hi Data entries specify the low and high Y values for graphs of financial trading data and the low and high extent for error bars.
    5. The Lo Var and Hi Var entries are used for Box graphs and specify the low and high values for the bottoms and tops of boxes which are drawn around each current data point in a Box graph. The Lo Var entry is also used to specify the Y values for the variance plot in a Control graph.
    6. The Median entry is used for Box graphs and specifies the Y values for the median values which are marked in a Box graph.
    7. The Annotation Data entry box is used to specify annotations. Annotations are text that is dynamically displayed in the graph when the graph is drawn. To use them, you specify the coordinate in the graph where the text will be displayed. You can also indicate where the text will appear in relation to this coordinate. For example you could enter the following in cell B25:
      
              (4,66,0.5,1.0)peak support time
      
      
      XESS displays the text "peak support time" at position X=4 and Y=66 of the graph. This text is horizontally centered (0.5) and vertically above (1.0) position 4,66. Alignment of text in relation to the X,Y coordinate is specified in the following manner:
      
      Horizontal Alignment
      		0 - default position
      		Positive values - left aligned
      		Negative values - right aligned
      		0.5 - centered
      
      	
      Vertical Alignment
      		0 - default position
      		Positive values - below point
      		Negative values - above point
      
      

      The easiest way to enter annotations is with the @ANNOTATE function.

  4. In the Segment Type entry, select whether points in this data set are connected by Lines, Splines, or Bars. Line segments connect the data points with straight lines; splines with smooth line segments (cubic splines); bars, with traditional bar charts. The Histogram indicator determines whether the actual data points are plotted directly or whether a plot is made of the frequency distribution of the data.
  5. In the Marker area, select the style of marker to use to denote the data points. This option applies to Line, Scatter, high-low, and Polar graphs. XESS ignores this setting when creating other types of graphs. Select None to suppress displaying the actual data points. This produces a plot with just the line.
  6. In the Line Style option, select the type of line to be used with this data set. Use No Line to produce X-Y or scatter plots of the data. The line types include solid ones and various combinations of dots and dashes.

    The Line Width option determines the thickness of the line used for this set of data. The Line Color option lets you select the color to be used when drawing the line and markers for this data.

  7. The Shading option determines the representation of surface plots, contour plots, and bar charts. None applies no shading to the Graph. Directed Light applies shading that gives the appearance that the surface is lit from a single light source. Light Source indicates the location of the light source illuminating surface graphs. It is given as x,y,z values and defaults to 0, -1,1. Z Height shades the surface based on the values of the Z data, where minimum values are purple and maximum values are red. The height of each surface section is defined as the average of the Z values of its vertices.
  8. The Fill Style, Fill Color, and Fill Background Color options determine the type of shading and pattern, if any, that is drawn between the line and the X axis. These also determine the color of the bars in a bar chart.
  9. In the Legend Text entry box, type in a label for the data plotted with the line. If Legends is selected in the Graph Options dialog, then the Legend Text will appear to the right of the graph legend for this data set. Options are provided for setting the font, size, style and color of the legend text. In addition, the legend can be forced to multiple lines by embedding the new line indicator (\n) wherever you want to breakup the line.
  10. Click OK to confirm your choices, dismiss the dialog box, and redraw the graph. Click Apply to confirm your choices, keep the dialog box open, and redraw the graph. Click Cancel to dismiss the dialog box.
Rotate...
The Rotate... option allows you to rotate surface graphs. When you draw other graph types, this button remains "greyed-out" or disabled. The Rotate Surface dialog box contains a simplified view of the surface graph axes.

To Rotate the Graph:

  1. Select Rotate... from the graph window Edit menu. XESS displays the Rotate Surface dialog box.
  2. Position the mouse pointer anywhere in the box. Holding down the left mouse button, drag the mouse in the direction of desired rotation.
  3. Release the mouse button when the desired rotation is achieved.
  4. Click OK to redraw the rotated graph and dismiss the dialog box. Click Apply to redraw the rotated graph and keep the dialog box open. Click Cancel to cancel the operation.
OR
  1. Enter the view angle directly into the Theta and Phi entry boxes.
    Theta
    The angle at which the surface rotates around the Z-Axis. Ranges from 0 to 89.
    Phi
    The angle at which you look down upon the surface. Ranges from 0 to -89.
  2. Click OK to redraw the rotated graph and dismiss the dialog box. Click Apply to redraw the rotated graph and keep the dialog box open. Click Cancel to dismiss the dialog box.

Graph Options Menu

The Options menu of the graph window consists of the following options:
Graph Options Dialog

The Graph Options dialog box is used for changing the overall appearance and operation of the graph. The Graph Options dialog allows you to set:

To set the Graph Options:

  1. Select General... from the graph window Options menu. XESS displays the Graph Options dialog box.
  2. In the Graph Type area, click on the list box to choose the type of graph you wish to make. Keep in mind, that with the current data ranges selected, you may not be able to generate the desired graph type. XESS displays an appropriate error message if it is unable to create the desired graph type.

    Certain graph types can be combined by setting the graph type in the individual Data Set dialogs. For example, this allows you to mix scatter, line, and bar charts all on the same graph. Setting the type from the Graph Options dialog forces the type on all the contained data sets.

  3. The Redraw on Recalculation setting controls whether this graph is automatically redrawn as the result of changes in the spreadsheet.
  4. The Defer Redraw button controls whether changes made from the options of the Graph Edit window automatically cause the graph to redraw. This option is generally not needed. It should be used when making many changes to a very large graph on a relatively slow system. When the changes have been made, do an explicit Redraw of the graph.
  5. Click on the check button labeled Legend to display a legend to the right of the graph. For line graphs, the legend displays the line and marker style for each data series along with the associated legend text. For bar graphs or histograms, the legend shows bar colors. For contour graphs, the legend shows colors and levels.
  6. Click on the check button labeled Skew Data to improve the differentiation between data representation in Line, Scatter, High-Low, Box, and Control graphs when data points tend to obscure each other.

    In addition, the skewing option is also used to distinguish between Bar graphs and Stacked Bar graphs. For Stacked Bar graphs, skewing is ignored; for Bar graphs, skewing is always enforced. For both of these graphs, if the button setting is in conflict, an error dialog box pops up when the graph is drawn. To eliminate the error message popup, ensure that the Skew Data button is off for Stacked Bar graphs and on for Bar graphs.

  7. The Default Area defines the default colors and fonts to use with this graph.
  8. In the Graph Title area type in the text title of your graph. You may enter one or more lines of text for the graph title. XESS displays the first line of the graph title centered above the graph; subsequent lines are left aligned with the first line. You can format the text using the following special characters.
    ^
    Starting a line with the caret character will center the line with respect to the previous line. Otherwise normal left alignment is used.
    {
    The left brace character begins a block of text.
    }
    The right brace character ends a block of text. Text blocks may contain other text blocks. Text blocks are typically used when multiple characters must be superscripted or subscripted.
    _
    The underscore causes the next character or text block to be subscripted with respect to the preceding character.
    ^
    Inside a line, the caret causes the next character or text block to be superscripted with respect to the preceding character.
    \
    The backslash turns off the special properties of the following character so it can be printed out. The string \\ prints a single backslash.
  9. The Title Font area lets you set set the font family, style, size, and color for the Graph Title.
  10. Click OK to confirm your choices, dismiss the dialog box, and redraw the graph. Click Apply to confirm your choice, keep the dialog box open, and redraw the graph. Click Cancel to dismiss the dialog box.
X Axis..., Y Axis..., Aux. Y Axis..., and Z Axis...
These dialog boxes are used to change the appearance of the respective axes to be displayed. Note that the Aux. Y Axis is used in Control graphs where two sets of Y data are plotted against the same X data.

You may customize the following options:

To change Axis characteristics:

  1. Select the appropriate axis (e.g. X Axis...) from the graph window Options menu. XESS displays the Axis Options dialog box.
  2. Click on the check button labeled Auto Scale if you want XESS to automatically define axis scaling, based on its evaluation of the data to be plotted. By default Auto Scale is on. Click this button off to use the scale in the Min and Max entry boxes.
  3. In the Min and Max areas, enter a low and high value for the axis values. The axis will be scaled to include these values, but with logical start and end points. If axes are formatted as date or time, you must enter the unformatted numeric values for Min and Min - instead of the formatted time or date representation. XESS ignores the maximum and minimum values entered here if Auto Scale is enabled.
  4. Click on the check button labeled Auto Ticks if you want XESS to select the number of tick marks for the axis. By default, Auto Ticks is on.
  5. In the Major and Minor areas, enter the number of tick marks to be placed on the given axis. XESS ignores this number if Auto Ticks is enabled. The axis will have the specified number of major ticks with corresponding labels and the specified number of minor ticks between pairs of major ticks.
  6. Click on the check button labeled Log Scale if you want to plot the current set of data on a logarithmic scale, checking for data values less than or equal to zero. Leave this button off if you want XESS to plot data on a linear scale.
  7. Set the Ticks Out button to cause tick marks to point away from the body of the graph. Otherwise, tick marks will point inward towards the graph itself.
  8. Select Exploded Axis to have the axis and tick marks displayed slightly away from the graph area itself.
  9. Set the Axis Color if you wish it to be a different color than the default foreground color for this graph. 1
  10. Click on the Grid Lines button to display grid lines for this axis. These are drawn from each tick mark on the axis across the entire extent of the other axes. A cross-hatched grid can be drawn by activating this option for both the X and the Y axes. The color of this grid is controlled by the Grid Color selection. It defaults to the foreground color for this graph.
  11. In the Axis Label area type in the text for the axis label. XESS centers the label along the axis, outside the graph area. Multiple lines of text may be entered. You can format the text using the following special characters.
    ^
    Starting a line with a caret character will center the line with respect to the previous line. Otherwise normal left alignment is used.
    {
    The left brace character begins a block of text. The right brace character ends a block of text. Text blocks may contain other text blocks. Text blocks are typically used when multiple characters must be superscripted or subscripted.
    _
    The underscore causes the next character or text block to be subscripted with respect to the preceding character.
    ^
    Inside a line, a caret character causes the next character or text block to be superscripted with respect to the preceding character.
    \
    The backslash turns off the special properties of the following character so it can be printed out. In addition, The string \\ prints a single backslash.
  12. Select the font family, style, size, and color for the Axis Label using the list boxes provided.
  13. Use the Tick Style section to define the font family, style, size, and color for the tick marks and tick labels.
  14. Click OK to confirm your choices, dismiss the dialog box, and redraw the graph. Click Apply to confirm your choices, keep the dialog box open, and redraw the graph. Click Cancel to dismiss the dialog box.

You may change initial default values associated with all of the graph dialog boxes.

Using Existing Graphs

In addition to creating new graphs, the Graph menu contains several options for managing and using graphs. These include facilities to:

Modifying a Graph

To modify an existing graph:
  1. Select Edit Graph... from the Graph menu and display the Choose Graph dialog box.
  2. Select the desired graph form the listed graph items and click OK.
  3. The Graph Edit window is displayed. All the options described under Graph Editor can be used now.

If the graph is stored on a sheet, you can double-click the graph to start the Graph Editor.

Viewing a Graph

You may often want to display graphs you have defined without needing to change the graph design. The Graph View window provides this facility in an efficient implementation with a limited number of options. Graph View requires less memory and fewer resources than does Graph Edit, but it does not have the same flexibility.

To view an existing graph:

  1. Select View Graph... from the Graph menu and display the Choose Graph dialog box.
  2. Select the desired graph form the listed graph items and click OK.
  3. The Graph View window is displayed with the graph already drawn. If so specified, the graph will begin updating on recalculation.
  4. Options available on the Graph View window are Cancel, Redraw, Print, and Help. Print uses the current settings for the print options.
  5. Click Cancel to dismiss the Graph View window.

Placing a Graph in the Sheet

XESS lets you place graphs in the sheet itself. This is done by inserting the graph into an anchor cell in the sheet using the Insert in Sheet... option of the Graph menu. The graph will be inserted into the sheet with the upper left corner occupying the cell where the cursor is positioned. This cell will now contain the graph. It can be moved, copied, and deleted like other cells. Just remember that, like text that overflows into adjacent blank cells, the graph is only in the upper left cell and overflows into adjoining cells for display.

To insert a graph into the sheet:

  1. Define the graph and save it using the Graph Edit window.
  2. Select Insert in Sheet... from the Graph menu on the sheet.
  3. Position the cursor to the cell on the sheet where you want the graph.
  4. Select the desired graph from the Choose Graph dialog box and click OK. The graph will be displayed in the sheet.

It is likely that the graph is not the correct size to be displayed in the sheet. To adjust this size, edit the desired graph in a Graph Edit window. Resize the Graph Edit window as desired and then save the graph again. The graph in the sheet will adjust to the new size. Repeat this action until the desired size is obtained.

Once you insert a graph in the sheet, any subsequent edit/save activity which results in changing the size of the graph may cause undesired changes to the spreadsheet layout. To ensure that the embedded graph size does not change unintentionally, click the expand button on the window frame to enlarge the graph edit window for editing, then click the shrink button to reinstate the original size. Then save the graph.

Deleting a Graph

To delete an existing graph:
  1. Select Delete Graph... from the Graph menu and display the Choose Graph dialog box.
  2. Select the desired graph form the listed graph items and click OK.

Internationalization

Locale and Language Support

You can switch among locales of single-byte ISO 8859-1, -5, and -7 (and other) languages and multi-byte languages (e.g. Chinese) while using a single XESS executable image. Language-specific resources, messages, and on-line help files are dynamically accessed by the same binary executable. In addition to the Locale setting, you will need to define fonts and character sets to match the language.

Workbook Data

When it starts, XESS retrieves workstation locale settings for currency, decimal point, thousands separator, and date formats. If locale settings are not available, the initial defaults are retrieved from the XESS resource file. In either case, the settings are accessible from the Local Defaults dialog underneath the Options menu and are applied globally within the session.

These locale settings are used to define applicable cell formats and the character used as decimal point when entering numeric data into a cell or when formatting relevant cell data.

You can use the -nolocale to have XESS ignore locale setting and use the defaults or those defined in the XESS resource file.

Locale Defaults

Locale Defaults are retrieved from your workstation's locale settings or the Xess5 resource file if the workstation's locale settings cannot be accessed. When you select Locale Defaults, the Locale dialog box is displayed.

The Locale settings serve as the defaults used for Cell Formats and data entry (with respect to the decimal point). You can change the settings in the Locale dialog, but they will not be saved. If you wish to permanently change the Locale defaults, you must change them in the Xess5 resource file or your workstation's locale.

User Interface

In addition to locale and language support within the workbook data, you have easy access to the following user interface components which can be translated into other languages:
  1. Messages
  2. On-line Help
  3. Names of days and months
  4. Menus and Buttons
These items are documented in Appendix D of the Users Guide.

Character Sets for ISO 8859

For single-byte languages, XESS lets you specify a character set ID which indicates which of the standard character sets is being used. The *defaultCharset resource is supported for the following values:
1 - ISO 8859-1, ISO Latin-1
The default value supported by previous versions of Xess and supporting most Western European languages.
2 - ISO 8859-2, ISO Latin-2
Central and Eastern European
5 - ISO 8859-5
Cyrillic.
7 - ISO 8859-7
Greek.
9 - ISO 8859-9, ISO Latin-9
Southern European (Turkish)
11 - ISO 8859-11
Thai
15 - ISO Latin-9
"Revised Latin-1"
The characters used to identify column labels are adjusted to reflect the character set. Cell references can use the alternate column definitions (e.g. cell "γ1" in Greek would correspond to "C1").

Font Definitions for Single-Byte ISO 8859 Languages

The resources for the fonts must be modified to correspond with the character set selection. This following resources in the Xess5 resource file will be effected:

     *fontList
     *tabArea.fontList

In addition, the standard Xess system fonts may need to be changed if compatible fonts are not available on the system (see below).

Font Definitions for Multi-Byte Languages

The resources for the fonts must be modified to correspond to the language using the following resources in the Xess5 resource:

      *fontList
      *tabArea.fontList
      *defaultFontEncodings
      *defaultFontNames

Redefining Standard Fonts

Many non-western systems do not have localized font families corresponding to the standard Xess system fonts (e.g. Helvetica, Roman). It may be necessary to substitute alternate font families in order to execute in such an environment. A series of resources define the standard fonts and can be modified to specify the replacement fonts.

The following shows how to replace the system font Times Roman with the Cyrillic font Nimrod:

    *timesB.labelString: Nimrod
    *systemFont2Normal: *-nimrod-medium-r-normal
    *systemFont2Bold:   *-nimrod-bold-r-normal
    *systemFont2Italic: *-nimrod-medium-i-normal
    *systemFont2BoldItalic: *nimrod-bold-i-normal
    *systemFont2Fallback:   ROMAN

The label string is the name displayed on the menus. The fallback is still given in terms of the standard Xess font name.

Input Method Accelerator Key for Multi-Byte Languages

If you are using an Input Method which is invoked by Ctl+space, you need to redefine that key sequence in the Xess5 resource file. The two resources which need to be redefined are:
    *selectB.accelerator
    *selectB.acceleratorText


XESS Resources

The X Window operating environment provides resources for customizing the appearance of the display. XESS defines many of these resources to set startup parameters, default type style for printing, screen colors, and much more.

XESS resources are separated into two sections: Motif resources and local resources. XESS local resources define aspects and functionality of the spreadsheet, while XESS Motif resources define the actual XESS environment such as the text on menu buttons and in dialog boxes and the general aesthetics of the spreadsheet.

For Linux and UNIX systems, the default appearance of the XESS spreadsheet is defined by the file Xess5. This file is be placed in the directory /usr/lib/X11/app-defaults by the installation script. If this file is not present, default values are derived from the fallbacks internal to program. A supplemental resource file can be placed in a user's home directory.

The resource file can be edited to customize the XESS work environment to suit your applications and preferences. Each resource is entered on a separate line in the resource file. For a more general explanation of X resources, we recommend chapter 2 of the X Window System Administrator's Guide, by Linda Mui and Eric Pearce, published by O'Reilly & Associates, ISBN: 0-937175-83-8, or 1-56592-052-X with a CDROM.


Spreadsheet Examples

The XESS distribution contains a sub-directory with examples of XESS workbooks. In this directory, a summary of files available is found in the workbook, Examples.xs5.