I'm currently using the following formula to concatenate a few cells into a single description sort of entry in the same row, as shown here
CONCATENATE("Conducting Person : ",H2,CHAR(10),"Tech Support : ",J2,CHAR(10),"Category : ",F2,CHAR(10),"Room : ",G2,CHAR(10),"Platform : ",K2), "")
This formula is working fine but when I add a new entry in the blank row right below that last filled row, I have to manually add the formula to the required cell.
I tried the following arrayformula :
=ARRAYFORMULA(IF(NOT(ISBLANK(A2:A)),CONCATENATE("Conducting Person : ",H2,CHAR(10),"Tech Support : ",J2,CHAR(10),"Category : ",F2,CHAR(10),"Room : ",G2,CHAR(10),"Platform : ",K2), ""))
That seems to be executing the formula when an entry is made in the first cell of the blank row below the last filled row, but the cell positions are not relatively changing and seem to be fixed to the initial cell reference.
How do I fix it?
Try
=arrayformula("Conducting Person : "&H2:H&CHAR(10)&"Tech Support : "&J2:J&CHAR(10)&"Category : "&F2:F&CHAR(10)&"Room : "&G2:G&CHAR(10)&"Platform : "&K2:K)
use:
=ARRAYFORMULA(IF(ISBLANK(A2:A),,
"Conducting Person : "&H2:H&CHAR(10)&
"Tech Support : "& J2:J&CHAR(10)&
"Category : "& F2:F&CHAR(10)&
"Room : "& G2:G&CHAR(10)&
"Platform : "& K2:K)))
Related
I have this:
So now, what I want is this logic but I don't write everytime in each cellul :
In B3 : =SI(A3>B1;1;0)
In C3 : =SI(A3>C1;1;0)
In D3 : =SI(A3>D1;1;0)
In B4 : =SI(A4>B1;1;0)
In C4 : =SI(A4>C1;1;0)
In D4 : =SI(A4>D1;1;0)
I just need to retrieve each cellul column A and compare to each cellul ligne 1
Someone can help me
use:
=INDEX(IF(A2:A5>B1:D1; 1; 0))
Try this:
=IF($A3>B2,1,0)
Once the absolute reference is set just drag the formula to the whole row:
Once done you just need to drag the formula down and it will be applied as you like to all the remaining cells:
I have 2 sheets A and B. I want sheet A to colour cells if the exact same cell in sheet B is not empty. For example if cell A1 in sheet B has a string, then cell A1 in sheet A will be coloured.
Let's say I want to do this to compare a large range, how should I go about doing this?
Example: https://docs.google.com/spreadsheets/d/1P3Ob_mclpXWmILfKwD4R6JN2wAYPUcNZlmtF9LxilV0/edit?usp=sharing
Cells A2:C2, D5 and K2 in sheet B are not empty. So the corresponding cells in sheet A will be coloured red.
You can use the following formula as a conditional formatting rule:
=NOT(ISBLANK(INDIRECT("B!"&address(row(),column()))))
(the formula in A!A2 is there to just show you what happens in sheet B)
Explanation:
Not familiar how this could be done with a custom conditional formatting formula so wait for other guys to help you out with that.
However, I can offer you a Google Apps Script solution.
The following script will check for the data range in sheet B and it will construct a color array. An element of this array will have the white hex color #ffffff" if the value in the values array is empty, or a red color #ff0000 if the value is not blank.
Then it will color sheet A based on this color array in one go. The script is relatively fast even for large ranges.
Solution / Workaround:
Don't forget to adjust "sheet A" and "sheet B" to the name of your sheets.
function colorCells(){
const ss = SpreadsheetApp.getActive();
const sheetToColor = ss.getSheetByName("sheet A");
const sheetToCheck = ss.getSheetByName("sheet B");
const bValues = sheetToCheck.getDataRange().getValues();
const aColors=bValues.map(r=>r.map(v=>v==''?"#ffffff":"#ff0000"));
sheetToColor.getRange(1,1,sheetToCheck.getLastRow(),sheetToCheck.getLastColumn()).
setBackgrounds(aColors);
}
How to use that:
Click on Tools => Scipt editor, copy, paste & save the aforementioned code and then execute it by clicking on the play button.
If you want this to work "automatically" then you can set up a time trigger to execute this function for you every n minutes.
Bonus code:
You can do the same operation but on a more user-interactive way. Again, copy, paste & save the following script to the script editor but this time don't execute it as it can work by itself.
The following script will change the color of a cell in sheet A upon user edits on the same cell in sheet B:
function onEdit(e) {
// adjust this to your needs:
const sheetToColorName = "sheet A";
const sheetToCheckName = "sheet B";
const rng = e.range;
const cell = rng.getA1Notation();
if (rng.getSheet().getName()==sheetToCheckName){
const sheetToColor = e.source.getSheetByName(sheetToColorName);
if(rng.getValue()!=''){
sheetToColor.getRange(cell).setBackground("#ff0000"); //red
}
else {
sheetToColor.getRange(cell).setBackground("#ffffff"); //white
}
}
}
I have a chart in Google Sheets, the "Data Range" is as follows...
MIR!J1:K4547,DIR!K1:K4547
What I am trying to do is reference a cell value for sheet "MIR" and "DIR" values.
Let's say I edit cell A1 to ZIR...
then the data range changes to
ZIR!J1:K4547,DIR!K1:K4547
I searched intensively in Google but maybe I am not using right keywords, will appriciate some feedback on this...
I'm not sure what type of chart you are trying to get, but you could create a dynamic range, however, this would only work for a line graph.
Choose any cell and enter this formula: =A1&"!K1:J4547"
Go to Data > Named Ranges and make the cell with the formula the named range. (This step is optional, but will make things easier)
You can now use this range for other formulas, for example, if you want a line graph: =SPARKLINE(INDIRECT(dynamicRange))
Reference: https://www.benlcollins.com/formula-examples/dynamic-named-ranges/
While writing this, I also realized a different work around, but using the same idea. Using the QUERY function, you can grab cell values, without needing to change the chart range. For example, placing the formula =QUERY(INDIRECT(A3)) in a cell, will grab all the values from DIR!K1:J4547. Changing the value of A1 in the sheet will change the sheet that it grabs from. From there, set the chart range to wherever you place the QUERY formula.
You could also just do =QUERY(INDIRECT(A3)), the named range is not necessary.
Hope this was helpful!
What I had done is the following
I created an empty spreadheet and used 3 columns on that sheet to construc the chart. Then I have created a script (I know very dirty code but it works).
The script replaces the data on the last sheet I created as follows:
function replace() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('CHART'); // or whatever is the name of the sheet
var range = sheet.getRange(1,1);
var range2 = sheet.getRange(1,2);
var data = range.getValue();
var data2 = range2.getValue();
var sheetFrom = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(data);
var sheetTo = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("ChartData");
var sheet2From = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(data2);
var sheet2To = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("ChartData");
// Copy from 17th row, 4th column, all rows for one column
var valuesToCopy = sheetFrom.getRange(1, 10, sheetFrom.getLastRow(), 1).getValues();
var valuesToCopy2 = sheetFrom.getRange(1, 11, sheetFrom.getLastRow(), 1).getValues();
var valuesToCopy3 = sheet2From.getRange(1, 11, sheet2From.getLastRow(), 1).getValues();
//Paste to another sheet from first cell onwards
sheetTo.clearContents();
sheetTo.getRange(1,sheetTo.getLastColumn()+1,valuesToCopy.length,1).setValues(valuesToCopy);
sheetTo.getRange(1,sheetTo.getLastColumn()+1,valuesToCopy2.length,1).setValues(valuesToCopy2);
sheetTo.getRange(1,sheet2To.getLastColumn()+1,valuesToCopy3.length,1).setValues(valuesToCopy3);}
For changing the Data Range I pulled data from the cells.
I have a row A with 200 text entries.
A1 = "A1value"
A2 = "A2value"
A3 = "A3value"
...
I want to dynamicaly display in a single cell (text format) : ga=A1value,ga=A2value,ga=A3value, [...] ga=A200value etc...
use join function:
=JOIN(",ga=", A1:A3)
for some regions semicolon is used:
=JOIN(",ga="; A1:A3)
next step: add first "ga=" manually:
="ga="&JOIN(",ga=", A1:A3)
I am trying to get a Google spreadsheet to automatically highlight all rows in a spreadsheet where the value in a particular column is above 0. I have looked for a few solutions but haven't got it to work.
I have got various metrics in the columns, so say I want to highlight all rows, in which column "I" has a value of more than zero.
Can someone help me with this?
On the conditional formatting page choose "Custom formula is" from the list of options available and then in the text field type:
=$I:$I>0
Select your formatting options and then in the range field type the range. For example:
A2:Z100
Because only to be applied to a single column there is a simpler version (that I have complicated so that text is not highlighted):
Clear formatting, select ColumnI and Format, Conditional formatting..., Format cells if... Custom formula is and:
=and(isnumber(I1),I1>0)
with fill of choice and Done.
If to format not just the relevant cell but the entire row then change the Apply to Range (say to A1:Z1000) and add anchors ($s) as below:
=and(isnumber($I1),$I1>0)
The only solution I'm aware of would be to write a script.
Link: Google Apps Scripts
The following is not pretty, but it works:
function myFunction() {
var I_INDEX = 1;
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Highlight rows");
var dataRange = sheet.getDataRange();
var dataValues = dataRange.getValues();
for (var i=1; i<=dataRange.getNumRows(); i++) {
var row = sheet.getRange(i, 1, 1, 2);
if (dataValues[i-1][I_INDEX] > 0) {
row.setBackground("red");
}
}
}
See example, use "Tools" --> "Script Editor..." to view/run the script.