diff --git a/EPPlus/ExcelCellBase.cs b/EPPlus/ExcelCellBase.cs
index 05c3fa6..529365c 100644
--- a/EPPlus/ExcelCellBase.cs
+++ b/EPPlus/ExcelCellBase.cs
@@ -1401,8 +1401,6 @@
         /// <returns></returns>
         internal static string UpdateFormulaReferences(string Formula, int rowIncrement, int colIncrement, int afterRow, int afterColumn, bool setFixed=false)
         {
-            return "";
-            /*
             //return Translate(Formula, AddToRowColumnTranslator, afterRow, afterColumn, rowIncrement, colIncrement);
             var d=new Dictionary<string, object>();
             try
@@ -1461,7 +1459,6 @@
             {
                 return Formula;
             }
-            */
         }
 
         #endregion
diff --git a/EPPlus/ExcelRangeBase.cs b/EPPlus/ExcelRangeBase.cs
index 288ad58..123faa2 100644
--- a/EPPlus/ExcelRangeBase.cs
+++ b/EPPlus/ExcelRangeBase.cs
@@ -1166,6 +1166,19 @@
 				}
 			}
 		}
+
+        /// <summary>
+		/// Gets or Set a formula in R1C1 format.
+		/// 
+        public string FormulaR1C1_V1
+        {
+            get
+            {
+                IsRangeValid("FormulaR1C1");
+                return _worksheet.GetFormulaR1C1_V1(_fromRow, _fromCol);
+            }
+        }
+
         public string ArrayFormulaAddress
         {
             get
diff --git a/EPPlus/ExcelWorksheet.cs b/EPPlus/ExcelWorksheet.cs
index 64c0899..ed00419 100644
--- a/EPPlus/ExcelWorksheet.cs
+++ b/EPPlus/ExcelWorksheet.cs
@@ -4228,6 +4228,25 @@
                 return "";
             }
         }
+
+        internal string GetFormulaR1C1_V1(int row, int col)
+        {
+            var v = _formulas.GetValue(row, col);
+            if (v is int)
+            {
+                var sf = _sharedFormulas[(int)v];
+                return ExcelCellBase.TranslateToR1C1_V1(Formulas.RemoveDummyFunction(sf.Formula), sf.StartRow, sf.StartCol);
+            }
+            else if (v != null)
+            {
+                return ExcelCellBase.TranslateToR1C1_V1(v.ToString(), row, col);
+            }
+            else
+            {
+                return "";
+            }
+        }
+
         internal string GetArrayFormulaAddress(int row, int col)
         {
             var v = _formulas.GetValue(row, col);
