Как насчет этой модификации? Я думаю, что есть несколько решений для вашей ситуации. Поэтому, пожалуйста, подумайте об этом как об одном из них.
Очки модификации:
- Когда
index(address(row(E3:E30),5,4))
присвоено cellAddress
, cellAddress
равно [["E3"], ["E4"], ["E5"],,,]
. Это двумерный массив.
- Свести этот 2-мерный массив для
getRangeList()
.
- Преобразовать плоский массив в массив диапазонов, используя
getRangeList()
.
- Получить каждое значение, используя преобразованный диапазон, и вернуть их.
Модифицированный скрипт:
function cellVal3(cellAddress) { // Modified the function name to "cellVal3"
cellAddress = Array.prototype.concat.apply([], cellAddress);
var cells = SpreadsheetApp.getActiveSheet().getRangeList(cellAddress).getRanges();
return cells.map(function(cell){return [(cell.isPartOfMerge() ? cell.getMergedRanges()[0].getCell(1, 1) : cell).getValue()]});
}
Использование:
При использовании этой пользовательской функции, пожалуйста, используйте следующее.
=ARRAYFORMULA(cellVal3(index(address(row(E3:E30),5,4))))
или
=cellVal3(index(address(row(E3:E30),5,4)))
Рекомендации:
Если я неправильно понимаю ваш вопрос, извините.