pretty simple question but I can't seem to find what I am looking for and wondering if it is possible this way, just starting using Officescript/typescript. In a part of my code, I get the index of the row with a value that matches (cRow is the index of row I am interested in).
rowValue = collectionTable.getColumnByName("SomeCol").getRangeBetweenHeaderAndTotal().getValues()[cRow]
And then I run some checks on that row and want to update some other things based on the inputs.
So what I am expecting to do is something like the following, changing getValues for setValues:
collectionTable.getColumnByName("UpdateMe").getRangeBetweenHeaderAndTotal().setValues()[cRow]
OR
let col = collectionTable.getColumnByName("SomeCol").getIndex();
let cell = collectionTable.getCell(requestRow,col);
cell.setValue(value);
But doesn't seem to work that way .. From what I can tell, setValues works on ranges but can't quite find how to get the range/row by index number and set a value in one cell. I see all examples doing it with the letter and number but don't want to do it that way if possible.
Thanks for the help!
pretty simple question but I can't seem to find what I am looking for and wondering if it is possible this way, just starting using Officescript/typescript. In a part of my code, I get the index of the row with a value that matches (cRow is the index of row I am interested in).
rowValue = collectionTable.getColumnByName("SomeCol").getRangeBetweenHeaderAndTotal().getValues()[cRow]
And then I run some checks on that row and want to update some other things based on the inputs.
So what I am expecting to do is something like the following, changing getValues for setValues:
collectionTable.getColumnByName("UpdateMe").getRangeBetweenHeaderAndTotal().setValues()[cRow]
OR
let col = collectionTable.getColumnByName("SomeCol").getIndex();
let cell = collectionTable.getCell(requestRow,col);
cell.setValue(value);
But doesn't seem to work that way .. From what I can tell, setValues works on ranges but can't quite find how to get the range/row by index number and set a value in one cell. I see all examples doing it with the letter and number but don't want to do it that way if possible.
Thanks for the help!
Share Improve this question edited Jun 27, 2023 at 11:15 Brian Gonzalez 1,3521 gold badge6 silver badges17 bronze badges asked Jan 10, 2022 at 15:39 nicknick 8912 gold badges13 silver badges30 bronze badges2 Answers
Reset to default 4You can use getCell()
with the cRow variable after getRangeBetweenHeaderAndTotal()
to get a specific cell range. Once you have that range, you can read its value using getValue()
. And you can write a value to that range using setValue()
. You can see an example of how to do that below:
function main(workbook: ExcelScript.Workbook)
{
let cRow: number = 1;
let tbl: ExcelScript.Table = workbook.getTable("table1");
let rowCell: ExcelScript.Range = tbl.getColumnByName("SomeCol").getRangeBetweenHeaderAndTotal().getCell(cRow,0);
let rowValue: string = rowCell.getValue() as string;
rowCell.setValue("some updated value");
}
Can get the value by using the worksheet cell, but I would really like to reference the table itself to not have any issues if things are moved around and such..
let col = collectionTable.getColumnByName("SomeCol").getIndex();
// if table starts at beginning of sheet, or else have to offset col and row..
let cell = dataSheet.getCell(requestRow + 1, col);
cell.setValue(value);