quattro pro formulas, functions, and macros

259
Quattro Pro Formulas, Functions, and Macros

Upload: hamien

Post on 01-Jan-2017

306 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Quattro Pro Formulas, Functions, and Macros

Quattro Pro Formulas,Functions, and Macros

Page 2: Quattro Pro Formulas, Functions, and Macros
Page 3: Quattro Pro Formulas, Functions, and Macros

Contents

Introduction iThe reason for this book . . . . . . . . . . . . . . . . . . . . . . . . . . . iConventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iiQP quirks, generally

Page 4: Quattro Pro Formulas, Functions, and Macros
Page 5: Quattro Pro Formulas, Functions, and Macros
Page 6: Quattro Pro Formulas, Functions, and Macros
Page 7: Quattro Pro Formulas, Functions, and Macros
Page 8: Quattro Pro Formulas, Functions, and Macros
Page 9: Quattro Pro Formulas, Functions, and Macros
Page 10: Quattro Pro Formulas, Functions, and Macros

The GetCellValue command . . . . . . . . . . . . . . . . . . . . . . . . . 237The Eval command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238Importing a QP block into PerfectScript array . . . . . . . . . . . . . . . 238Running PerfectScript macros: {PlayPerfectScript}, {Exec}

Page 12: Quattro Pro Formulas, Functions, and Macros

ii Introduction

program that displayed everything on a screen containing 24 rows of up to 80 char-acters. The program started well, but changes in the ownership, programmers, op-

Page 13: Quattro Pro Formulas, Functions, and Macros
Page 15: Quattro Pro Formulas, Functions, and Macros

Part I

Page 16: Quattro Pro Formulas, Functions, and Macros

Chapter 1

Basic Formulas

Page 17: Quattro Pro Formulas, Functions, and Macros
Page 18: Quattro Pro Formulas, Functions, and Macros
Page 19: Quattro Pro Formulas, Functions, and Macros

1. Basic Formulas 5

A shortcut method of making absolute or partially absolute references involvesusing the [F4] key. While typing a formula referencing cell A2, for instance, whilethe insertion point is in or just after A2, pressing [F4] will convert A2 into $A:$A$2.Pressing [F4]

Page 20: Quattro Pro Formulas, Functions, and Macros
Page 21: Quattro Pro Formulas, Functions, and Macros

1. Basic Formulas 7

How to set up a database showing interest compoundingmonthly

The task is to demonstrate how interest accumulates on a specific sum ($100)at a specific annual rate (18%) over 48 monthly periods. Table 1.10 shows one wayto set it up.

Table 1.10: Compound interest table

A B C D

Page 22: Quattro Pro Formulas, Functions, and Macros
Page 23: Quattro Pro Formulas, Functions, and Macros

Chapter 2

Block (Array) Formulas

QP has a possibly unique shorthand way for making a formula that operateson a block (or array) of data. The formula can populate another block of datawith calculations using the same formula on each cell in the block, or all of those

Page 24: Quattro Pro Formulas, Functions, and Macros
Page 26: Quattro Pro Formulas, Functions, and Macros

12 2. Block Formulas

@SUM($A$1..$A$100=A1)), place that formula in B1 or some other parallel with A1,and then copy it down in parallel with A1..A100.

How to count or sum all cells that meet two conditions

In this sample (Table 2.3), we will first count the number of rows that are Homeand Even, Home and Odd, Away and Even, or Away and Odd.

Page 27: Quattro Pro Formulas, Functions, and Macros

2. Block Formulas 13

C column that parallel “Home” in the A column. The way to do this is to place thefollowing formula in E1 and copy it into E2..E8:

@SUM(($A$1..A1="Home")*($C$1..C1))

Table 2.4: Running Totals

A B C D E

Page 30: Quattro Pro Formulas, Functions, and Macros
Page 31: Quattro Pro Formulas, Functions, and Macros

2. Block Formulas 17

Instead of 10, a more generic method would be to substitute @MAX(B1..B9)+1 for10.

How to mark possible duplicate entries within a time range

In this example (Table 2.9), the task is to mark entries that may be duplicates,

Page 32: Quattro Pro Formulas, Functions, and Macros

Part II

Quattro Pro Functions

18

Page 33: Quattro Pro Formulas, Functions, and Macros
Page 34: Quattro Pro Formulas, Functions, and Macros
Page 35: Quattro Pro Formulas, Functions, and Macros
Page 36: Quattro Pro Formulas, Functions, and Macros

Chapter 4

The Properties of a Cell, Page, etc.

