You've already forked lazarus-ccr
fpspreadsheet: Add built-in formula INDIRECT() (https://forum.lazarus.freepascal.org/index.php/topic,52081.0.html).
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7857 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -2165,7 +2165,6 @@ begin
|
|||||||
Result := StringResult(resStr);
|
Result := StringResult(resStr);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure fpsCOLUMN(var Result: TsExpressionResult;
|
procedure fpsCOLUMN(var Result: TsExpressionResult;
|
||||||
const Args: TsExprParameterArray);
|
const Args: TsExprParameterArray);
|
||||||
{ COLUMN( [reference] )
|
{ COLUMN( [reference] )
|
||||||
@ -2202,6 +2201,24 @@ begin
|
|||||||
Result.ResultType := rtHyperlink;
|
Result.ResultType := rtHyperlink;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure fpsINDIRECT(var Result: TsExpressionResult;
|
||||||
|
const Args: TsExprParameterArray);
|
||||||
|
{ INDIRECT(string_reference, [ref_style])
|
||||||
|
returns the reference to a cell based on its string representation
|
||||||
|
"string_reference": textual representation of a cell reference.
|
||||||
|
"ref_style": TRUE (default) ndicates that string_reference will be interpreted
|
||||||
|
as an A1-style reference. FALSE indicates that string_reference will be
|
||||||
|
interpreted as an R1C1-style reference.
|
||||||
|
|
||||||
|
NOTE: ref_style and mixing of A1 and R1C1 notation is not supported. }
|
||||||
|
begin
|
||||||
|
Result := ErrorResult(errArgError);
|
||||||
|
if Length(Args) = 0 then
|
||||||
|
exit;
|
||||||
|
Result := Args[0];
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure fpsMATCH(var Result: TsExpressionResult;
|
procedure fpsMATCH(var Result: TsExpressionResult;
|
||||||
const Args: TsExprParameterArray);
|
const Args: TsExprParameterArray);
|
||||||
{ MATCH( value, array, [match_type]
|
{ MATCH( value, array, [match_type]
|
||||||
@ -2469,6 +2486,7 @@ begin
|
|||||||
AddFunction(cat, 'ADDRESS', 'S', 'IIibs',INT_EXCEL_SHEET_FUNC_ADDRESS, @fpsADDRESS);
|
AddFunction(cat, 'ADDRESS', 'S', 'IIibs',INT_EXCEL_SHEET_FUNC_ADDRESS, @fpsADDRESS);
|
||||||
AddFunction(cat, 'COLUMN', 'I', 'r', INT_EXCEL_SHEET_FUNC_COLUMN, @fpsCOLUMN);
|
AddFunction(cat, 'COLUMN', 'I', 'r', INT_EXCEL_SHEET_FUNC_COLUMN, @fpsCOLUMN);
|
||||||
AddFunction(cat, 'HYPERLINK', 'S', 'Ss', INT_EXCEL_SHEET_FUNC_HYPERLINK, @fpsHYPERLINK);
|
AddFunction(cat, 'HYPERLINK', 'S', 'Ss', INT_EXCEL_SHEET_FUNC_HYPERLINK, @fpsHYPERLINK);
|
||||||
|
AddFunction(cat, 'INDIRECT', 'C', 'Sb', INT_EXCEL_SHEET_FUNC_INDIRECT, @fpsINDIRECT);
|
||||||
AddFunction(cat, 'MATCH', 'I', 'SRi', INT_EXCEL_SHEET_FUNC_MATCH, @fpsMATCH);
|
AddFunction(cat, 'MATCH', 'I', 'SRi', INT_EXCEL_SHEET_FUNC_MATCH, @fpsMATCH);
|
||||||
AddFunction(cat, 'ROW', 'I', 'r', INT_EXCEL_SHEET_FUNC_ROW, @fpsROW);
|
AddFunction(cat, 'ROW', 'I', 'r', INT_EXCEL_SHEET_FUNC_ROW, @fpsROW);
|
||||||
|
|
||||||
|
@ -209,6 +209,8 @@ const
|
|||||||
INT_EXCEL_SHEET_FUNC_SYD = 143;
|
INT_EXCEL_SHEET_FUNC_SYD = 143;
|
||||||
INT_EXCEL_SHEET_FUNC_DDB = 144;
|
INT_EXCEL_SHEET_FUNC_DDB = 144;
|
||||||
|
|
||||||
|
INT_EXCEL_SHEET_FUNC_INDIRECT = 148;
|
||||||
|
|
||||||
INT_EXCEL_SHEET_FUNC_CLEAN = 162;
|
INT_EXCEL_SHEET_FUNC_CLEAN = 162;
|
||||||
INT_EXCEL_SHEET_FUNC_MDETERM = 163;
|
INT_EXCEL_SHEET_FUNC_MDETERM = 163;
|
||||||
INT_EXCEL_SHEET_FUNC_MINVERSE = 164;
|
INT_EXCEL_SHEET_FUNC_MINVERSE = 164;
|
||||||
|
Reference in New Issue
Block a user