diff --git a/ClosedXML/ClosedXML.csproj b/ClosedXML/ClosedXML.csproj
index bf439af..a7bc0e1 100644
--- a/ClosedXML/ClosedXML.csproj
+++ b/ClosedXML/ClosedXML.csproj
@@ -131,6 +131,7 @@
+
diff --git a/ClosedXML/Excel/CalcEngine/CalcEngineHelpers.cs b/ClosedXML/Excel/CalcEngine/CalcEngineHelpers.cs
index e1b6e51..c45be92 100644
--- a/ClosedXML/Excel/CalcEngine/CalcEngineHelpers.cs
+++ b/ClosedXML/Excel/CalcEngine/CalcEngineHelpers.cs
@@ -51,7 +51,9 @@
return cs.Equals(value);
// if criteria is an expression (e.g. ">20"), use calc engine
- if (cs[0] == '=' || cs[0] == '<' || cs[0] == '>')
+ if ((cs[0] == '=' && cs.IndexOfAny(new[] { '*', '?' }) < 0)
+ || cs[0] == '<'
+ || cs[0] == '>')
{
// build expression
var expression = string.Format("{0}{1}", value, cs);
@@ -79,6 +81,8 @@
// if criteria is a regular expression, use regex
if (cs.IndexOfAny(new[] { '*', '?' }) > -1)
{
+ if (cs[0] == '=') cs = cs.Substring(1);
+
var pattern = Regex.Replace(
cs,
"(" + String.Join(
diff --git a/ClosedXML/Excel/CalcEngine/Expression.cs b/ClosedXML/Excel/CalcEngine/Expression.cs
index ff1288c..a65b7ad 100644
--- a/ClosedXML/Excel/CalcEngine/Expression.cs
+++ b/ClosedXML/Excel/CalcEngine/Expression.cs
@@ -486,6 +486,9 @@
public IEnumerator GetEnumerator()
{
+ if (_value is string)
+ return new [] {(string) _value}.GetEnumerator();
+
return (_value as IEnumerable).GetEnumerator();
}
diff --git a/ClosedXML/Excel/CalcEngine/Functions/MathTrig.cs b/ClosedXML/Excel/CalcEngine/Functions/MathTrig.cs
index dfd9d25..233a7c8 100644
--- a/ClosedXML/Excel/CalcEngine/Functions/MathTrig.cs
+++ b/ClosedXML/Excel/CalcEngine/Functions/MathTrig.cs
@@ -378,18 +378,18 @@
int numberOfCriteria = p.Count / 2; // int division returns floor() automatically, that's what we want.
// prepare criteria-parameters:
- var criteriaRanges = new Tuple