Thebasichefunctionshefoterdeaptmininghet(The)29(contenthe)29(oter)29(p(Pr5(erties)29(ofes)29(ahe)29(c(Cehe)29(oter)30(somec.)] -16.936 -13.54913 Td ot(Trop)-5(divisionop)-6(ofes)-5(QPop)-6(arec.)]TJ513.o.909871 T11 24.5Tf 3 Td @CELLc.)]TJ/F3.o.909871 T28.186Tf 3 Td ,c.)]TJ513.o.909871 T549.9Tf 3 Td @CELLPOINTERc.)]TJ/F3.o.909871 T67.647Tf 3 Td ;est(Th.)]TJ513.o.909871 T3 2205Tf 3 Td @ISc.

TsThefunctionshereturnheinfotmationopaboutopc5(eainhe)45(attributties)44(ofes)44(aop)44(c5ll.)-544([(The)45(usTro.)] -16.936 -13.5513 Td speci�ties)-6(t(The)55(attributtes)-6(inhe)-5(ahe)-6(texthe)-5(argument.e.)]TJ513.o.909871 T3o7.438Tf 3 Td @CELLPOINTER(e.)]TJ523.o.909871 T73.284Tf 3 Td Attributte.

Page 37: Quattro Pro Formulas, Functions, and Macros
Page 39: Quattro Pro Formulas, Functions, and Macros
Page 43: Quattro Pro Formulas, Functions, and Macros
Page 44: Quattro Pro Formulas, Functions, and Macros
Page 45: Quattro Pro Formulas, Functions, and Macros
Page 46: Quattro Pro Formulas, Functions, and Macros

32 4. Properties of Cells, Pages, etc.

Page 47: Quattro Pro Formulas, Functions, and Macros
Page 48: Quattro Pro Formulas, Functions, and Macros
Page 49: Quattro Pro Formulas, Functions, and Macros
Page 50: Quattro Pro Formulas, Functions, and Macros
Page 51: Quattro Pro Formulas, Functions, and Macros

5. Functions for Coordinates 37

Page The Page

Page 52: Quattro Pro Formulas, Functions, and Macros
Page 53: Quattro Pro Formulas, Functions, and Macros

5. Functions for Coordinates 39

Table 5.4: Using @@ in lieu of named data ranges

Page 54: Quattro Pro Formulas, Functions, and Macros

40 5. Functions for Coordinates

Table 5.6: @BLOCKNAMES illustration

A B C D E

Page 55: Quattro Pro Formulas, Functions, and Macros
Page 56: Quattro Pro Formulas, Functions, and Macros
Page 57: Quattro Pro Formulas, Functions, and Macros
Page 58: Quattro Pro Formulas, Functions, and Macros

44 6. Text Functions

@LENGTH(A1)-@LENGTH(@SUBSTITUTE(A1,"+",""))

This formula subtracts from the length of the original string the length of a substitutestring where + is replaced by nothing (the empty string). That should equal thenumber of occurrences of the character in question.

How to count the number of words in a particular cell

Page 59: Quattro Pro Formulas, Functions, and Macros

6. Text Functions 45

returns the field or an ERR, @IF functions would first test whether the @FIELD func-tion for the largest number returns an ERR; if not, it returns that field; if so, it nestsan @IF function that does the same for the next largest number, and so on until onlyone field is left. Table 6.3 is a set of @IF functions that test for 2 to 5 words. Theadditional coloration shows what is added for each additional word. Though con-ceptually straightforward, and quick and relatively easy for 2–3 words, this methodobviously becomes more cumbersome as the number of words increases.

Table 6.3: Nesting if-tests

Words Formula (broken into parts for clarity)

2 @IF(@ISERR(@FIELD(A1,2," ")),@FIELD(A1,1," "),@FIELD(A1,2," "))

