How to highlight cells in one table as matching cells in another table are highlighted

I have two tables in an html document <table id="table1"> and <table id="table2">.
There are 10 columns and 5 rows in each table.
Each cell contains either one or two alphanumeric or special (e.g. *, $ , % etc) characters.

I would like it to function as follows:

When I hover or select a cell (on a specific row – e.g. top row) of table1, e.g. containing the "Z" character, then the "Z" character will be highlighted /selected on table2 if it appears on the same specific row (i.e. top row of…

How to highlight cells in one table as matching cells in another table are highlighted

Mass / batch – update / edit cells with in a grid

I am looking for some ideas on the UX of allowing a user to edit multiple cells in a grid at one time. These users may have thousands of records and they need to provide data on each record, this data may be duplicated across multiple records so I am trying to figure out a clean way to allow them to apply a value to multiple cells easily.

Hoping to not implement excel in my application.

Any help would be appreciated 🙂

Segmenting cells from a stained image of cells from microscope

I have an image which has stained cells and I have to segment all the cells.

But the problem is that the cell boundary is not very distinguished where there is staining done because of the stain.

Can someone kindly help me with segmenting the image and getting cell boundary?

please find the image here:

https://drive.google.com/open?id=1liPzqZz1AWEgdI5PKNguWXyj8Y70XEGa

I tried various filters like RidgeFilter, DerivativeFilter, GaussianFilter and combination of them.

I am using Mathematica 12.

Only take cells with values

tl;dr how can I make the script take an entire column (eg A:A) and then ignore the first (header) row, and any blank rows?

Background

I have an array in Google Sheets with date-ordered data (note dates are in UK format), where I will routinely add new entries every few weeks.

          A               B 1    Recorded date      Value 2    17/3/2018            120 3    1/9/2018             145 4    31/12/2018           210 5    31/3/2019            273 6    5/6/2019             412 

In a separate sheet, I want to be able to list other dates, lookup against those date, and return either the right value (if it matches one of the recorded dates) OR a linear interpolation between the two closest dates.

For instance:

          A               B      C          D                  E 1    Recorded date      Value           Lookup date         Result 2    17/3/2018            120           1/9/2018              125 3    1/9/2018             145           14/2/2019          241.51 4    31/12/2018           210 5    31/3/2019            273 6    5/6/2019             412 

(In reality, the lookup cells are daily rows in a different sheet)

I have achieved the simple mechanics of interpolation by adapting the great answers to the question How to interpolate data in a range in Google Sheets. Indeed, I have put my current code below for reference.

PROBLEM: I want to feed the entire column into the script, not just the rows 2-6

My current problem is that this script only works if the inputted x and y ranges cover the exact range of available data. Therefore if more observations are recorded into columns A and B, I have to change the formula.

So in the example above, I need to use the following formula in cell E2 otherwise it returns an error:

=getvalue(A2:A6,B2:B6,D2) 

Ideally, the formula in E2 would be the following, which would allow the E column to always work regardless of the number of observations recorded in A and B:

=getvalue(A:A,B:B,D2) 

In short: how can I make the script take an entire column (eg A:A) and then ignore the first (header) row, and any blank rows?

Here is my current script:

function getvalueTEST(x, y, lookupdate) {   if (lookupdate.map) {     return lookupdate.map(function(v) {       return getvalue(x, y, v);     });   }    if (lookupdate > Math.max.apply(Math, x) || lookupdate < Math.min.apply(Math, x)) {     throw "lookupdate can't be interpolated !!";     return;   }    var check = 0, index;   for(var i = 0, iLen = x.length; i < iLen; i++) {     if(x[i][0] == lookupdate) {       return y[i][0];     } else {             if(x[i][0] < lookupdate && ((x[i][0] - check) < (lookupdate - check))) {         check = x[i][0];         index = i;       }     }   }    var xValue, yValue, xDiff, yDiff, xInt;   yValue = y[index][0];   xDiff = x[index+1][0] - check;   yDiff = y[index+1][0] - yValue;   xInt = lookupdate - check;     return (xInt * (yDiff / xDiff)) + yValue;   } 

Also this is my first question – so let me know if I should format/ask it differently!

All cells don’t update at the same time, automaton

I am wondering what direction to go in analysing the fact that on a grid of graph paper lattice (squares) for 2d cellular automata, the diagonal of a square is longer, so that motion on television snow travelling in the diagonal direction must travel faster because that direction is longer. But this is predicated on the assumption that all cells update at the same time (true). There must be some distortion in the image in real time on the screen, so I’m wondering how somebody could change the part that all cells update at the same time from the list, to some cells are delayed, in order to reduce distortion on the screen from the fast diagonal movers of apparant motion objects travelling diagonally versus left-right or up-down movers. Would this be a usage of combining the parallel nature of automata somehow with concurrancy? My idea is that in real time in viewing on the screen, that there is a delay in the presentation of a few of the cells, a stutter step, that doesn’t ever affect the computation, but would affect what the viewer is seeing, ie there can be a delay in just a few cells turning on or off that overall reduces distortion, but in the end the final picture is the same.

edit: the only other idea is that diagonal direction movers are not travelling faster, and that to compensate this, that the cells are not being updated at the same time, so that there is a stutter step present on screen, a form of acceleration in the underlying programming, ie, the fact that they’re not travelling faster in the diagonal direction is causing an efficiency increase in the program if that fact weren’t there, because a stutter step, or acceleration, means that a vortex is occuring in the data inside the computer. In other words, to improve the stutter step, delay (concurrent programming and not parallel programming), is to program concurrent programming not in 1d data, but in 2d arrays with pointers: http://www.davdata.nl/math/arrays.html Because a vortex is occuring whenever a 2d array is present, as you saw a vortex or tornado occured in the above stutter step viewed on the screen in the automata.

How to timestamp on new added cells in LIVE google spreadsheet?

The code below insert timestamp in google sheet by editing another column. However, there an issue which I have no idea how to solve. When I add new row manually, it successfully adds timestamp, BUT I have an html form in my website which sends data to this sheet and even-though new row is added, google don’t create a timestamp !!! It’s a bit weird since conceptually when a new row is added, means an edit in cell, and google must add timestamp. I would be so grateful if someone help me to solve this issue. Thanks

function onEdit(event) {    var timezone = "GMT+8:30";   var timestamp_format = "yyyy-MM-dd HH:mm:ss"; // Timestamp Format.    var updateColName = "date";   var timeStampColName = "Date Sent";   var sheet = event.source.getSheetByName('Attendance'); //Name of the sheet where you want to run this script.     var actRng = event.source.getActiveRange();   var editColumn = actRng.getColumn();   var index = actRng.getRowIndex();   var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();   var dateCol = headers[0].indexOf(timeStampColName);   var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1;   if (dateCol > -1 && index > 1 && editColumn == updateCol) { // only timestamp if 'Last Updated' header exists, but not in the header row itself!     var cell = sheet.getRange(index, dateCol + 1);     var date = Utilities.formatDate(new Date(), timezone, timestamp_format);     cell.setValue(date);   } } 

Split cells not importing first 0

I am using split formula:

=IFERROR(SPLIT(REGEXREPLACE(" , "&U4,  "(\d)",  "$  1 ,"),  ",  ")) 

It works great except if I have 0250, it imports it across as 250, even with the cell it’s importing from is set to #000 and it sits in the 1st 3 cells instead of the 2nd 3rd and 4th cells

When the number is 1250 it works fine, but if it’s 0250 then it comes through as 250 not 0250

2 timestamps in different cells at the same time [duplicate]

This question already has an answer here:

  • Running multiple onEdit scripts 1 answer
function onEdit(event) {   var timezone = "GMT-7";   var timestamp_format = "MM-dd-yyyy-hh:mm"; // Timestamp Format.    var updateColName = "Ext Warehouse";   var timeStampColName = "Date/Time Change";   var sheet = event.source.getSheetByName('EXT Changes'); //Name of the sheet where you want to run this script.   var actRng = event.source.getActiveRange();   var editColumn = actRng.getColumn();   var index = actRng.getRowIndex();   var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();   var dateCol = headers[0].indexOf(timeStampColName);   var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1;   if (dateCol > -1 && index > 1 && editColumn == updateCol) { // only timestamp if 'Last Updated' header exists, but not in the header row itself!     var cell = sheet.getRange(index, dateCol + 1);     var date = Utilities.formatDate(new Date(), timezone, timestamp_format);     cell.setValue(date);   } } 

And this one:

function onEdit(event) {   var timezone = "GMT-7";   var timestamp_format = "MM-dd-yyyy-hh:mm"; // Timestamp Format.    var updateColName = "Completed";   var timeStampColName = "Date/Time Completed";   var sheet = event.source.getSheetByName('EXT Changes'); //Name of the sheet where you want to run this script.   var actRng = event.source.getActiveRange();   var editColumn = actRng.getColumn();   var index = actRng.getRowIndex();   var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();   var dateCol = headers[0].indexOf(timeStampColName);   var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1;   if (dateCol > -1 && index > 1 && editColumn == updateCol) { // only timestamp if 'Last Updated' header exists, but not in the header row itself!     var cell = sheet.getRange(index, dateCol + 1);     var date = Utilities.formatDate(new Date(), timezone, timestamp_format);     cell.setValue(date);   } } 

2 timestamps in different cells at the same time [duplicate]

This question already has an answer here:

  • Running multiple onEdit scripts 1 answer
function onEdit(event) {   var timezone = "GMT-7";   var timestamp_format = "MM-dd-yyyy-hh:mm"; // Timestamp Format.    var updateColName = "Ext Warehouse";   var timeStampColName = "Date/Time Change";   var sheet = event.source.getSheetByName('EXT Changes'); //Name of the sheet where you want to run this script.   var actRng = event.source.getActiveRange();   var editColumn = actRng.getColumn();   var index = actRng.getRowIndex();   var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();   var dateCol = headers[0].indexOf(timeStampColName);   var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1;   if (dateCol > -1 && index > 1 && editColumn == updateCol) { // only timestamp if 'Last Updated' header exists, but not in the header row itself!     var cell = sheet.getRange(index, dateCol + 1);     var date = Utilities.formatDate(new Date(), timezone, timestamp_format);     cell.setValue(date);   } } 

And this one:

function onEdit(event) {   var timezone = "GMT-7";   var timestamp_format = "MM-dd-yyyy-hh:mm"; // Timestamp Format.    var updateColName = "Completed";   var timeStampColName = "Date/Time Completed";   var sheet = event.source.getSheetByName('EXT Changes'); //Name of the sheet where you want to run this script.   var actRng = event.source.getActiveRange();   var editColumn = actRng.getColumn();   var index = actRng.getRowIndex();   var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();   var dateCol = headers[0].indexOf(timeStampColName);   var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1;   if (dateCol > -1 && index > 1 && editColumn == updateCol) { // only timestamp if 'Last Updated' header exists, but not in the header row itself!     var cell = sheet.getRange(index, dateCol + 1);     var date = Utilities.formatDate(new Date(), timezone, timestamp_format);     cell.setValue(date);   } }