diff --git a/EPPlus/ExcelAddress.cs b/EPPlus/ExcelAddress.cs
index c4c8c37..70f3012 100644
--- a/EPPlus/ExcelAddress.cs
+++ b/EPPlus/ExcelAddress.cs
@@ -264,14 +264,7 @@
             address = address.Trim();
             if (address.StartsWith("'"))
             {
-                int pos = address.IndexOf("'", 1);
-                while (pos < address.Length && address[pos + 1] == '\'')
-                {
-                    pos = address.IndexOf("'", pos+2);
-                }
-                var wbws = address.Substring(1,pos-1).Replace("''","'");
-                SetWbWs(wbws);
-                _address = address.Substring(pos + 2);
+                SetWbWs(address);
             }
             else if (address.StartsWith("[")) //Remove any external reference
             {
@@ -306,23 +299,51 @@
         }
         private void SetWbWs(string address)
         {
-            int pos;
-            if (address[0] == '[')
+            int pos = 0;
+
+            // Get Workbook, if any
+            if (address[pos] == '[')
             {
                 pos = address.IndexOf("]");
-                _wb = address.Substring(1, pos - 1);                
-                _ws = address.Substring(pos + 1);
+                _wb = address.Substring(1, pos - 1);
+                pos++;
             }
             else
             {
                 _wb = "";
-                _ws = address;
             }
-            pos = _ws.IndexOf("!");
+
+            // Get Worksheet
+            if (address[pos] == '\'')
+            {
+                int startPos = pos;
+                pos = address.IndexOf("'", pos + 1);
+                while (pos < address.Length && address[pos + 1] == '\'')
+                {
+                    pos = address.IndexOf("'", pos + 2);
+                }
+                _ws = address.Substring(startPos + 1, pos - startPos - 1).Replace("''", "'");
+                pos++;
+            }
+            else
+            {
+                int startPos = pos;
+                pos = address.IndexOf("!", pos);
+                if (pos > -1)
+                {
+                    _ws = address.Substring(startPos, pos - startPos);
+                }
+            }
+
+            // Get Address
+            pos = address.IndexOf("!", pos);
             if (pos > -1)
             {
-                _address = _ws.Substring(pos + 1);
-                _ws = _ws.Substring(0, pos);
+                _address = address.Substring(pos + 1);
+            }
+            else
+            {
+                _address = "";
             }
         }
         internal void ChangeWorksheet(string wsName, string newWs)