3 @IF(@ISERR(@FIELD(A1,3," ")),

@IF(@ISERR(@FIELD(A1,2," ")),@FIELD(A1,1," "),@FIELD(A1,2," "))

,@FIELD(A1,3,"

Page 60: Quattro Pro Formulas, Functions, and Macros
Page 61: Quattro Pro Formulas, Functions, and Macros
Page 63: Quattro Pro Formulas, Functions, and Macros
Page 64: Quattro Pro Formulas, Functions, and Macros

Chapter 7

Math Functions

QP has a tremendous number of functions for advanced math, geometry, statis-tics, engineering, finance, and more, but this text will focus only on more basicfunctions.

Adding: @SUM, @TOTAL, @SUBTOTAL, @SUMIF

Adding sets of numbers is perhaps the most basic function of a spreadsheet, and@SUM(Block ) is therefore probably the most basic function in QP.

@SUMNEGATIVE and @SUMPOSITIVE total only those items in the block that arenegative or positive, respectively.

@TOTAL appears to be a variety of @SUM that totals all numbers in a block exceptthose created by an @SUBTOTAL function, which appears to differ from @SUM only in

Page 65: Quattro Pro Formulas, Functions, and Macros
Page 66: Quattro Pro Formulas, Functions, and Macros
Page 67: Quattro Pro Formulas, Functions, and Macros

7. Math Functions 53

Table 7.5: Comparison of @INT, @ROUND, and @TRUNC

A B C D E F G

Page 70: Quattro Pro Formulas, Functions, and Macros
Page 71: Quattro Pro Formulas, Functions, and Macros
Page 72: Quattro Pro Formulas, Functions, and Macros

Chapter 8

Page 73: Quattro Pro Formulas, Functions, and Macros
Page 74: Quattro Pro Formulas, Functions, and Macros

60 8. Date and Time Functions

Table 8.1: Values returned by @DATEINFO

A B

Page 75: Quattro Pro Formulas, Functions, and Macros
Page 76: Quattro Pro Formulas, Functions, and Macros
Page 77: Quattro Pro Formulas, Functions, and Macros
Page 79: Quattro Pro Formulas, Functions, and Macros
Page 81: Quattro Pro Formulas, Functions, and Macros
Page 82: Quattro Pro Formulas, Functions, and Macros
Page 83: Quattro Pro Formulas, Functions, and Macros

Chapter 9

Converting between Text and Numbers

There are many reasons why one might want to convert numbers (includingdates, times, and currency) into text, and vice versa. QP supplies a number offunctions for doing so.

Converting numbers to generic number-like text:@STRING, @FIXED

Before dealing with functions that convert a number to text, it may be sufficient

Page 84: Quattro Pro Formulas, Functions, and Macros

70 9. Functions for Converting Text and Numbers

ment 1 will do so. Thus @FIXED(1234.567,2,1) will yield 1234.57. As far as I cantell, you might as well use @STRING for this.

@CONCATENATE(Number ) converts the number in its general format into text. If

Page 85: Quattro Pro Formulas, Functions, and Macros
Page 87: Quattro Pro Formulas, Functions, and Macros
Page 88: Quattro Pro Formulas, Functions, and Macros
Page 90: Quattro Pro Formulas, Functions, and Macros

76 9. Functions for Converting Text and Numbers

How to add one hour to a given time

If you want to create a number representing the time one hour later than a giventime in a text field containing a date and time, you will need to convert the dateand time to a number, and add 1/24 (one hour, out of a 24-hour day). For example,if

Page 91: Quattro Pro Formulas, Functions, and Macros

9. Functions for Converting Text and Numbers 77

Appendix: Custom numeric formats

Creating custom numeric formats

To create a custom numeric format for a spreadsheet, follow these steps.

1. Open the Selection Properties dialog box. That can be done by pressingformats

Page 92: Quattro Pro Formulas, Functions, and Macros
Page 93: Quattro Pro Formulas, Functions, and Macros

Chapter 10

Getting information about and from adatabase

The functions in this section assist with using databases, which I understand as

Page 95: Quattro Pro Formulas, Functions, and Macros
Page 96: Quattro Pro Formulas, Functions, and Macros

82

Page 97: Quattro Pro Formulas, Functions, and Macros
Page 98: Quattro Pro Formulas, Functions, and Macros

84 10. Database Functions

function returns the desired information about the unique entity that is the subjectof the database. The index column need not be sorted in numerical order.

If ExactMatch? is 1 (the default), QP expects the index column to be sortednumerically, and when it is, the function selects the first row with an exact matchin the index column if there is an exact match, but if there is no exact match inthe index column, it selects the row with the next lowest value in the index column(which is the row above the point where IndexValue would be, if it were in theindex column). Thus, if the index column has items 1 and 2, and the IndexValue

argument is 1.5, QP will use the row with item 1 in the index column. The functionreturns ERR only if the

Page 99: Quattro Pro Formulas, Functions, and Macros
Page 100: Quattro Pro Formulas, Functions, and Macros
Page 101: Quattro Pro Formulas, Functions, and Macros
Page 102: Quattro Pro Formulas, Functions, and Macros
Page 103: Quattro Pro Formulas, Functions, and Macros
Page 104: Quattro Pro Formulas, Functions, and Macros

90

thefunctioninit1Bymodifyingtheoffsetsinthisformula(the-1intheRowOffset#

(second)argumentandthe-2intheColumnOffset#

containingtheformula.

TheCelltotheleft,withcircularitythesamething1IfthefunctionisincellD6,thisworks:

@CELL("col",D6)-2)Andlikewise,ifwedonotknowthehostcellinadvance,QPwilladjustiffromthis:

@CELL("col",c(0)r(0))-2)Aversionusing@ADDRESSisalsoavailable.

@CELL("col",c(0)r(0)))Howtoretrievedatafromcellsrelativetothecurrentcellgettingtheircoordinates,because@INDEXaccepts@ROW

