|
|
|
| United States Patent | 5603021 |
| Link to this page | http://www.wikipatents.com/5603021.html |
| Inventor(s) | Spencer; Percy L. (Scotts Valley, CA);
Boye; Steven R. (Los Gatos, CA);
Montgomery; Max E. (Santa Cruz, CA);
Watson; Michael J. (Scotts Valley, CA) |
| Abstract | An electronic spreadsheet system of the present invention includes a
Formula Composer having a preferred interface and methods for assisting a
user with composing spreadsheet formulas. The Composer provides the user
with simultaneous formula outline and subexpression (text) views of a
given formula. Using the formula outline view, the user may isolate a
particular portion (subexpression) of a formula for editing. The Formula
Composer also provides a Formula Expert, which is displayed by the system
upon the user selecting a spreadsheet function in a formula being edited.
In addition to providing specific information about the selected
spreadsheet function, the Formula Expert provides input fields which are
specific for the arguments of the selected function. Moreover, the Formula
Expert includes mode expressions or "templates" for assisting users in
inputting correct argument information. Using pattern matching technique,
the system may employ the templates for eliminating common user input
mistakes. Methods are described for synchronizing the various views of the
Formula Composer, so that a modification to the formula being edited by
the user in one view is automatically and immediately propagated to the
other views. In this fashion, all views remain synchronized during formula
editing, thus allowing the user to easily switch among the views. |
|
|
|
Title Information  |
|
|
|
|
|
Drawing from US Patent 5603021 |
|
|
Methods for composing formulas in an electronic spreadsheet system |
|
|
|
|
|
| Publication Date |
February 11, 1997 |
|
|
|
|
|
| Filing Date |
September 2, 1994 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Title Information  |
|
|
References  |
|
|
| *references marked with an asterisk below are user-added references |
|
U.S. References |
|
|
| Add a new US reference: |
| | Reference | Relevancy | Comments | Reference | Relevancy | Comments | 5481473 Kim 716/5 Jan,1996 |      Your vote accepted [0 after 0 votes] | | 5454106 Burns 707/4 Sep,1995 |      Your vote accepted [0 after 0 votes] | | 5408660 Kitadate 717/144 Apr,1995 |      Your vote accepted [0 after 0 votes] | | 5335345 Frieder
Aug,1994 |      Your vote accepted [0 after 0 votes] | | 5317688 Watson 715/707 May,1994 |      Your vote accepted [0 after 0 votes] | | 5191646 Naito 715/853 Mar,1993 |      Your vote accepted [0 after 0 votes] | | 5175814 Anick 715/835 Dec,1992 |      Your vote accepted [0 after 0 votes] | | 5157768 Hoeber 715/711 Oct,1992 |      Your vote accepted [0 after 0 votes] | | 5155806 Hoeber 715/711 Oct,1992 |      Your vote accepted [0 after 0 votes] | | 5146583 Matsunaka 716/3 Sep,1992 |      Your vote accepted [0 after 0 votes] | | 5123087 Newell 715/862 Jun,1992 |      Your vote accepted [0 after 0 votes] | | 5040131 Torres 715/810 Aug,1991 |      Your vote accepted [0 after 0 votes] | | 5029113 Miyoshi 715/705 Jul,1991 |      Your vote accepted [0 after 0 votes] | | 4992972 Brooks
Feb,1991 |      Your vote accepted [0 after 0 votes] | | 4972328 Wu 706/59 Nov,1990 |      Your vote accepted [0 after 0 votes] | | 4970678 Sladowski 715/531 Nov,1990 |      Your vote accepted [0 after 0 votes] | | 4964077 Eisen 715/707 Oct,1990 |      Your vote accepted [0 after 0 votes] | | 4905138 Bourne 717/139 Feb,1990 |      Your vote accepted [0 after 0 votes] | | 4899276 Stadler 715/705 Feb,1990 |      Your vote accepted [0 after 0 votes] | | 4890257 Anthias 715/807 Dec,1989 |      Your vote accepted [0 after 0 votes] | | 4806919 Nakayama 715/790 Feb,1989 |      Your vote accepted [0 after 0 votes] | | 4789962 Berry 715/715 Dec,1988 |      Your vote accepted [0 after 0 votes] | | 4648062 Johnson 715/708 Mar,1987 |      Your vote accepted [0 after 0 votes] | | 4622013 Cerchio 434/118 Nov,1986 |      Your vote accepted [0 after 0 votes] | | 4459678 McCaskill 715/700 Jul,1984 |      Your vote accepted [0 after 0 votes] | | 5179654 Richards 715/708 Dec,1969 |      Your vote accepted [0 after 0 votes] | | |
|
|
|
|
U.S. References |
|
|
Foreign References |
|
|
|
|
|
|
Foreign References |
|
|
Other References |
|
|
|
|
|
|
Other References |
|
|
|
|
|
References  |
|
|
|
|
|
| Market Size |
|
Estimate the gross annual revenues of the relevant market
sector:
|
| | |
| |
|
|
| Market Share |
|
Estimate the percentage of the relevant market sector this invention will capture:
|
| | |
| |
|
|
| Reasonable Royalty |
|
What percentage of gross sales should the inventor or assignee be paid?
|
| | |
| |
|
|
|
Public's "Guesstimation" of Royalty Value
|
| Market Size | N/A | [No votes] | | x | Market Share | N/A | [No votes] | | x | Reasonable Royalty | N/A | [No votes] |
| | N/A | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
Market Review  |
|
|
Technical Review  |
|
|
Claims  |
|
|
What is claimed is:
1. In an electronic spreadsheet system for modeling user-specified
information in a data model comprising a plurality of formulas entered by
a user, each of said formulas evaluating to a result, a method for
assisting the user with correctly entering formulas, the method
comprising:
(a) storing syntax rules specifying valid syntax for formulas;
(b) receiving user input for entering a formula;
(c) parsing said user input, based on said syntax rules, into at least one
formula node, said at least one node storing a subexpression of the
formula;
(d) creating, based on said at least one formula node, an outline view of
the formula; and
(e) displaying said outline view to the user.
2. The method of claim 1, wherein step (e) comprises:
for each of said at least one formula node, displaying its subexpression as
a node on a hierarchical outline.
3. The method of claim 1, further comprising:
receiving a user request for selecting one of said nodes; and
displaying in an edit field the subexpression stored by the selected node.
4. The method of claim 3, further comprising:
receiving user input at the edit field for modifying the subexpression; and
updating the outline view of the formula based on the modified
subexpression.
5. The method of claim 3, further comprising:
computing a result for the subexpression; and
displaying said computed result to the user.
6. The method of claim 5, further comprising:
if a result cannot be correctly computed, displaying an error value as the
result for the subexpression.
7. The method of claim 6, wherein said error value is a spreadsheet "ERR"
value.
8. The method of claim 1, wherein step (c) includes:
tokenizing said user input into a sequence of opcodes; and
scanning said sequence of opcodes for building a tree of formula nodes.
9. The method of claim 1, wherein step (c) includes:
displaying as a node of the outline view each subexpression of said at
least one formula node; and
displaying a folder icon next to some of the nodes of the ouline for
indicating to the user that the nodes can be expanded and collapsed.
10. A data processing system for creating syntactically-correct formulas
from data entered by a user, each of said formulas evaluating to a result,
the system comprising:
a computer having a processor and a memory;
means for storing in said memory information specifying valid formulas;
input means for receiving user input for entering a particular formula
comprising a plurality of subexpressions;
means for parsing said input into a plurality of formula nodes for
representing said plurality of subexpressions, based on said rules, each
formula node storing a subexpression of said particular formula; and
means for presenting to the user said subexpressions in outline format, by
presenting an outline comprising said plurality of formula nodes.
11. A data processing system for creating syntactically-correct formulas
from data entered by a user, each of said formulas evaluating to a result,
the system comprising:
a computer having a processor and a memory;
means for storing in said memory information specifying valid formulas;
input means for receiving user input for entering said formulas;
means for parsing said input into a plurality of subexpressions, based on
said rules, wherein said means for parsing comprises:
means for compiling said user input into a sequence of opcodes, and
means for creating a tree of formula nodes based on said sequence of
opcodes; and
means for presenting to the user said subexpressions in outline format.
12. The system of claim 11, wherein said sequence of opcodes comprises a
binary representation of the formula, said binary representation being
stored in Reverse-Polish Notation (RPN) format.
13. The system of claim 11, wherein said means for creating a tree of
formula nodes includes:
a stack memory for storing on a stack a first formula node which is
dependent on a second formula node; and
means for removing said first formula node from the stack when opcode
corresponding to said second formula node is encountered in the sequence
of opcodes, said means storing a reference from said first node to said
second node.
14. A data processing system for creating syntactically-correct formulas
from data entered by a user, each of said formulas evaluating to a result,
the system comprising:
a computer having a processor and a memory;
means for storing in said memory information specifying valid formulas,
wherein said means for storing information specifying valid formulas
includes:
means for storing templates for built-in functions, and
means for comparing user input against said templates, for identifying a
particular one of the built-in functions;
input means for receiving user input for entering said formulas;
means for parsing said input into a plurality of subexpressions, based on
said rules; and
means for presenting to the user said subexpressions in outline format.
15. The system of claim 14, wherein some of the built-in functions have
more than one template, so that the system can identify particular forms
of user input common to a given built-in function.
16. A data processing system for creating syntactically-correct formulas
from data entered by a user, each of said formulas evaluating to a result,
the system comprising:
a computer having a processor and a memory;
means for storing in said memory information specifying valid formulas;
input means for receiving user input for entering said formulas;
means for parsing said input into a plurality of subexpressions, based on
said rules; and
means for presenting to the user said subexpressions in outline format,
wherein said means for presenting said subexpressions in outline format
includes:
means for displaying said subexpressions in collapsible outline format, so
that level of detail displayed can be varied by the user.
17. The system of claim 16, further comprising:
input means for selecting a particular subexpression from the outline
format; and
edit means for displaying the particular subexpression in an edit field, so
that it can be edited in isolation from other subexpressions of the
formula.
18. The system of claim 16, further comprising:
input means for selecting a particular subexpression of the outline format
for expansion into individual tokens which comprise the subexpression.
19. The system of claim 16, further comprising:
input means for selecting a particular subexpression from the outline
format;
means for computing a result for said particular subexpression; and
means for indicating to the user an error in the particular subexpression,
if a correct result cannot be computed.
20. An information system for entering syntactically-correct subexpressions
from data entered by a user, the subexpressions combining to form a
formula, the system comprising:
a computer having a processor and a memory;
means for storing in said memory information specifying valid
subexpressions;
input means for receiving user input for entering subexpressions for a
particular formula being created;
means for parsing said user input into a plurality of formula nodes for
representing said plurality of subexpressions, based on said information
specifying valid subexpressions, each formula node storing a subexpression
of said particular formula; and
means for presenting the formula being created as a formula outline
comprising said plurality of formula nodes.
21. The system of claim 20, wherein said input means for receiving user
input includes:
an input device;
a display device for displaying an edit field; and
means for updating the formula outline based on input received at said edit
field which affects a particular subexpression, by updating the formula
node which stores the particular subexpression.
22. The system of claim 21, wherein said input device comprises a keyboard
device.
23. The system of claim 21, wherein said input device comprises a pointing
device.
24. An information system for entering syntactically-correct subexpressions
from data entered by a user, the subexpressions combining to form a
formula, the system comprising:
a computer having a processor and a memory;
means for storing in said memory information specifying valid
subexpressions;
input means for receiving user input for entering subexpressions for a
formula being created, wherein said input means for receiving user input
includes:
an input device,
a display device for displaying an edit field, and
means for updating the formula outline based on input received at said edit
field; and
means for presenting the formula being created as a formula outline;
wherein said means for updating the formula outline includes:
means for deleting a portion of the formula outline corresponding to a
subexpression which has been deleted from the formula in response to said
input received at said edit field;
means for parsing said input received at said edit field; and
means for updating the formula outline to display an outline representation
illustrating a new subexpression which has been added to the formula,
based on the parsed input.
25. An information system for entering syntactically-correct subexpressions
from data entered by a user, the subexpressions combining to form a
formula, the system comprising:
a computer having a processor and a memory;
means for storing in said memory information specifying valid
subexpressions:
input means for receiving user input for entering subexpressions for a
formula being created;
means for presenting the formula being created as a formula outline;
pattern matching means for comparing user input against function templates
stored in the memory, so that a particular function can be identified in
the user input; and
means for displaying function input fields for an identified function, said
input fields for receiving user input for specific parameters of the
identified function.
26. The system of claim 25, wherein each said template comprises a function
name, information describing parameters to the function, and help
information about the function.
27. The system of claim 26, wherein said information describing parameters
to the function includes information designed to minimize common user
input errors.
28. The system of claim 20, further comprising:
means for isolating a particular subexpression from the formula outline,
said means for isolating operating in response to user input for selecting
with an input device a formula node from the formula outline which stores
said particular subexpression; and
means for displaying said isolated particular subexpression in an edit
field, so that the user can edit the subexpression apart from other
subexpressions which comprise the formula.
29. An information system for entering syntactically-correct subexpressions
from data entered by a user, the subexpressions combining to form a
formula, the system comprising:
a computer having a processor and a memory;
means for storing in said memory information specifying valid
subexpressions;
input means for receiving user input for entering subexpressions for a
formula being created;
means for presenting the formula being created as a formula outline;
error detection means for detecting an error in a particular subexpression
which has been entered for a formula; and
error indication means for indicating on the formula outline the particular
subexpression which is in error.
30. In a system for processing formulas entered by a user, the formulas
including built-in functions having parameters for receiving user-supplied
information, an improved method for entering a formula comprising:
(a) storing for each function information describing correct syntax for
entering functions, wherein said information describing a correct syntax
includes for each function a function name and information describing
parameters for the function;
(b) entering a formula having at least one function;
(c) receiving user input for selecting a particular function in said
entered formula;
(d) identifying said selected function by comparing it against said
information describing a correct syntax for entering the function;
(e) if said selected function is identified in step (d), displaying input
fields for parameters of said selected function;
(f) receiving user input at said input fields; and
(g) completing entry for the formula by substituting the user input of step
(f) into said selected function;
wherein said information describing parameters for the function comprise a
template for that function, and wherein at least some of the functions
have multiple templates, so that common input formats for a given function
can be detected automatically by the system.
31. In a system for processing formulas entered by a user, the formulas
including built-in functions having parameters for receiving user-supplied
information, an improved method for entering a formula comprising:
(a) storing for each function information describing correct syntax for
entering functions;
(b) entering a formula having at least one function;
(c) receiving user input selecting a particular function in said entered
formula;
(d) identifying said selected function by comparing it against said
information describing a correct syntax for entering the function;
(e) if said selected function is identified in step (d), displaying input
fields for parameters of said selected function;
(f) receiving user input at said input fields;
(g) completing entry for the formula by substituting the user input of step
(f) into said selected function;
(h) displaying a list of range names proximate the input fields, each of
said range names specifying a particular set of information cells which
can serve as input to a function;
(i) receiving a request from the user for selecting one of the range names
from the list while editing an input field; and
(j) copying the selected range name into the input field being edited.
32. In a system for processing formulas entered by a user, the formulas
including built-in functions having parameters for receiving user-supplied
information, an improved method for entering a formula comprising:
(a) storing for each function information describing correct syntax for
entering functions;
(b) entering a formula having at least one function;
(c) receiving user input selecting a particular function in said entered
formula;
(d) identifying said selected function by comparing it against said
information describing a correct syntax for entering the function;
(e) if said selected function is identified in step (d), displaying input
fields for parameters of said selected function;
(f) receiving user input at said input fields;
(g) completing entry for the formula by substituting the user input of step
(f) into said selected function;
(h) performing a substring match between the selected function and said
information describing a correct syntax for entering the function;
(i) assigning a score to each match, based on correlation between
substrings; and
(j) determining a correct syntax based on a match having a highest score.
33. In an electronic spreadsheet system for modeling user-specified
information in a data model, said data model comprising information cells
storing user-supplied data and user-supplied formulas operative on said
data, some of said cells having user-supplied range names, a method for
assisting the user with correctly entering formulas, the method
comprising:
(a) receiving user input for entering a formula;
(b) displaying said user input in an edit field;
(c) displaying a drop-down list of range names proximate said edit field;
(d) receiving a user request selecting a particular range name from said
list of range names; and
(e) completing entry for the formula by copying the particular range name
into said formula being entered.
34. The method of claim 33, wherein step (d) comprises:
positioning a screen cursor over a desired range name; and
generating a signal from an input device while said cursor is positioned
over the desired range name. |
|
|
|
|
Claims  |
|
|
Description  |
|
|
COPYRIGHT NOTICE
A portion of the disclosure of this patent document contains material which
is subject to copyright protection. The copyright owner has no objection
to the facsimile reproduction by anyone of the patent document or the
patent disclosure as it appears in the Patent and Trademark Office patent
file or records, but otherwise reserves all copyright rights whatsoever.
BACKGROUND OF THE INVENTION
The present invention relates generally to the field of information
processing by digital computers and, more particularly, to the entry and
processing of information by application programs, particularly electronic
spreadsheets.
Before computers, numerical analyses, particularly financial ones, were
usually prepared on an accountant's columnar pad or spreadsheet, with
pencil and calculator in hand. By organizing data into columns and rows,
spreadsheets afford the rapid assimilation of information by a reader. The
task of preparing a spreadsheet on paper, however, is not quite so fast.
Instead, the process tends to be very slow, as each entry must be
tediously calculated and entered into the spreadsheet. Since all
calculations are the responsibility of the preparer, manually prepared
spreadsheets are also prone to error. Hence, preparation of spreadsheets
by hand is slow, tedious, and unreliable.
With the advent of microcomputers, a solution was forthcoming in the form
of "electronic spreadsheets." Better known simply as "spreadsheets," these
software programs provide a computerized replacement for the traditional
financial modeling tools: the accountant's columnar pad, pencil, and
calculator. In some regards, spreadsheet programs are to those tools what
wordprocessors are to typewriters. Spreadsheets offer dramatic
improvements in ease of creating, editing, and using financial models.
A typical spreadsheet program configures the memory of a computer to
resemble the column/row or grid format of an accountant's columnar pad,
thus providing a visual calculator for a user. Because this "pad" exists
dynamically in the computer's memory, however, it differs from paper pads
in several important ways. Locations in the electronic spreadsheet, for
example, must be communicated to the computer in a format which it can
understand. A common scheme for accomplishing this is to assign a number
to each row in a spreadsheet, and a letter to each column. To reference a
location at column A and row 1 (i.e., the upper-left hand corner), for
example, the user types in "A1". In this manner, the spreadsheet defines
an addressable storage location or "cell" at each intersection of a row
with a column.
Data entry into an electronic spreadsheet occurs in much the same manner
that information would be entered on an accountant's pad. After a screen
cursor is positioned at a desired location, the user can enter
alphanumeric information. Besides holding text and numeric information,
however, spreadsheet cells can store special instructions or "formulas"
specifying calculations to be performed on the data stored in spreadsheet
cells. In this fashion, cell references can serve as variables in an
equation, thereby allowing precise mathematical relationships to be
defined between cells.
A particular advantage of electronic spreadsheets is the ability to create
a multitude of "what if" scenarios from a single data model. This ability
stems largely from the spreadsheet formulas, which are the means by which
a user tells an electronic spreadsheet system how to manipulate and
analyze one's data. After a set of mathematical relationships has been
entered into a worksheet, the spread of information can be "recalculated"
using different sets of assumptions, with the results of each
recalculation appearing relatively quick. Performing this operation
manually, with paper and pencil, would require recalculating every
relationship in the model with each change made. Expectedly, electronic
spreadsheets have quickly displaced their pencil-and-paper counterparts
for modeling user information.
The structure and operation of a spreadsheet program, including spreadsheet
formulas and "macros," are documented in the technical, trade, and patent
literature. For an overview, see e.g., Cobb, D., Using 1-2-3, Que Corp.,
1985; and Campbell, M., Quattro Pro 4.0 Handbook, 4th Ed., 1992. The
disclosures of each of the foregoing references are hereby incorporated by
reference.
Spreadsheet formulas are fundamental to the creation and operation of a
spreadsheet data model. During creation of a particular spreadsheet or
worksheet model, a user enters formulas in worksheet cells the same way he
or she enters values and labels. Typically, a formula begins with a number
or with a special character (e.g., +, -, (, @, ., #, or $) to distinguish
the entry from raw data. More particularly, formulas are constructed from
one or more of four basic components: operators, values, cell references,
and @-functions. Each of these will be briefly reviewed.
Operators, which indicate how user data are to be combined and manipulated,
typically include well-known operators such as -, +, *, /, and the like.
Values are the information (e.g., numeric, logical, or text) which
formulas are to act upon. To include a value in a formula, the user simply
types it as he or she desires it to appear.
Cell references, on the other hand, allow a user to employ a value in one's
current formula that is derived from another cell. For instance, if a cell
having an address of B3 contains the value of 10, the formula | | |