I have done same thing using Excel Addin 2013. You can do the same using Addin by writing code of CSOM for SharePoint List. You can use this Event in Addin :
void Application_WorkbookBeforeSave(Microsoft.Office.Interop.Excel.Workbook Wb, bool SaveAsUI, ref bool Cancel)
And In this event you can add code like following of mine :
try
{
Microsoft.SharePoint.Client.ClientContext clientContextproj = new Microsoft.SharePoint.Client.ClientContext("sharepointURL");
Web siteproj = clientContextproj.Web;
clientContextproj.AuthenticationMode = ClientAuthenticationMode.Default;
clientContextproj.Credentials = new System.Net.NetworkCredential("username", "password", "domain");
CamlQuery query1 = new CamlQuery();
query1.ViewXml = "<View><Query><FieldRef Name='ID'/><Value Type='Text'></Value></Query></View>";
List resourceMaster = siteproj.Lists.GetByTitle("Listname");
Microsoft.SharePoint.Client.ListItemCollection collListResourceMaster = resourceMaster.GetItems(query1);
clientContextproj.Load(collListResourceMaster);
clientContextproj.ExecuteQuery();
Excel.Worksheet activeWorksheet = ((Excel.Worksheet)Application.ActiveSheet);
bool flag = true;
int counter = 2;
while (flag)
{
string columnHeader = "A" + counter.ToString();
Excel.Range row = activeWorksheet.get_Range(columnHeader);
if (row.Value2 != null)
{
if (collListResourceMaster.Count != 0)
{
foreach (Microsoft.SharePoint.Client.ListItem targetListItemProj in collListResourceMaster)
{
var currentResourceId = targetListItemProj["EmployeeCode"];
if (currentResourceId != null && currentResourceId.Equals(Convert.ToString(row.Value2)))
{
Excel.Range Exprow = activeWorksheet.get_Range("C" + counter.ToString());
string ValueTotal = Convert.ToString(Exprow.Value2);
string[] beforeExp = ValueTotal.Split('.');
int totalMonth = Convert.ToInt32(beforeExp[0]) * 12;
if (beforeExp.Count() > 1)
{
totalMonth += Convert.ToInt32(beforeExp[1]);
}
targetListItemProj["FieldToUpdate"] = totalMonth;
targetListItemProj.Update();
clientContextproj.ExecuteQuery();
break;
}
}
counter += 1;
}
}
else
{
flag = false;
}
}
}
catch (Exception ex)
{
throw ex;
}
This code updates columns which records have same EmployeeCode in List and in Excel.
This will update until record found in excel.