Because@INDEXneedsaBlock

describedinthelastapplication1Sinceitistext,itwillneedtobewrappedinan@@

functiontouseascoordinatesfor@INDEX:@@(@OFFSET(@@("A1..A1"),0,0,@ROW,@COLUMN))SameRow,ColumnAcoordinatesofthebasicblockinsidean@INDEXfunctionasfollows:

0,@ROW-1)Wehavetosubtract1fromthelast@ROW

with1,not 1QPwrapsthisfunctionin@ARRAY

works:@@(@ADDRESS(@CELL("row",D6),1))Thatfunctioncanbecreatedwithoutknowingthecell,again,bythis:@@(@ADDRESS(@CELL("row",c(0)r(0)),1))SameColumn,Row1

Page 105: Quattro Pro Formulas, Functions, and Macros
Page 106: Quattro Pro Formulas, Functions, and Macros
Page 107: Quattro Pro Formulas, Functions, and Macros
Page 108: Quattro Pro Formulas, Functions, and Macros
Page 109: Quattro Pro Formulas, Functions, and Macros

10. Database Functions 95

Table 10.5: Getting the last five values in a column

A B

Page 110: Quattro Pro Formulas, Functions, and Macros
Page 111: Quattro Pro Formulas, Functions, and Macros
Page 112: Quattro Pro Formulas, Functions, and Macros

98 10. Database Functions

@IF(@NOT(@ISERR(@MATCH(A2,$A$1..A1,0))),

"Match!!","")

This tests each cell from A2 down to see if it matches an earlier one, and if it does,it shows Match!! in the cell.

How to return the (first) matching row of data in adatabase

A common task is for functions to find an item in a database and return associ-

Page 113: Quattro Pro Formulas, Functions, and Macros

10. Database Functions 99

that returned later matches with an additional parameter, as exists in functions like@LARGEST.) What if we want to return every match, not just the first one?

Notebook queries can be set up to get all matches fairly painlessly, but theydo require their own set-up and manual operation, even if that is made easier bymacros. The QuickFilter can also be used to get useful information. Each requiresmanual operation.

In this section, we want to do it with @Functions, which can be used, but itrequires some careful work.

We will use random data (4 people, 3 instances each, randomly arranged) asshown in A1..B13 of Table 10.7. There are at least three strategies for gettingmatches beyond the first one.

• One method is to restrict the block that @MATCH searches in each row, so as to

Page 114: Quattro Pro Formulas, Functions, and Macros
Page 115: Quattro Pro Formulas, Functions, and Macros

10. Database Functions

Page 116: Quattro Pro Formulas, Functions, and Macros
Page 117: Quattro Pro Formulas, Functions, and Macros

10. Database Functions 103

How to find the top three scores in a database

Taking the last application and going one step further, we now use functions toreturn the top 3 values in a database with random scores. There are again at leasttwo ways to do it, depending on whether we use the technique of restricting therange (method 1) or assigning a unique value (method 2).

Page 118: Quattro Pro Formulas, Functions, and Macros
Page 119: Quattro Pro Formulas, Functions, and Macros

10. Database Functions 105

Page 120: Quattro Pro Formulas, Functions, and Macros

Part III

Quattro Pro Macros

106

Page 121: Quattro Pro Formulas, Functions, and Macros
Page 122: Quattro Pro Formulas, Functions, and Macros
Page 123: Quattro Pro Formulas, Functions, and Macros
Page 124: Quattro Pro Formulas, Functions, and Macros

11011.IntroductiontoQuattroProMacros

TheTestargumenttestsapropositionthateitherevaluatesastrue(1,orap-

parentlyanynon-zeronumber)orfalse(0).TheTestargumentusuallyinvolves

