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.