From 71febc68908674a34483ba56abbc7642c11150e0 Mon Sep 17 00:00:00 2001 From: "Dmitry.Shahtanov" Date: Fri, 14 Jun 2013 11:38:11 +0000 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=BE=D0=B4=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20COUNTIF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@47271 954022d7-b5bf-4e40-9824-e11837661b57 --- Excel/model/parserFormula.js | 37 +++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/Excel/model/parserFormula.js b/Excel/model/parserFormula.js index 368c6a0aa8..c9c6e3642e 100644 --- a/Excel/model/parserFormula.js +++ b/Excel/model/parserFormula.js @@ -6223,6 +6223,15 @@ var cFormulaFunction = { return this.value = new cError( cErrorType.wrong_value_type ); } + if ( arg1 instanceof cArea || arg1 instanceof cArea3D ){ + arg1 = arg1.cross(arguments[1].first); + } + else if( arg1 instanceof cArray ){ + arg1 = arg1.getElementRowCol(0,0); + } + + arg1 = arg1.tocString(); + if( !(arg1 instanceof cString) ){ return this.value = new cError( cErrorType.wrong_value_type ); } @@ -6231,9 +6240,6 @@ var cFormulaFunction = { var res = 0; if( typeof x === typeof y ){ switch(oper){ - case "=": - res = (x.value == y.value); - break; case "<>": res = (x.value != y.value); break; @@ -6249,8 +6255,11 @@ var cFormulaFunction = { case "<=": res = (x.value <= y.value); break; + case "=": default: - res = 0; + res = (x.value == y.value); + break; + } } _count += res; @@ -6259,21 +6268,27 @@ var cFormulaFunction = { arg1 = arg1.toString(); var operators = new RegExp("^ *[<=> ]+ *"), searchOperators = new RegExp("^ *[*?]") var match = arg1.match(operators); - if( match ){ - var search = arg1.substr( match[0].length ), oper = match[0].replace(/\s/g,""), val; + if( match || parseNum(arg1) ){ + + var search, oper, val; + if( match ){ + search = arg1.substr( match[0].length ); + oper = match[0].replace(/\s/g,""); + } + else{ + search = arg1; + } valueForSearching = parseNum( search ) ? new cNumber( search ) : new cString( search ); if( arg0 instanceof cArea ){ val = arg0.getValue(); - for( var i in val ){ + for( var i = 0; i < val.length; i++ ){ matching( val[i], valueForSearching, oper); } } else if( arg0 instanceof cArea3D ){ val = arg0.getValue(); - for(var i in val){ - for(var j in val[i]){ - matching( val[i][j], valueForSearching, oper); - } + for(var i = 0; i < val.length; i++){ + matching( val[i], valueForSearching, oper); } } else{