equationsandinequalities(suchas=,>,<,>=,

Page 125: Quattro Pro Formulas, Functions, and Macros
Page 126: Quattro Pro Formulas, Functions, and Macros
Page 127: Quattro Pro Formulas, Functions, and Macros

11. Introduction to Quattro Pro Macros 113

Stop# stops the {For} command from executing the macro at MacroCell, if thevalue in CounterCell has passed the Stop#. Thus, if the CounterCell merelyequals the Stop#

Page 128: Quattro Pro Formulas, Functions, and Macros

114 11. Introduction to Quattro Pro Macros

2. Use an {If}

Page 129: Quattro Pro Formulas, Functions, and Macros

11. Introduction to Quattro Pro Macros 115

Page 130: Quattro Pro Formulas, Functions, and Macros
Page 131: Quattro Pro Formulas, Functions, and Macros
Page 134: Quattro Pro Formulas, Functions, and Macros
Page 135: Quattro Pro Formulas, Functions, and Macros
Page 136: Quattro Pro Formulas, Functions, and Macros
Page 137: Quattro Pro Formulas, Functions, and Macros
Page 138: Quattro Pro Formulas, Functions, and Macros

124 13. Navigation and Selection Macros

EditGoto

{EditGoto CellorBlock<,ExtendSelection> } selects the Cell or Block spe-cified as the first argument. If you select more than one cell in the CellorBlock

argument, the active cell will be the topmost, leftmost cell in the Block.The unique feature of {EditGoTo}

Page 139: Quattro Pro Formulas, Functions, and Macros

13. Navigation and Selection Macros 125

How to move to the leftmost cell on the row

There are several possible ways to move to the leftmost cell in the same row.{Left @CELLPOINTER("col")-1}

{SelectBlock @OFFSET(A1,@CELLPOINTER("row")-1,0)}

{Left 1000}

The last one works if you will never have more than 1000 columns to the right; thedefault maximum is 256).

How to move to the first blank cell at the bottom of acolumn of data

Here are some ways to move to the first blank cell at the bottom of data in thatA column.

Page 140: Quattro Pro Formulas, Functions, and Macros
Page 141: Quattro Pro Formulas, Functions, and Macros
Page 142: Quattro Pro Formulas, Functions, and Macros

128 13. Navigation and Selection Macros

{Shift+Right 3}

To do the same with @OFFSET, the programmer can navigate to the topmost, left-most cell in the block and use an R1C1 reference to anchor the block. For example,to select the 1x4 block consisting of the current cell and three cells to the right, use:

{SelectBlock @OFFSET(c(0)r(0),0,0,1,4)}

How to select the same cells on restarting, after closing thefile

The macro in Table 13.8 illustrates how you can save the selected cell or cells atthe time of closing a file and have QP select the same cells when you re-open thefile. This is true even if you have selected non-contiguous blocks of cells. Cell B2 isnamed _NBStartMacro, and B5 is named _NBExitMacro. Naming the cells that way

Page 143: Quattro Pro Formulas, Functions, and Macros
Page 144: Quattro Pro Formulas, Functions, and Macros
Page 146: Quattro Pro Formulas, Functions, and Macros

132 14. Interface Macros

width of 768, the bottommost ScreenY value that would display a characterwas 45. Again, your monitor and resolution may differ from this.

Expiration This argument is optional. If it is omitted, the message remains untilthe user presses a key. The Expiration argument should contain a number

Page 147: Quattro Pro Formulas, Functions, and Macros
Page 148: Quattro Pro Formulas, Functions, and Macros

134 14. Interface Macros

Table 14.2: Running different commands, depending on Yes/No choice

Page 150: Quattro Pro Formulas, Functions, and Macros
Page 151: Quattro Pro Formulas, Functions, and Macros
Page 152: Quattro Pro Formulas, Functions, and Macros
Page 153: Quattro Pro Formulas, Functions, and Macros
Page 155: Quattro Pro Formulas, Functions, and Macros
Page 158: Quattro Pro Formulas, Functions, and Macros

144 15. Cell Property Macros

Table 15.3: Copying Properties

A

1 {SelectBlock SourceCell}

2 {EditCopy}

3 {SelectBlock TargetCell}

4 {PasteSpecial Properties}

How to copy selected cell properties from one cell toanother

One can transfer selected cell properties from a source cell to a target cell byusing either of the {SetProperty}either of the{SetProperty}eith21.5667(of)-337(thObj)-3e

Page 159: Quattro Pro Formulas, Functions, and Macros
Page 161: Quattro Pro Formulas, Functions, and Macros

15. Cell Property Macros 147

The macro then drops down and line and loops back to the top. The results are asdepicted in the A and B columns.

Table 15.10: Coloring text based on conditions in other cells

A B C D E

1 a b 1 {If @CELLPOINTER("contents")=""}{Up}{End}{Up}{Quit}

2 a b 2 {If @CELLPOINTER("contents")=1}

Page 163: Quattro Pro Formulas, Functions, and Macros

15. Cell Property Macros 149

Table 15.13: Zebra-striping a block

A B

Page 164: Quattro Pro Formulas, Functions, and Macros
Page 165: Quattro Pro Formulas, Functions, and Macros
Page 166: Quattro Pro Formulas, Functions, and Macros
Page 167: Quattro Pro Formulas, Functions, and Macros
Page 168: Quattro Pro Formulas, Functions, and Macros

154 16. Cell Content Macros

This is a very quick and easy way to replicate particular blocks of data in a newlocation. However, it has a few possible drawbacks:

• It copies all formatting from the source cells, and you may only want numericformatting.

• I have also occasionally sensed that it is slower than other methods, per-haps since {BlockValues}

Page 169: Quattro Pro Formulas, Functions, and Macros

16. Cell Content Macros 155

option must be set to 0: {BlockCopy Source,Target,1,?,0}. If values areomitted, the target cell would remain unchanged.

In these and the following examples, a question mark is left in the formulawhere the user can choose 1 or 0 for other options. Some choice of earlieroptions must be made in order to effectively choose a later option.

The Formulas? andop436(provi-27843ese)op436(indir278op436(way7843esr)-2436(tes8op436(ifop436((formu-153.463r)]TJ 0 -13.54e)-374(f-327rk)-3727rk-37028((formand)]TJ/F51 10.991 f 377.804 y)-516(Macros)]TJ/F35 10.909.393377.804 t)-278727rwhich37028(k)-3727rr)-37wi70(ch27rlack(follo27rk-37028(QP)90 0 To27rA)10(0-278(o27rclf)-(follo27r(formand)]TJ/F51 10.9-111.433a)]TJ 0 -13.5Source(Macros)]TJ/F35 10.909.029377.804 t)-2omit98be)-t(folormand)]TJ/F51 10.9f 102f 22.775 0 Td [(Formulas?)]TJ/F35 10.905.016 22.775 r)-2794se The

Page 170: Quattro Pro Formulas, Functions, and Macros
Page 171: Quattro Pro Formulas, Functions, and Macros
Page 172: Quattro Pro Formulas, Functions, and Macros
Page 173: Quattro Pro Formulas, Functions, and Macros

16. Cell Content Macros 159

48-63 % (percent, 0-15 decimals) Same

64-79 , (comma, 0-15 decimals) Same

80-95 not mentioned 42,072; 42,071.6; 42,071.57;42,071.567; 42,071.5670;42,071.56700; etc.This is comma format

Page 174: Quattro Pro Formulas, Functions, and Macros

160 16. Cell Content Macros

Table 16.3: Search and replace by macro

A B

Page 175: Quattro Pro Formulas, Functions, and Macros
Page 177: Quattro Pro Formulas, Functions, and Macros
Page 178: Quattro Pro Formulas, Functions, and Macros

164 16. Cell Content Macros

Removing Prefixes. If the column contains text beginning with a prefix, a macrocan easily remove the prefix:

{If @CELLPOINTER("type")<>"b"}

{Edit}{Home}{Del}{D}

{Branch c(0)r(0)}

Incrementing cells. If you need to add one to each cell in the column, use this:{If @CELLPOINTER("type")<>"b"}

{Putcell c(0)r(0)+1}

Page 179: Quattro Pro Formulas, Functions, and Macros

16. Cell Content Macros 165

How to override in-cell formatting

QP displays the properties of the selected cell on its property bar, but the usercan select all or part of the contents of the cell and apply different formatting. Thiscan cause confusion when the apparent format of the cell differs from the format

Page 181: Quattro Pro Formulas, Functions, and Macros

17. Date and Time Macros 167

1. Click

Page 182: Quattro Pro Formulas, Functions, and Macros
Page 183: Quattro Pro Formulas, Functions, and Macros

17. Date and Time Macros 169

C1), to be run oo2me Macros

Page 184: Quattro Pro Formulas, Functions, and Macros
Page 185: Quattro Pro Formulas, Functions, and Macros
Page 186: Quattro Pro Formulas, Functions, and Macros
Page 187: Quattro Pro Formulas, Functions, and Macros
Page 188: Quattro Pro Formulas, Functions, and Macros
Page 189: Quattro Pro Formulas, Functions, and Macros
Page 190: Quattro Pro Formulas, Functions, and Macros
Page 191: Quattro Pro Formulas, Functions, and Macros
Page 192: Quattro Pro Formulas, Functions, and Macros
Page 194: Quattro Pro Formulas, Functions, and Macros

180 18. Database Retrieval Macros

rows. There appears to be no generic command, so Table 18.16 shows one way todo it, using the techniques discussed above.1

Table 18.16: Transposing data from consecutive pages onto consecutive rows

AAAAAAA

Page 195: Quattro Pro Formulas, Functions, and Macros
Page 196: Quattro Pro Formulas, Functions, and Macros
Page 197: Quattro Pro Formulas, Functions, and Macros

18. Database Retrieval Macros 183

items by placing terms capable of exact matches in E:A2..E5, and that to search forone of two terms in the same category, you need to put both terms in two rowsunder the correct category (e.g., E:D2..D3) and expand the Criteria Table. Thoughthose concepts work, they are neither necessary nor desirable. Instead, a placementlike 4.32 in E:D2 above is really a shorthand for

Page 198: Quattro Pro Formulas, Functions, and Macros
Page 199: Quattro Pro Formulas, Functions, and Macros

18. Database Retrieval Macros 185

Table 18.20: Macro alternative to simple Database Queries

Page 200: Quattro Pro Formulas, Functions, and Macros

186 18. Database Retrieval Macros

field name from the output table, and look for the value at the intersection of thatfield name in the database and the current database row. B12 begins with an if testto determine whether the value at that intersection is blank or not; if not, it printsit to the output, but if it is blank, the macro bypasses it. The reason for doing so is

Page 201: Quattro Pro Formulas, Functions, and Macros
Page 202: Quattro Pro Formulas, Functions, and Macros
Page 203: Quattro Pro Formulas, Functions, and Macros
Page 204: Quattro Pro Formulas, Functions, and Macros
Page 205: Quattro Pro Formulas, Functions, and Macros
Page 206: Quattro Pro Formulas, Functions, and Macros
Page 207: Quattro Pro Formulas, Functions, and Macros
Page 208: Quattro Pro Formulas, Functions, and Macros
Page 209: Quattro Pro Formulas, Functions, and Macros

19. Data Modification Macros 195

Table 19.10: Applying 5% discount to certain values in a column

A B

1 D-Row {For A1,0,@Count(Data:A1..A1000)-1,1,B3}

2

Page 210: Quattro Pro Formulas, Functions, and Macros
Page 211: Quattro Pro Formulas, Functions, and Macros

20. Database Structure Macros 197

Table 20.1: Valid Sort Settings for Data in A5..D100

Heading 0 A5..D100

Heading 1 HeadingSize 1 A4..D100

Heading 1 HeadingSize 2 A3..D100

Heading 1 HeadingSize 3 A2..D100

Page 212: Quattro Pro Formulas, Functions, and Macros

198 20. Database Structure Macros

If the block is more than one cell high, the commands to insert or delete rowswill insert or delete the same number of rows.

If the block is more than one cell wide, the commands to insert or deletecolumns will insert or delete the same number of columns.

EntireOrPartial. This argument requires the programmer to choose whether to

Page 213: Quattro Pro Formulas, Functions, and Macros
Page 214: Quattro Pro Formulas, Functions, and Macros
Page 215: Quattro Pro Formulas, Functions, and Macros

21. Export/Import Macros 201

The HeaderMargin is expressed in a height such as "0.5 in".The FontSettings

Page 216: Quattro Pro Formulas, Functions, and Macros
Page 218: Quattro Pro Formulas, Functions, and Macros
Page 219: Quattro Pro Formulas, Functions, and Macros

21. Export/Import Macros 205

{GetPos Cell} stores the current position of the byte pointer in the open text filein Cell. The byte pointer is the point from which {ReadLn} would read aline of text and to which {WriteLn} would write a line of text. For more

Page 220: Quattro Pro Formulas, Functions, and Macros
Page 221: Quattro Pro Formulas, Functions, and Macros

21. Export/Import Macros 207

three columns of entries from Data:A1..C10000 to C:\Temp\MyData.txt, whetherthat file exists or not, and it if exists, it appends the data to the end of the file.

Table 21.4: Appending text to an existing file, or creating a new one

Page 222: Quattro Pro Formulas, Functions, and Macros
Page 224: Quattro Pro Formulas, Functions, and Macros
Page 225: Quattro Pro Formulas, Functions, and Macros
Page 226: Quattro Pro Formulas, Functions, and Macros

212 22. Exporting to WordPerfect

3. Merging (under Tools > Merge) in several ways: directly from QP, via a different

Page 227: Quattro Pro Formulas, Functions, and Macros
Page 228: Quattro Pro Formulas, Functions, and Macros
Page 229: Quattro Pro Formulas, Functions, and Macros
Page 231: Quattro Pro Formulas, Functions, and Macros
Page 232: Quattro Pro Formulas, Functions, and Macros
Page 233: Quattro Pro Formulas, Functions, and Macros

22. Exporting to WordPerfect 219

currently open spreadsheet. The programmer can obviously set the name byother means. And if the first row of data contains field names, the argumentfor ImportSetFirstRecFieldnames should be Yes!.

Table 22.3: Merging from text files

Application (wp; "WordPerfect"; Default!; "EN")

Application (qp; "QuattroPro"; Default!)

vDataFile=qp.GetCellValue("A:A1")

ImportSetFileName (vDataFile)

ImportSetSource (ASCII!)

ImportSetDestination (MergeData!)

ImportSetSizeToFit (No!)

ImportSetFirstRecFieldnames (No!)

ImportSetAsciiFieldDelimiter ("")

ImportSetAsciiRecordDelimiter ("")

ImportSetAsciiStrip ("")

ImportSetAsciiEncap ("")

ImportSetMacroVariableName ("")

ViewDraft (Yes!)

Page 234: Quattro Pro Formulas, Functions, and Macros
Page 237: Quattro Pro Formulas, Functions, and Macros
Page 238: Quattro Pro Formulas, Functions, and Macros
Page 240: Quattro Pro Formulas, Functions, and Macros
Page 241: Quattro Pro Formulas, Functions, and Macros

23. Launching, Linking, and Other Useful Macros 227

notepad (see page 225) or import it into the spreadsheet using some variation ofthe algorithm outlined on page 205.

How to get Windows environmental variables into QP

In a thread at WPU, a user asked how to get the environmental variablebleble2oER-PROFILE in a way so that QP couldaySe-359(page)]TJ0 0 1 rg 0 0 1couat 205

Page 242: Quattro Pro Formulas, Functions, and Macros
Page 243: Quattro Pro Formulas, Functions, and Macros

23. Launching, Linking, and Other Useful Macros 229

should display. This will have the effect of causing each file name in column A toinclude the full path.

Finally, the commands in B7 drop the cursor to the next cell below and loop backto B5, to modify each cell in column A in the same way. The result is that each file isa hyperlink that can now be clicked to have the operating system execute that file.

Page 244: Quattro Pro Formulas, Functions, and Macros

230 23. Launching, Linking, and Other Useful Macros

Page 247: Quattro Pro Formulas, Functions, and Macros

23. Launching, Linking, and Other Useful Macros 233

How to merge from a QP database without WordPerfect

In WPU 37705, I offered a little spreadsheet that created a series of twenty lettersfrom a QP database of twenty individuals. It compiles the letters from standard partsand paragraphs that contain variable content. This macro combined all the elementsand generated twenty letters in just over one second.

The notebook can be currently found on my website at QPMerge.qpw.

How to save dated versions of a QP notebook

In WPU 38361, a user wanted to know how to have QP save a backup file auto-matically, as WordPerfect does. The consensus was that QP lacks a similar feature(though it has a timed backup in case of crashes), but third party products may bethe best bet for approximating that function.

Page 248: Quattro Pro Formulas, Functions, and Macros
Page 249: Quattro Pro Formulas, Functions, and Macros

Chapter 24

Quattro Pro Macros in PerfectScript

PerfectScript is Corel’s macro-writing language for its Office suite, and themacros are saved as .WCM files. This book is not the place to present a primeron PerfectScript, which would be an extensive subject standing alone. Instead, thebook assumes that you know how to compose a PerfectScript macro and provides afew finer points for applying it to QP.

Page 252: Quattro Pro Formulas, Functions, and Macros

238 24. PerfectScript

The Eval command

To have the macro use a QP function to give it data from or about the spread-sheet, place the function as text within an Eval

Page 253: Quattro Pro Formulas, Functions, and Macros
Page 254: Quattro Pro Formulas, Functions, and Macros
Page 255: Quattro Pro Formulas, Functions, and Macros
Page 256: Quattro Pro Formulas, Functions, and Macros
Page 257: Quattro Pro Formulas, Functions, and Macros
Page 258: Quattro Pro Formulas, Functions, and Macros

244 Index

~(tilde), 108\+0, 117\+Letter, 117Backslash macros, 117Cell content, 150, 157Cell Properties, 142Command buttons, 118, 141Commenting macros, 108Conditional formatting, 146Database

Adding or modifying, 188Retrieving information, 170Structural change, 196

Date and Time, 166Dynamic modification, 108Exporting to WordPerfect, 211Import/Export to text, 200Interface, 131Introduction, 107Keystroke shortcut macro, 117, 167Looping by {For}, 112Looping by branching, 111Naming cells, 117Navigation, 140Navigation and Selection, 122NBExitMacro, 117, 121, 168, 209NBStartMacro, 117, 120, 128Other useful macros, 224Positioning display, 140R1C1 in macros, 107

Page 259: Quattro Pro Formulas, Functions, and Macros